Webcontrat - Database : Différence entre versions

De Wiki_DR13
Aller à : navigation, rechercher
(Config SSL)
(Config SSL)
Ligne 183 : Ligne 183 :
  
 
dans my.cnf :
 
dans my.cnf :
 +
 +
wsrep_sst_auth="sstssl:oiwybolNes8crond9Blov"

Version du 6 mars 2018 à 13:54

Database Webcontrat

La base de donnée utilisée est 10.0.28-MariaDB-1~wheezy-wsrep + Galera Cluster

GaleraCluster permet de répliquer les 3 noeud en temps réel et permet aussi une configuration multimaster.


Pour accéder au cluster depuis la PROD, la REC et la FORM on tape sur le HAPROXY + keepalived (10.30.1.10) qui est constitué de 2 machine (10.30.1.11 et .12)

Les flux sont répartis par Round Robin vers les 2 nœuds principaux 10.30.1.101 et 10.30.1.102. Le nœud 3 sert de réserve, de serveur de backup et d’intégration pour l'eai. Cela permet de moins impacter la prod en cas de soucis, voir de déconnecter l’hôte en cas de grosse MAJ.


Phpmyadmin : https://dev.webcontrat.cnrs.fr/phpmyadmin/


Repartiteur de charge

Un répartiteur de charge permet d’aiguiller le trafic vers les nœuds du cluster.

ip keepalived : 10.30.0.10

En mode nominal, via HA-Proxy1 : http://10.30.1.11/

En cas de problème sur HA-Proxy1 on bascule automatiquement vers le 2 (keepalived) : http://10.30.1.12/

login : monitor
password : -> voir keepassx

Supervision

Une machine de supervision permet d'avoir une vue d'ensemble sur le cluster

[1]

Login : email
Password : par mail


cliquer sur "Galera-Prod"

Cela donne accès a l'ensemble du cluster


CC.png


Pour avoir une vue plus fine sur chaque brique du cluster, cliquer sur Nodes

Cela permet de :

  • voir la charge sur chaque nœud
  • voir l'état des HaProxy, le primaire étant par défaut le 10.30.1.11


L'onglet Query monitor permet d'avoir une vue sur les requêtes, ou en tuer une en cas de boucle


L'onglet Performances donne une vue admin DB. Voir menu Health et Transaction log plus particulièrement


L'onglet Backup donne la main sur les sauvegardes gérées par clusterControl


Manage permet de configurer les serveurs depuis l'interface Web en modifiant / poussant les confs vers les briques du cluster


Alarms Permet de voir certaines alertes mais peu de détails (licence payante)

Redémarrage

En cas de plantage complet du cluster, celui ci ne redémarre pas seul. Il faut de booter manuellement :

  • ARRETER LE HAPROXY !
  • ARRETER LE CLUSTERCONTROL
  • Se connecter sur le nœud 1 (10.30.1.101)
  • Démarrer avec la commande /etc/init.d/mysql start --wsrep-new-cluster
  • Attendre le démarrage
  • Se connecter sur les autres nœuds et redémarrer mysql normalement (/etc/init.d/mysql start)
  • Vérifier les logs dans les 3 serveurs, une fois complètement synchronisés, redémarrer HaProxy


Il peut arriver que lors de la coupure les nœuds ne soient pas synchros. Dans ce cas il faut démarrer le cluster avec le ne oud le plus a jour. Pour cela il faut regarder les logs au démarrage, le cluster ne montera pas. Dans ce cas, arrêter tous les nœuds (/etc/init.d/mysql stop) et refaire la manip suivante en démarrant le nœuds 2 en premier. Si cela ne démarre pas non plus, refaire la manip avec le nœud 3 en 1er.

Logs

sur chaque serveur, suivre les logs dans /var/log/mysql.log -> accès a toutes les données de réplication entre les noeuds + les erreurs

Problèmes connus

En cas extrême si un nœud ne veux pas redémarrer et APRÈS avoir vérifier la cohésion des données, effacer les fichiers de cache pour forcer une synchro totale (SST)

/etc/init.d/mysql stop
rm /var/lib/mysql/db/galera.cache
rm /var/lib/mysql/db/grastate.dat
/etc/init.d/mysql start


Config SSL

sur un des noeuds :

mkdir -p /etc/mysql/ssl
cd /etc/mysql/ssl
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Herault
Locality Name (eg, city) []:Montpellier
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CNRS
Organizational Unit Name (eg, section) []:Webcontrat
Common Name (e.g. server FQDN or YOUR name) []:Mariadb.localdomain
Email Address []:dr13.ssi@cnrs.fr
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem

idem sauf :
Common Name (e.g. server FQDN or YOUR name) []:Mariadb 
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
openssl req -newkey rsa:2048 -days 3600  -nodes -keyout client-key.pem -out client-req.pem
idem serveur
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3600  -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem


openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
server-cert.pem: OK
client-cert.pem: OK


Copier le répertoire ssl sur chaque serveur

Changer les droits :

chown -R mysql:mysql /etc/mysql/ssl

Modifier le fichier my.cnf :

# MySQL Server
[mysqld]
ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

# MySQL Client
[client]
ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-cert=/etc/mysql/ssl/client-cert.pem
ssl-key=/etc/mysql/ssl/client-key.pem

Redemarrer chaque nœud l'un après l'autre.


Cryptage IST : dans my.cnf :

wsrep_provider_options="gcache.size=128M; gmcast.segment=0; socket.ssl_key=/etc/mysql/ssl/server-key.pem; socket.ssl_cert=/etc/mysql/ssl/server-cert.pem; socket.ssl_ca=/etc/mysql/ssl/ca-cert.pem"

Il faut faire un bootstrap complet du serveur !


Cryptage SST :

MariaDB [(none)]> CREATE USER 'sstssl'@'localhost' IDENTIFIED BY 'oiwybolNes8crond9Blov';
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstssl'@'localhost' REQUIRE ssl;
Query OK, 0 rows affected (0.02 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

dans my.cnf :

wsrep_sst_auth="sstssl:oiwybolNes8crond9Blov"