MySQL + KeepAlived + LVS單點(diǎn)寫入主主同步高可用架構(gòu)實(shí)驗(yàn)
㈠ 實(shí)戰(zhàn)環(huán)境
服務(wù)器名· IP OS MySQL
odd.example.com 192.168.1.116 RHEL-5.8 5.5.16
even.example.com 192.168.1.115 RHEL-5.8 5.5.16
㈡ 方案優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
● 安裝配置簡單, 實(shí)現(xiàn)方便,高可用效率好,可以根據(jù)服務(wù)與系統(tǒng)的可用性多方面進(jìn)行切換
● 可以將寫 VIP 和讀 VIP 分別進(jìn)行設(shè)置,為讀寫分離做準(zhǔn)備
● 可以在后面添加多個(gè)從服務(wù)器,并做到負(fù)載均衡
缺點(diǎn)
● 在啟動(dòng)或者恢復(fù)后會(huì)立即替換掉定義的 sorry_server
因此如果要實(shí)現(xiàn)指定條件替換或者不替換需要通過其他方式實(shí)現(xiàn),比如:臨時(shí)更改MySQL的端口等
● 擴(kuò)展不是很方便
● 切換需要 1s 左右的時(shí)間
㈢ 方案適用場景
這個(gè)方案適用于只有兩臺(tái)數(shù)據(jù)庫服務(wù)器并且還沒有實(shí)現(xiàn)數(shù)據(jù)庫的讀寫分離的情況、讀和寫都配置 VIP
這個(gè)方案能夠便于單臺(tái)數(shù)據(jù)庫的管理維護(hù)以及切換工作
比如進(jìn)行大表的表結(jié)構(gòu)更改、數(shù)據(jù)庫的升級(jí)等都是非常方便的
㈣ 方案架構(gòu)圖
㈤ 部署步驟
⑴ MySQL 安裝
請查閱我之前的一篇文章:
MySQL 5.5 三大安裝方式:【二進(jìn)制、源代碼編譯和RPM包】安裝步驟及優(yōu)缺點(diǎn)比較
http://www.bitsCN.com/database/201304/202705.html
⑵ MySQL主主同步配置
這也請查閱我之前的文章哈:MySQL主主同步配置
http://www.bitsCN.com/database/201305/207858.html
⑶ LVS 安裝
在ODD EVEN:
# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
# ln -s /usr/src/kernels/2.6.18-308.el5xen-i686/ /usr/src/linux
# tar -zxv -f ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
# make
# make install
⑷ KeepAlived安裝
在ODD EVEN:
# wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
# tar -zxv -f keepalived-1.1.19.tar.gz
# cd keepalived-1.1.19
# ./configure --prefix=/usr/local/keepalived
# make
# make install
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# mkdir /etc/keepalived
⑸ KeepAlived配置
在 ODD
[plain]
global_defs {
notification_email {
linwaterbin@gmail.com
}
notification_email_from bychjzh@gmail.com
smtp_server smtp.gmail.com
smtp_connect_timeout 30
router_id LVS1
}
vrrp_sync_group test {
group {
loadbalance
}
}
vrrp_instance loadbalance {
state BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.128 dev eth0 label eth0:1
}
}
virtual_server 192.168.1.128 3306 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 20
protocol TCP
sorry_server 192.168.1.115 3306
real_server 192.168.1.116 3306 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
在EVEN:
大部分都和 ODD 一樣、只有 2 處:
● state BACKUP
● priority 150
⑹ ODD EVEN 的 realsever 配置
在 ODD EVEN 上
[plain]
#!/bin/bash
# description: Config realserver lo and apply noarp
SNS_VIP=192.168.1.128
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
⑺ 啟動(dòng) KeepAlived和 realsever
在 ODD EVEN
# /etc/rc.d/init.d/realserver.sh start
# /etc/rc.d/init.d/keepalived start
# echo “/etc/rc.d/init.d/realserver.sh start” >> /etc/rc.local
# echo “/etc/rc.d/init.d/keepalived start” >> /etc/rc.local
配置到這邊大概都已經(jīng)差不多了、接下來看看測試
㈥ 簡單測試
停掉ODD MySQL Server 、看看能否自動(dòng)卻換到 sorry_server
[plain]
停止前:
[root@odd keepalived]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.128:3306 rr persistent 20
-> 192.168.1.116:3306 Local 3 0 0
停止:
[mysql@odd ~]$ mysqladmin shutdown
130508 00:53:50 mysqld_safe mysqld from pid file /home/mysql/mysql/data/odd.example.com.pid ended
[1]+ Done mysqld_safe
停止后:
[root@odd keepalived]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.128:3306 rr persistent 20
-> 192.168.1.115:3306 Route 1 0 0
成功!!
bitsCN.com聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com