關於MySQL 的高可用性:Keepalived 雙重熱備

jacklove
發布: 2018-06-08 09:55:26
原創
2338 人瀏覽過

通常說的「雙機熱備」是指兩台機器都在運行,但並不是兩台機器都同時在提供服務。當提供服務的一台發生故障的時候,另外一台會馬上自動接管並且提供服務,而且切換的時間非常短。

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板