0% ont trouvé ce document utile (0 vote)
199 vues18 pages

Installation PATRONI ETCD

Transféré par

Yahia Hamiche
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
199 vues18 pages

Installation PATRONI ETCD

Transféré par

Yahia Hamiche
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algeria e Banking Services

Document d'installation Architecture HA Sela

Dossier technique

Référence SELA SGA

Version 1.0

Date de révision

Projet SELA AeBS - SGA

Client SGA

Classification Publication restreinte

Statut Draft

Nom du document
Algeria e Banking Services

Copyright

© AEBS. Tous droits réservés.

Tous les noms ou les marques de produits ou de la société mentionnés dans ce document sont la
propriété de leurs propriétaires respectifs. Aucune partie de ce document ne peut être reproduite
sans la permission d’AEBS.

Confidentialité

Le destinataire de ce document s'engage à ne pas divulguer d'information d'ordre confidentiel. Il


n'utilisera pas le contenu sans la permission d’AEBS. De plus, le destinataire s'engage à ne pas mettre
ce document à la disposition de tiers sans notification écrite d’AEBS.

Si vous n'êtes pas le destinataire de ce document, prière d'en informer AEBS par email à l'adresse
[email protected], ou par téléphone au +213 (0) 23 35 39 20/21/22.

Marques

Toutes les marques utilisées dans ce document sont la propriété de leurs légitimes propriétaires.

Identification du document

Produit ou affaire SELA AEBS SGA

Client SGA

Type Descriptif technique

Référence SELA AEBS SGA v1.0

Classification Publication restreinte

Statut Draft

Nom
Algeria e Banking Services

Historique des versions

Version Date Auteur Commentaire

1.0 13/09/2021

Diffusion

Pour action Pour information

AEBS

SGA
Algeria e Banking Services

Sommaire :
1 Présentation architecture mise en place ........................................................................................ 5
2 Installation des instances base de données (choix du SGBD POSTGRESQL 13) .............................. 5
2.1 Installation de PostgreSQL 13.................................................................................................. 5
2.2 Installation de Patroni ............................................................................................................. 6
2.3 Configuration Patroni 1 ........................................................................................................... 6
2.4 Configuration Patroni 2 ........................................................................................................... 8
2.5 Démarrage et affichage Patroni Base de données .................................................................. 9
3 Installation des instances ETCD 3.5: .............................................................................................. 11
3.1 Installation de ETCD .............................................................................................................. 11
3.2 Configuration ETCD ............................................................................................................... 12
3.2.1 Fichier de configuration ETCD-1 .................................................................................... 12
3.2.2 Fichier de configuration ETCD-2 .................................................................................... 12
3.2.3 Fichier de configuration ETCD-3 .................................................................................... 12
4 Installation de la couche application « Java, Haproxy »................................................................ 12
4.1 Configuration Haproxy .......................................................................................................... 13
4.2 Visualisation stats Bases de données à travers HaProxy....................................................... 13
5 Commandes d’administration Patroni .......................................................................................... 14
6 Définition des différents paramètres de configuration ................................................................ 14
6.1 ETCD ...................................................................................................................................... 14
6.2 PATRONI ................................................................................................................................ 15
Algeria e Banking Services

1 Présentation architecture mise en place


L’architecture (Base de données, application) qui a été mise en place est représentée
sur la figure suivante :

2 Installation des instances base de données (choix du SGBD


POSTGRESQL 13)
2.1 Installation de PostgreSQL 13
Télécharger à partir du site « https://yum.postgresql.org/13/redhat/rhel-7-
x86_64/repoview/postgresqldbserver13.group.html » les quatre paquages suivants :

• Postgresql13
• Postgresql13-contrib
• Postgresql13-libs
• Postgresql13-server
# yum install postgresql13* -y
# /usr/pgsql-10/bin/postgresql-10-setup initdb
# systemctl disable postgresql-10

Mise en place d’un lien symbolique pour l’utilisation des binaires de PostgreSQL par le service
Patroni :

# ln -s /usr/pgsql-10/bin/* /usr/sbin/
Algeria e Banking Services

2.2 Installation de Patroni


L’installation de l’outil PATRONI se fait sur le même serveur que la base de données
et se fait à partir du repo de Postgresql 13 :

# yum install -y
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-
x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum install epel-release gcc -y
# yum install python python-devel python-pip -y
# yum install patroni patroni-etcd
# cd /etc/
# mkdir -p patroni

Changer les autorisation et propriétaires des répertoires et fichiers :


# chown -R postgres.postgres /chemin-repertoire/patroni
# chmod 700 /chemin-repertoire/patroni
# chown postgres.Postgres /chemin-certificat/certificats*
# chmod 600 /chemin-certificat/*.key

Il est nécessaire de rajouter les dépendances de l’ETCD lors de l’installation de


PATRONI. Les étapes ci-dessus se font sur les deux serveurs destinés à être des serveurs de
base de données.

2.3 Configuration Patroni 1

Ci-après le contenu du fichier « patroni.yml » ainsi que « customconf.conf »

Figure : Patroni.yml
Algeria e Banking Services

Figure : Customconf.conf
Algeria e Banking Services

2.4 Configuration Patroni 2

Ci-après le contenu du fichier « patroni.yml » ainsi que « customconf.conf »

Figure : Patroni.yml
Algeria e Banking Services

Figure : Customconf.conf

2.5 Démarrage et affichage Patroni Base de données


Après démarrage du service Patroni avec la commande :

# systemctl start patroni

On aura l’affichage suivant sur la base de données primaire :


Algeria e Banking Services

Et on aura l’affichage suivant sur le serveur de base de données secondaire :

Après le démarrage des deux serveurs PATRONI, il est possible de vérifier l’état de
chacun avec la commande « systemctl status patroni » et pour voir le serveur ayant le rôle
de serveur primaire et ceux ayant le rôle de serveur secondaire on utilise la commande :
# patronictl -c /etc/patroni/patroni.yml -d etcd://@Ip-ETCD:2379 list nom-cluster

On obtient alors un affichage comme le suivant :


Algeria e Banking Services

3 Installation des instances ETCD 3.5:


3.1 Installation de ETCD
L’installation de l’ETCD version « 3.5 » se fait sur un serveur différent que celui de la
base de données et PATRONI :
# DOWNLOAD_URL=https://storage.googleapis.com/etcd

# rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
# rm -rf /tmp/etcd-download-test
# mkdir -p /tmp/etcd-download-test

# curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-


${ETCD_VER}-linux-amd64.tar.gz

# tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-


components=1

# rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz

# chmod +x /tmp/etcd-download-test/etcd
# chmod +x /tmp/etcd-download-test/etcdctl

Vérifier la version de ETCD comme suit :


# /tmp/etcd-download-test/etcd --version
# /tmp/etcd-download-test/etcdctl version

Renommer le fichier de configuration par défaut et travailler sur un fichier de configuration


vide au départ :

# mv /etc/etcd/etcd.conf /etc/etcd/etcd.conf.old
# cp /etc/etcd/etcd.conf.old /etc/etcd/etcd.conf
# > /etc/etcd/etcd.conf

Changer les autorisation et propriétaires des répertoires et fichiers :


# chown -R etcd.etcd /chemin-repertoire/etcd
# chown etcd. etcd /chemin-certificat/certificats*
# chmod 600 /chemin-certificat/*.key

Les actions effectuées ci-dessus ont été exécutées sur les trois serveurs « ETCD-1 ETCD-2
ETCD-3 » ce qui formera notre cluster ETCD.
Algeria e Banking Services

3.2 Configuration ETCD


3.2.1 Fichier de configuration ETCD-1

3.2.2 Fichier de configuration ETCD-2

3.2.3 Fichier de configuration ETCD-3

Une fois la configuration effectuée on démarre ETCD avec :

# systemctl start etcd

4 Installation de la couche application « Java, Haproxy »


L’installation de HaProxy se fait sur deux serveurs différents des serveurs base de
données et ETCD.
On commence par installer « java 11 » pour le fonctionnement applicatif
# yum install java-11-openjdk-devel
Algeria e Banking Services

Par la suite on lance l’installation de HaProxy :


# yum install epel-release
# yum install haproxy -y

Renommer le fichier de configuration par défaut et travailler sur un fichier de configuration


vide au départ :

# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.old
# cp /etc/haproxy/haproxy.cfg.old /etc/haproxy/haproxy.cfg
# > /etc/haproxy/haproxy.cfg

4.1 Configuration Haproxy


Le même fichier de configuration pour les deux instances HaProxy :

Vérifier si la configuration ne contient pas d’erreurs :

# /usr/sbin/haproxy -c -V -f /etc/haproxy/haproxy.cfg

Démarrage de Haproxy :

# systemctl start haproxy

4.2 Visualisation stats Bases de données à travers HaProxy


Saisie de l’adresse IP du HaProxy avec le port 7000 sur un navigateur nous aurons
toutes les informations de notre cluster base de données comme affiché sur l’image
suivante :
Algeria e Banking Services

5 Commandes d’administration Patroni


Suppression d’un cluster :
# patronictl -c chemin_fichier_yaml remove Nom_cluster

Lister tous les nœuds et leurs états d’un cluster :


# patronictl -c chemin_fichier_yaml -d etcd://@IP_ETCD:2379 list Nom_cluster


# patronictl -c chemin_fichier_yaml list Nom_Cluster

Faire un Failover manuellement :


patronictl -c chemin_yaml -d etcd://@IP_ETCD:2379 failover Nom_cluster

Réinitialiser un nœud d’un cluster :


# patronictl -c chemin_fichier_yaml reinit Nom_cluster Nom_Noeud

Réinitialiser un cluster :
# patronictl -c chemin_fichier_yaml reinit Nom_cluster

6 Définition des différents paramètres de configuration


6.1 ETCD
ETCD_LISTEN_PEER_URLS : L’adresse et le port sur lesquels ETCD reçoit les notifications.
ETCD_LISTEN_CLIENT_URLS : Cet indicateur permet à l'ETCD d'accepter les demandes
entrantes des clients sur l'adresse et le port saisies.
ETCD_INITIAL_ADVERTISE_PEER_URLS : Adresse @IP qui permet de communiquer des
données ETCD aux membres du cluster.
Algeria e Banking Services

ETCD_INITIAL_CLUSTER : Configuration initiale du cluster.


ETCD_ADVERTISE_CLIENT_URLS : @IP qui permet de récupérer des informations du cluster
ETCD_INITIAL_CLUSTER_TOKEN="cluster1"
ETCD_INITIAL_CLUSTER_STATE="new"

6.2 PATRONI
RestAPI :
Il est nécessaire de saisir l'adresse et le port pour accéder au RestApi de PATRONI, ce
dernier va nous permettre de travailler avec une configuration dynamique (get/config,
patch/config, put/config)
Connect_address :
Ce paramètre (ip et port) va permettre d'accéder au RestAPI, adresse IP + port par
lequel RestAPI est accessible.
Listen :
Port et @IP qui permettront de fournir les informations au serveur HaProxy
ETCD :
Host :
Informations sur le nœud ETCD (@ip:port)

Bootstrap :
Dcs :
Dans cette section nous aurons la configuration globale du cluster, toute modification
qui se fera au niveau du dcs s'appliquera sur tous les nœuds.
Ttl :
Pour quérir le verrou de leader. Le temps écoulé avant le lancement du processus de
basculement « valeur par défaut 30ms ». Considérer comme la durée écoulée avant le
lancement du processus de basculement automatique. Best practices :
Ttl >= loop_wait + retry_timeout * 2
Loop_wait :
Le nombre de secondes pendant lequel la boucle sarrète (test if master actif).
« Valeur par défaut 10ms ».
Algeria e Banking Services

Retry_timeout :
Délai d'attente pour les nouvelles tentatives d'opération de DCS et PostgreSQL. Les
problèmes DCS ou de réseaux plus courts que cela ne forcera pas PATRONI à rétrograder le
leader. « Valeur par défaut 10ms ».
Maximum_lag_on_failover :
Nombre maximal d'octets perdus pouvant avoir un candidat pour être leader
(participer à l'élection).
Master_start_timeout :
Le temps pendant lequel le Master est autorisé à récupérer des défaillances avant
que le basculement ne soit effectué. Quand cette valeur est égale à 0 le basculement se fait
directement quand le master est en arrêt si possible. Pour minimiser le risque de perte
d’information quand nous utilisons une réplication asynchrone il est important de ne pas
mettre cette valeur à 0. Le temps que prendra le basculement sera :
<= loop_wait + master_start_timeout + loop_wait.
Use_pg_rewind :
L’activation de ce paramètre va permettre de synchroniser un nœud POSTGRES avec
un autre nœud POSTGRES appartenant au même cluster. Ceci nous donne la possibilité dans
un scénario typique de remettre un ancien serveur maitre en ligne après le basculement
autant que serveur de secours suivant un autre serveur maitre.
Data-checksums :
Activer ce paramètre seulement si pg_rewind est activé, il permet de détecter un
échec et provoque une erreur et interrompre la transaction en cours (control des E/S au
niveau du serveur de base de données).
Pg_hba :
Ici nous ajoutons toutes les @IP, users et base de données que le serveur de base de
données permettra d'accéder.
PostgreSQL :
Listen :
@IP et port du serveur de base de données.
Connect_address :
@IP et port par lequel POSTGRES est accessible à partir d'autres instances.
Data_dir :
Algeria e Banking Services

Saisir le chemin du répertoire contenant les bases et fichiers de configuration du


serveur de base données.
Pgpass :
Chemin d'accès aux fichiers de mot de passe.
Authentification :
Création des utilisateur POSTGRES (super user) et REPLICATOR (pour la réplication)
Unix_socket_directories :
Le répertoire ou sont enregistrés les deux fichiers «. s.PGSQL.5432 » et
« .s.PGSQL.5432.lock »
Callbacks :
Ce paramètre nous permet de faire des actions ou d’exécuter des scripts au moment
rechargement, arrêt ou redémarrage du service patroni.
Tags :
Nofailover :
Dans le passé, si l'API REST était protégée par des certificats auto-signés, patronictl
ne parvenait pas à les vérifier. Il n'y avait aucun moyen de désactiver cette vérification. Il est
maintenant possible de configurer patronictl pour ignorer la vérification du certificat ou tout
à fait fournir des certificats.
Noloadbalance :
Cette balise fait que PATRONI retourne toujours que la réplication n'est pas
disponible pour le load balancing.
Clonefrom :
Transforme clone à partir d’une balise booléenne : si elle est définie sur True, la
réplique devient candidate pour que d'autres répliques puissent la cloner. Lorsque plusieurs
candidats sont présents, les répliques en choisissent une au hasard.
Nosync :
Si nous voulons qu'un serveur en standby ne devient jamais un serveur synchrone
nous mettons cette valeur a True. Pour notre cas la valeur de nosync est à False.

a. HaProxy :
Inter :
L’intervalle entre deux états de santé consécutifs. Valeur par défaut 2s.
Rise :
Algeria e Banking Services

Nombre consécutif entre les états de santé valide avant de considérer que le serveur
est UP. Valeur par défaut est 2.
Fall :
Nombre consécutif entre les états de santé invalide avant de considérer que le
serveur est DOWN. Valeur par défaut est 3.
Timeout check :
Temps permit pour le serveur de lancer un check. Si les deux paramètres "timeout
check" et "inter" sont activés alors la plus petite valeur entre les deux est utilisée après que
la connexion TCP soit établie.
Option httpchk :
Méthode HTTP pour générer la requête http.
Http-check disable-on-404 :
Renvoi le serveur vers un statu Maintenance quand ce dernier répond au check de
l'état de santé avec 404.
Http-check expect :
Modifie le comportement de validation de la réponse en configurant une règle de
correspondance --> statu : statu code.
Balance :
Saisir la méthode de répartition des charges.

Vous aimerez peut-être aussi