Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
MariaDB est un systme de gestion de base de donnes dit sous licence GPL. Il sagit dun
fork communautaire de MySQL : la gouvernance du projet est assure par la
fondation MariaDB, et sa maintenance par la socit Monty Program AB, crateur du projet.
Cette gouvernance confre au logiciel lassurance de rester libre. MariaDB est en plein essor
depuis ces deux dernires annes, Wikipdia annonce, fin 2012, la migration de MySQL
MariaDB. Les distributions Linux, comme Fedora, CentOS ou OpenSuse, abandonnent elles
aussi MySQL. En septembre 2013 Google annonce ladoption de MariaDB en lieu et place de
MySQL.
Et Galera Cluster?
Galera Cluster est une solution cluster multi-matre synchrone pour MariaDB. Il est
disponible uniquement sous Linux. Cest solution permet de mettre en place avec un
minimum de trois serveurs un cluster de base de donnes auto-rpliquant et hautement
disponible. Pour faire simple, les trois serveurs de bases de donnes sont actifs et les
utilisateurs peuvent crire sur nimporte quel serveur, les donnes sont alors rpliques entre
les serveurs restant. Si un serveur devient injoignable, les deux autres serveurs sont toujours
disponibles afin dassurer la disponibilit des services. Galera Cluster est support par
MariaDB (Galera Cluster se trouve dailleurs dans les dpts de MariaDB). Une solution
commerciale Percona XtraDB Cluster utilise le moteur de rplication de Galera Cluster.
Afin de mettre en place cette topologie nous allons commencer par mettre en place deux
serveur HaProxy.
Important!
Dans Virtualbox, le rseau en 192.168.2.XXX est mon rseau local (mode pont) et pour
le rseau en 10.1.0.XXX la configuration de la carte est en mode Rseau interne.
hostname: lb2db
eth0: 10.1.0.42
hostname: db2
eth0: 10.1.0.52
hostname: db3
eth0: 10.1.0.53
Important!
Attention les commandes suivantes sont faire dur les deux serveur
Installation de HaProxy
echo "deb http://ftp.debian.org/debian/ wheezy-backports main" >>
/etc/apt/sources.list
apt-get update
apt-get install haproxy
Une fois linstallation termine, nous devons diter la valeur ENABLED=0 ENABLED=1
dans les fichiers /etc/default/haproxy et /etc/init.d/haproxy.
Configuration de HaProxy
La configuration de HaProxy est assez simple et se fait dans un seul fichier de configuration,
ce fichier se trouve dans /etc/haproxy/haproxy.cfg.
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
defaults
log global
mode http
option dontlognull
contimeout 5000
clitimeout 50000
srvtimeout 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
#Configuration de l'ip balancs
listen cluster_db 10.1.0.40:3306
#Mysql
mode tcp
#Stats
listen stats 10.1.0.40:80
stats enable
stats hide-version
stats refresh 30s
stats show-node
stats auth admin:admin
stats uri /stats
Pour ma part jai rajout une rgle dans le script de firewall des LB web afin de pouvoir
accder aux stats depuis adresse IP balanc Web.
Maintenant, comme sur les serveur LB Web, il faut installer Heartbeat, afin de mettre en
place ladresse IP de balancement des bases de donnes que nous avons configurs dans
HaProxy.
Installation de HeartBeat
Important!
warntime 4
deadtime 5
initdead 15
keepalive 2
#Serveurs du cluster
node lb1db
node lb2db
Important!
Attention! Pour que tout fonctionne bien il faut sassurer que vous puissiez ping lb2db depuis
lb1db et vice-versa.
Pensez donc rajouter les deux lignes suivantes sur le fichier /etc/hosts sur vos deux lb:
##LBDB
10.1.0.41 lb1db
10.1.0.42 lb2db
Explications:
lb1db = lb primaire du cluster
IPaddr::10.1.0.40/24/eth0 = Adresse IP balance pour HaProxy
haproxy = service que HeartBeat va dmarrer
Et pour finir nous allons crer le fichier authkeys. Ce fichier contient un clef partag entre les
deux serveurs. Cela peut tre un mot de passe, ou un simple mot.
Voici le mien:
auth 3
3 md5 cluster-db-key
Ce fichier la doit avoir les permissions 600. Donc sur les deux serveurs tapez:
insserv -r haproxy
Finalisation du balancement
Sur les deux serveur arrtez HaProxy:
/etc/init.d/haproxy stop
/etc/init.d/heartbeat start
root@lb1db:~# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:35:e5:19
inet addr:10.1.0.41 Bcast:10.1.0.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe35:e519/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2234 errors:0 dropped:0 overruns:0 frame:0
TX packets:3670 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:292562 (285.7 KiB) TX bytes:692754 (676.5 KiB)
Vous pouvez maintenant visualiser depuis lIP de balancement web les statisques de HaProxy
http://192.168.2.100:8080/stats, bien sur pou que cela fonctionne, il faut que au moins un
des serveur serveur LB configurs pour le balancement Web soit actif.
Test du balancement
Pour tester le balancement, il vous suffit darrter HeartBeat sur lb1db (ou le serveur) avec
la commande:
/etc/init.d/heartbeat stop
Patientez quelques secondes et faites un ifconfig sur lb2db et vous verrez que lIP balance
est maintenant sur ce serveur.
Maintenant que MariaDb est install, il faut configurer Galera Cluster afin de mettre en
place la rplication entre les serveurs.
[mysqld]
#mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
#galera settings
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="mon_cluster_dbr"
wsrep_cluster_address="gcomm://10.1.0.51,10.1.0.52,10.1.0.53"
wsrep_sst_method=rsync
Comme vous le voyez, cette commande permet de savoir le nombre de serveur membre du
cluster.
Il est donc temps de dmarrer mysql sur les deux autres serveurs. Donc sur db2 et db3
faites la commande suivante: /etc/init.d/mysql start
Vous aurez ceci en sortie:
Important!
Sous debian, vous aurez cett erreur: ERROR 1045 (28000): Access denied for user debian-
sys-maint@localhost (using password: YES)
Donc une fois MySQL dmarrer sur db2 et db3, vous pouvez utliser la commande que nous
avons utilis plutt pour voir les serveur membres du cluster:
Sur nimporte quel serveur de base de donns (par exemple db2), je vais utiliser la commande
suivante afin de crer une base de donnes:
Sur un autre serveur (db1 ou db3) vous pouvez utiliser la commande: mysql -e show
databases afin de vrifier que la base de donnes a bien t cre sur tous les serveurs.
Important!
Afin de rgler le problme : ERROR 1045 (28000): Access denied for user debian-sys-
maint@localhost (using password: YES) il suffit de copier le fichier /etc/mysql/debian.cnf
depuis db1 sur db2 et db3.
Sur lbd1, nous allons donc installer le client de MariaDB (si vous avez rajout ce cluster
dans le cluster web le mieux est dinstaller le client MySQL sur les serveurs webs).
Donc sur le serveur depuis lequel vous souhaitez vous connecer au cluster Galera tapez les
commandes suivantes:
Donc sur les trois serveur de db, editez le fichier /etc/mysql/my.cnf, trouvez la ligne bind-
address = 127.0.0.1 et commentez la.
Arrtez MySQL sur les trois serveurs de DB et redmarrez le service en noubliant pas
dutiliser la commande service mysql start wsrep-new-cluster sur un des db afin
dinitialiser le cluster.
Puis a partir dun des serveurs de db, nous allons autoriser le rseau 10.1.0.0/24 se connecter
aux serveurs de base de donns avec la commande:
root@db1:~# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 5.5.39-MariaDB-1~wheezy-wsrep-log mariadb.org binary
distribution, wsrep_25.10.r4014
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
A partir de la nous pouvons nous connecter notre cluster de base de donnes depuis
nimporte quel machine de notre cluster en utilisant le login root et le mot de passe root.
Donc sur le serveur depuis lequel vous souhaitez vous connecter a votre cluster de base de
donnes utilisez la commande suivante: mysql -u root -proot -h 10.1.0.40
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Mais comment savoir depuis quel serveur de base de donnes je suis connect?
Une simple commande suffit afin de savoir sur quel serveur de base de donnes nous nous
connections.
Sur le serveur depuis lequel vous vous connectez au cluster de base de donnes, utilisez la
commande suivante afin de savoir sur quel serveur la connexion se fait
Nous voyons donc bien que mode roundrobin fonctionne bien et que je me connecte
successivement sur un des serveurs de bases de donnes :)
Voila ce qui net fin cette srie de tutoriel sur la mise en place dun cluster web et de de base
de donnes de haute disponibilit, vous avez maintenant les clef en main afin de mettre en
place la topologie dcrite dans larticle Bientt.
1. Matth
Rpondre
Super tuto, qui ma servi de base pour mon cluster cependant, suite aux nouvelles
version des softs il y a quelques petites adaptation faire dans la partie DB (pas HA)
le package est maintenant inclus dans mariadb-server (donc apt-get install mariadb-
server)
et pour lancer le cluster cest maintenant galera_new_cluster
2.
max
Rpondre
Bonjour,
Jarrive a crer une base de donne qui est bien rpliqu sur les autres serveurs myslq,
par contre, lorsque je fais un insert dans une table de la bdd cre, la donne nest pas
rplique sur les autres serveurs MySQL
bizarre
si vous avez dj eu le cas, pouvez-vous svpn maider.
merci.
1.
max
Rpondre
1.
david
Rpondre
Salut,
vrifie que tes tables utilise bien le moteur innodb et non pas du
myisam (https://mariadb.com/kb/en/mariadb/mariadb-galera-cluster-
known-limitations/)
3.
Kyslos
Rpondre
Petite question, tu parle de rseau priv, tu configure les VM avec 2 cartes rseaux ?
La premire sur une IP qui permet daccder en SSH et la seconde sur le rseau priv
pour la conf du LB ?
4.
abdel
Rpondre
cest lIP du haproxy qui apparait dans les logs mysql (cf show processlist).
Cest naZ
5.
CopyPasteSucks
Rpondre
Pour info,
http://blog.dylanleborgne.ovh/?p=114
6.
Williams
Rpondre
Salut Denis,
Jai par contre un problme aprs avoir setup le heartbeat, lorsque je fais un ifconfig,
jai pas eth0:0 et lip associ (chez moi, jai dclar lip 10.10.10.225)
Williams
1.
Williams
Rpondre
Rectification, jai trouv le problme, et, jai bien la NIC virtuelle pour lIP de
heartbeat qui est UP.
Par contre, sur mon 2ime serveur HAProxy, cette NIC est active en mme
temps que sur le 1ier HAProxy
7.
imars
Rpondre
Merci super tuto encore une fois, mais du coup je ne vois pas ou mettre ce tutoriel
avec les prcdents par rapport aux serveur Web (Apache, PHP) et ceux avec
MariaDB avec les serveurs avec HaProxy / HeartBeat.
Il y aurait dans ce cas 4 serveurs HaProxy pour les serveurs Apache et MariaDB ?
1.
Denis
Rpondre
Tu peux nutiliser que deux serveurs Haproxy pour Apache et MariaDB cest
sur que em mettre 4 cest un peut overkill.
8.
Alex
Rpondre