Maison >base de données >tutoriel mysql >À propos de la haute disponibilité MySQL : Keepalived Dual Master Hot Standby

À propos de la haute disponibilité MySQL : Keepalived Dual Master Hot Standby

jacklove
jackloveoriginal
2018-06-08 09:55:262380parcourir

Habituellement appelé « veille à chaud sur deux machines » signifie que les deux machines sont en cours d'exécution, mais que les deux machines ne fournissent pas de services en même temps. Lorsque celui qui fournit les services tombe en panne, l'autre prend automatiquement le relais et fournit les services immédiatement, et le temps de commutation est très court.

Le principe de fonctionnement de Keepalived est le protocole de redondance de routage virtuel VRRP (Virtual Router Redundancy Protocol). Il existe deux concepts importants dans VRRP : le routeur VRRP et le routeur virtuel, le routeur maître et le routeur de sauvegarde.

Le routeur VRRP fait référence au routeur exécutant VRRP, qui est une entité physique. Le routeur virtuel fait référence au concept logique créé par le protocole VRRP. Un groupe de routeurs VRRP travaillent ensemble pour former un routeur virtuel. Il existe un mécanisme d'élection dans Vrrp pour sélectionner la route qui fournit des services, c'est-à-dire la route principale, et les autres deviennent des routes de secours. En cas de panne de la route principale, une route principale sera réélue parmi la route de secours pour continuer à fonctionner afin d'assurer un service ininterrompu.

Description de l'environnement :

OS : Ubuntu16.04
MAÎTRE : 172.16.29.205
SAUVEGARDE : 172.16.29.197
VIP : 172.16.29.206

[root@masterr ~]# vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
test@sina.com
 }
notification_email_from  admin@test.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_HA      #标识,双主相同
 }
vrrp_instance VI_1 {
 state BACKUP           #两台都设置BACKUP
 interface eth0
 virtual_router_id 51       #主备相同
 priority 100           #优先级,backup设置90
 advert_int 1
 nopreempt             #不主动抢占资源,只在master这台优先级高的设置,backup不设置
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 172.16.29.206
 }
}
virtual_server 172.16.29.206 3306 {
 delay_loop 2
 #lb_algo rr              #LVS算法,用不到,我们就关闭了
 #lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
 persistence_timeout 50  #同一IP的连接60秒内被分配到同一台真实服务器
 protocol TCP
 real_server 172.16.29.205 3306 {   #检测本地mysql,backup也要写检测本地mysql
 weight 3
 notify_down /etc/keepalived/mysql.sh    #当mysq服down时,执行此脚本,杀死keepalived实现切换
 TCP_CHECK {
 connect_timeout 3    #连接超时
 nb_get_retry 3       #重试次数
 delay_before_retry 3 #重试间隔时间
  }
}   
[root@masterr ~]# vi /usr/local/keepalived/mysql.sh
#!/bin/bash
sudo service keepalived stop
[root@masterr ~]# chmod +x /usr/local/keepalived/mysql.sh
[root@masterr ~]# /etc/init.d/keepalived start

Le serveur de sauvegarde modifie uniquement la priorité à 90, nopreempt n'est pas défini et real_server définit l'adresse IP locale.

3. Testez la haute disponibilité

1. Connectez-vous via VIP via le client Mysql pour voir si la connexion réussit.

2. Arrêtez le service maître mysql. S'il peut y être basculé normalement, vous pouvez utiliser la commande ip addr pour vérifier sur quel serveur se trouve le VIP.

3. Vous pouvez voir le processus de commutation maître/sauvegarde en vérifiant le journal /var/log/messges

4. Une fois le serveur maître récupéré de la panne, s'il saisit activement les ressources et devient un serveur actif.

Cet article explique comment utiliser Keepalived pour obtenir une haute disponibilité pour MySQL Pour plus de recommandations connexes, veuillez prêter attention au site Web chinois de php.

Recommandations associées :

Utilisez PHP pour écrire plusieurs programmes d'algorithmes de tri courants

Comment PHP détermine-t-il s'il s'agit d'AJAX demander?

Solution pour gérer l'avertissement date() signalé par le programme php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn