Heim >Datenbank >MySQL-Tutorial >Über MySQL-Hochverfügbarkeit: Keepalived Dual Master Hot Standby

Über MySQL-Hochverfügbarkeit: Keepalived Dual Master Hot Standby

jacklove
jackloveOriginal
2018-06-08 09:55:262382Durchsuche

Normalerweise als „Dual-Machine-Hot-Standby“ bezeichnet bedeutet, dass beide Maschinen laufen, aber nicht beide Maschinen gleichzeitig Dienste bereitstellen. Wenn derjenige, der die Dienste bereitstellt, ausfällt, übernimmt der andere automatisch und stellt die Dienste sofort bereit, und die Umschaltzeit ist sehr kurz.

Das Arbeitsprinzip von Keepalived ist das virtuelle Routing-Redundanzprotokoll VRRP (Virtual Router Redundancy Protocol). Bei VRRP gibt es zwei wichtige Konzepte: VRRP-Router und virtueller Router, Master-Router und Backup-Router.

VRRP-Router bezieht sich auf den Router, auf dem VRRP ausgeführt wird, bei dem es sich um eine physische Einheit handelt. Virtueller Router bezieht sich auf das logische Konzept, das durch das VRRP-Protokoll erstellt wird. Eine Gruppe von VRRP-Routern arbeitet zusammen, um einen virtuellen Router zu bilden. In Vrrp gibt es einen Wahlmechanismus zum Auswählen der Route, die Dienste bereitstellt, dh der Master-Route, und die anderen werden zu Backup-Routen. Wenn die Master-Route ausfällt, wird eine Master-Route aus der Backup-Route erneut ausgewählt, um den Betrieb fortzusetzen und einen unterbrechungsfreien Dienst sicherzustellen.

Umgebungsbeschreibung:

Betriebssystem: Ubuntu16.04
MASTER: 172.16.29.205
BACKUP: 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

Der Backup-Server ändert nur die Priorität auf 90, nopreempt ist nicht gesetzt und real_server legt die lokale IP fest.

3. Testen Sie die Hochverfügbarkeit

1. Stellen Sie eine Verbindung über VIP über den MySQL-Client her, um festzustellen, ob die Verbindung erfolgreich ist.

2. Wenn der Master-MySQL-Dienst normal umgeschaltet werden kann, können Sie mit dem Befehl ip addr überprüfen, auf welchem ​​Server sich der VIP befindet.

3. Sie können den Master-/Backup-Umschaltvorgang sehen, indem Sie das /var/log/messges-Protokoll überprüfen.

4 Nachdem der Master-Server nach einem Ausfall wiederhergestellt wurde, prüft er, ob er aktiv Ressourcen belegt ein aktiver Server.

In diesem Artikel wird erläutert, wie Sie mit Keepalived eine hohe Verfügbarkeit für MySQL erreichen. Weitere verwandte Empfehlungen finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Verwenden Sie PHP, um mehrere gängige Sortieralgorithmusprogramme zu schreiben

Wie ermittelt PHP, ob es sich um AJAX handelt? fragen?

Lösung zur Behandlung der vom PHP-Programm gemeldeten date()-Warnung

Das obige ist der detaillierte Inhalt vonÜber MySQL-Hochverfügbarkeit: Keepalived Dual Master Hot Standby. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn