利用LVS+Keepalived搭建Mysql雙主復制高可用負載均衡環(huán)境
應用背景:
?MySQL復制(主主,主從...)能在保證數(shù)據的備份的同時也能夠做讀寫分離分攤系統(tǒng)壓力,但是發(fā)生單點故障時,需要手動
切換到另外一臺主機裹纳。LVS和Keppalived可以設定一個VIP來實現(xiàn)統(tǒng)一訪問入口暴区,實現(xiàn)單點故障時拣技,VIP自動切換至另外一臺
主機上達到高可用效果,同時LVS可以提供多種調度算法來實現(xiàn)負載均衡機制娱据。
測試環(huán)境:
MySQL主主復制蚪黑,利用Keepalived控制LVS的高可用,在利用LVS的某種調度算法對2臺MySQL實現(xiàn)負載均衡。
操作步驟:
1. MySQL復制(雙主)
略
2. 安裝LVS和Keepalived(在兩臺LVS上操作)
1
2
3
4
[root@server-8 ~]# yum install epel-release -y
[root@server-8 ~]# yum install ipvsadm keepalived -y
[root@server-8 ~]# echo "" > /etc/keepalived/keepalived.conf
[root@server-8 ~]# vim? /etc/keepalived/keepalived.conf
! Configuration Fileforkeepalivedglobal_defs {? router_idLVS1#另外一臺就寫LVS2}vrrp_instance VI_1 {? ? stateMASTER#指定instance初始狀態(tài)祠锣,當前是主MASTER,另外一節(jié)點填BACKUP? ? interface eth0? ? ? ? ? ? ? ? ? ? ? #請查看網卡名咽安,CentOS6和7命名不一樣? ? virtual_router_id51? ? ? ? ? ? ? ? #VRID伴网,相同VRID為一個組,決定多播MAC地址妆棒,重要澡腾!主備一致
? ? priority 100? ? ? ? ? ? ? ? ? ? ? ? #優(yōu)先級,另一臺改為低一點糕珊,比如90
? ? advert_int 1? ? ? ? ? ? ? ? ? ? ? ? #檢查間隔
? ? authentication {
? ? ? ? auth_type PASS? ? ? ? ? ? ? ? ? #認證方式动分,可以是pass或ha
? ? ? ? auth_pass 1111? ? ? ? ? ? ? ? ? #認證密碼
? ? }
? ? virtual_ipaddress {
? ? ? ? 138.138.82.222? ? ? ? ? ? ? ? ? #VIP
? ? }
}
virtual_server 138.138.82.2223306 {
? ? delay_loop 6#服務輪詢的時間間隔? ? lb_algo wlr? ? ? ? ? ? ? ? ? ? ? ? #加權最小連接調度算法,LVS調度算法rr|wrr|lc|wlc|lblc|lblcr|sh|dh|sed|nq? ? lb_kind DR? ? ? ? ? ? ? ? ? ? ? ? ? #LVS集群模式 NAT|DR|TUN红选,其中DR模式要求負載均衡器網卡必須有一塊與物理網卡在同一個網段? ? persistence_timeout 50#會話保持時間? ? protocol TCP? ? ? ? ? ? ? ? ? ? ? ? #健康檢查協(xié)議
#
=== Real Server設置澜公,3306就是MySQL連接端口 ===#
? ? real_server 138.138.82.103306 {
? ? ? ? weight 3? ? ? ? ? ? ? ? ? ? ? ? #權重
? ? ? ? TCP_CHECK {
? ? ? ? ? ? connect_timeout 3? ? ? ? ? ? nb_get_retry 3? ? ? ? ? ? delay_before_retry 3? ? ? ? ? ? connect_port 3306? ? ? ? }
? ? }
? ? real_server 138.138.82.113306 {
? ? ? ? weight 3? ? ? ? TCP_CHECK {
? ? ? ? ? ? connect_timeout 3? ? ? ? ? ? nb_get_retry 3? ? ? ? ? ? delay_before_retry 3? ? ? ? ? ? connect_port 3306? ? ? ? }
? ? }
}
保存,退出喇肋;
另外一臺LVS主機的Keepalived配置同上坟乾,修改上面的提到的router_id,state蝶防,priority值即可甚侣,不在贅述;
接下來啟動Keepalived
1
2
3
[root@server-8 ~]# service keepalived start
[root@server-9 ~]# service keepalived start
[root@server-8 ~]# ip a
1[root@server-8 ~]# ipvsadm -ln
目前VIP只在MASTER上间学,如果MASTER節(jié)點掛了殷费,VIP自動飄到BACKUP節(jié)點上;
3. 配置兩臺MySQL所需腳本(在兩臺MySQL上操作)
1[root@server-10 ~]# vim lvs.sh
#!/bin/bash
VIP=138.138.82.222case"$1"instart)
? ? ? ? ? echo"start LVS of RealServer DR"/sbin/ifconfiglo:0$VIP broadcast $VIP netmask255.255.255.255 up
? ? ? ? ? /sbin/route add -host $VIP dev lo:0echo"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
? ? ? ;;
stop)
? ? ? ? ? /sbin/ifconfiglo:0 down
? ? ? ? ? echo"close LVS of RealServer DR"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"Usage: $0 {start|stop}"
? ? ? ? ? exit 1esacexit 0
保存低葫,退出详羡;
啟動腳本:
1
2
[root@server-10 ~]# sh lvs.sh start
[root@server-10 ~]# ip a
另一臺MySQL操作如上(腳本內容一致)。
1[root@server-11 ~]# ip a
這樣氮采,兩臺mysql會通過各自的loopback接口與這個VIP通信殷绍。
?直此,客戶端就可以通過統(tǒng)一個接口IP(138.138.82.222)來訪問數(shù)據了鹊漠。
原文:https://www.cnblogs.com/ding2016/p/8964778.html