以前的文章介紹瞭如何配置MySQL雙主互備,見http://www.linuxidc.com/Linux/2013-05/83784.htm
這裏介紹如何配合前者實現Keepalived雙機熱備
系統環境:CentOS 6.3 x64
MySQL版本:mysql-5.6.10
Keepalived版本:keepalived-1.2.7
MySQL-VIP:192.168.7.253
MySQL-master1:192.168.7.201
MySQL-master2:192.168.7.249
1.在MySQL-master1:192.168.7.201服務器上keepalived安裝及配置
編譯安裝,實際以本機kernel版本爲準
# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
# tar zxvf keepalived-1.2.7.tar.gz
# cd keepalived-1.2.7
# ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-
279.el6.x86_64
# make && make install
新建一個配置文件,默認keepalived啓動會去/etc/keepalived目錄下尋找配置文件
# mkdir /etc/keepalived
# vi /etc/keepalived/keepalived.conf
------------------
global_defs {
notification_email {
lzyangel@126.com
}
notification_email_from lzyangel@126.com
smtp_server stmp.126.com
smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1{
# 兩臺配置此處均是BACKUP
state BACKUP
# 注意網卡接口
interface eth0
virtual_router_id 51
# 優先級,另外一臺改成90
priority 100
advert_int 1
# 不主動搶佔資源
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.7.253
}
}
virtual_server 192.168.7.253 3306 {
# 每一個2秒檢查一次real_server狀態
delay_loop 2
# LVS算法
lb_algo wrr
# LVS模式
lb_kind DR
# 會話保持時間
persistence_timeout 60
protocol TCP
real_server 192.168.7.201 3306 {
weight 3
# 檢測到服務down後執行的腳本
notify_down /etc/rc.d/keepalived.sh
TCP_CHECK {
# 鏈接超時時間
connect_timeout 10
# 重連次數
nb_get_retry 3
# 重連間隔時間
delay_before_retry 3
# 健康檢查端口
connect_port 3306
}
}
----------------------
編寫檢測服務down後所要執行的腳本
# vi /etc/rc.d/keepalived.sh
-------------
#!/bin/sh
pkill keepalived
-------------
# chmod +x /etc/rc.d/keepalived.sh
注:此腳本是上面配置文件notify_down選項所用到的,keepalived使用notify_down選項來檢查real_server的服務狀態。
當發現real_server服務故障時,便觸發此腳本.
咱們能夠看到,腳本就一個命令:
經過pkill keepalived強制殺死keepalived進程,從而實現了MySQL故障自動轉移.
另外,咱們不用擔憂兩個MySQL會同時提供數據更新操做,由於每臺MySQL上的keepalived的配置裏面只有本機MySQL的IP+VIP,而不是兩臺MySQL的IP+VIP.
啓動keepalived
# /usr/local/keepalived/sbin/keepalived -D
查看鏈接狀態
# ps -aux | grep keepalived
返回:
---------------
root 25348 0.0 0.0 36792 720 ? Ss 07:15 0:00
/usr/local/keepalived/sbin/keepalived -D
root 25349 0.5 0.1 40968 2016 ? S 07:15 0:00
/usr/local/keepalived/sbin/keepalived -D
root 25350 0.0 0.1 40968 1340 ? S 07:15 0:00
/usr/local/keepalived/sbin/keepalived -D
--------------------
測試
找一臺局域網PC,而後去ping MySQL的VIP,這時候MySQL的VIP是能夠ping的通的
中止MySQL服務,看keepalived健康檢查程序是否會觸發咱們編寫的腳本,去kill掉keepalived進程
# service mysqld stop
# ps -aux | grep keepalived
無返回結果mysql
2.在MySQL-master2:192.168.7.249服務器上keepalived安裝及配置linux
編譯安裝,實際以本機kernel版本爲準算法
# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gzsql
# tar zxvf keepalived-1.2.7.tar.gz數據庫
# cd keepalived-1.2.7服務器
# ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-oop
279.el6.x86_64測試
# make && make install網站
新建一個配置文件,默認keepalived啓動會去/etc/keepalived目錄下尋找配置文件router
# mkdir /etc/keepalived
# vi /etc/keepalived/keepalived.conf
------------------
global_defs {
notification_email {
lzyangel@126.com
}
notification_email_from lzyangel@126.com
smtp_server stmp.126.com
smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1{
# 兩臺配置此處均是BACKUP
state BACKUP
# 注意網卡接口
interface eth0
virtual_router_id 51
# 優先級,另外一臺改成90
priority 90
advert_int 1
# 不主動搶佔資源
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.7.253
}
}
virtual_server 192.168.7.253 3306 {
# 每一個2秒檢查一次real_server狀態
delay_loop 2
# LVS算法
lb_algo wrr
# LVS模式
lb_kind DR
# 會話保持時間
persistence_timeout 60
protocol TCP
real_server 192.168.7.249 3306 {
weight 3
# 檢測到服務down後執行的腳本
notify_down /etc/rc.d/keepalived.sh
TCP_CHECK {
# 鏈接超時時間
connect_timeout 10
# 重連次數
nb_get_retry 3
# 重連間隔時間
delay_before_retry 3
# 健康檢查端口
connect_port 3306
}
}
----------------------
編寫檢測服務down後所要執行的腳本
# vi /etc/rc.d/keepalived.sh
-------------
#!/bin/sh
pkill keepalived
-------------
# chmod +x /etc/rc.d/keepalived.sh
啓動keepalived
# /usr/local/keepalived/sbin/keepalived -D
# ps -aux | grep keepalive
至此配置完成,網站後臺只須要配置MySQL-VIP:192.168.7.253虛擬地址便可
這裏實際鏈接的master數據庫,以哪臺master先開mysql服務爲準。
當master1:192.168.7.201 mysql端口擋掉或者服務器異常關閉,keepalived會自動跳轉到master2:192.168.7.249.
由於兩臺數據庫的數據時同步的,用戶訪問的是MySQL-VIP:192.168.7.253虛擬地址,因此網站數據鏈接會無縫透明轉接到master2服務器,實現雙機熱備+數據同步功能。保證網站數據庫的實時可用性。
注:當某一臺master服務器掛掉恢復後,需同時打開MYSQL服務和keepalived服務,保證另外一臺服務器若是掛掉會無縫轉接。
因此建議mysql與keeplived設置服務開機啓動。
# chkconfig mysqld on
# vi /etc/rc.local
添加:
---------------
/usr/local/keepalived/sbin/keepalived -D