通常說的「雙機熱備」是指兩台機器都在運行,但並不是兩台機器都同時在提供服務。當提供服務的一台發生故障的時候,另外一台會馬上自動接管並且提供服務,而且切換的時間非常短。
Keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虛擬路由冗餘協定。在VRRP中有兩組重要的概念:VRRP路由器和虛擬路由器,主控路由器和備援路由器。
VRRP路由器是指運行VRRP的路由器,是實體,虛擬路由器是指VRRP協定創建的,是邏輯概念。一組VRRP路由器協同工作,共同構成一台虛擬路由器。 Vrrp中存在著一種選舉機制,用以選出提供服務的路由即主控路由,其他的則成了備援路由。當主控路由失效後,備援路由中會重新選出一個主控路由,來繼續運作,來保障不間斷服務。
環境描述:
OS: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# #backup伺服器只修改priority為90、nopreempt不設定、real_server設定本地IP。
3、測試高可用性
1.透過Mysql客戶端透過VIP連接,看是否連接成功。
2.停止master這台mysql服務,是否能正常切換過去,可透過ip addr指令來查看VIP在哪台伺服器上。
3.可透過查看/var/log/messges日誌,看出主備切換流程
4.master伺服器故障復原後,是否主動搶佔資源,成為活動伺服器。
本文說明了利用Keepalived ,讓MySQL 實現高可用性,更多相關推薦請關注php中文網。
相關推薦:
使用php寫出幾個常見的排序演算法程式PHP如何判斷是否為AJAX請求? php程式報date()警告的處理的解決方法以上是關於MySQL 的高可用性:Keepalived 雙重熱備的詳細內容。更多資訊請關注PHP中文網其他相關文章!