上一篇的mysql主備已經完成,但是mycat只在130主上有一個,接下來在140master2上通過docker運行一個一模一樣的mycat,就可以來配置lvs+keepalived了。
- 再準備兩臺虛擬機150(keepalived主),151(keepalived從)
- 下載安裝keepalived ipvsadm 執行
yum install keepalived ipvsadm
cp /etc/keepalived/keepalived.conf $PWD/keepalived.conf.bak
vim /etc/keepalived/keepalived.confkeepalived.conf內容:(主)
! Configuration File for keepalived global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.209.100/24 dev eth0 label eth0:3 } } virtual_server 192.168.209.100 8066 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP real_server 192.168.209.130 8066 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.209.140 8066 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 } } }
virtual_server端口必須與real_server端口一樣是8066 否則無法通過vip連接mycat
keepalived.conf內容:(備)! Configuration File for keepalived global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 52 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.209.100/24 dev eth0 label eth0:3 } } virtual_server 192.168.209.100 8066 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP real_server 192.168.209.130 8066 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.209.140 8066 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 } } }
配置完成後啓動keepalived:
service keepalived start
- 將這兩臺 Mycat 服務器都配置成 lvs 的 real server,編輯 realserver 腳本文件:vim /etc/init.d/realserver
然後在兩臺mycat中執行以下腳本內容:
#!/bin/bash VIP=192.168.209.100 /etc/rc.d/init.d/functions case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP route add -host $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 $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
保存腳本文件後更改該文件權限:chmod -R 755 /etc/init.d/realserver
同時再更改 functions 文件權限:chmod -R 755 /etc/init.d/functions
首先啓動 mysql,接着啓動 mycat,然後啓動 realserver(./realserver start),再啓動 keepalived - 測試高可用:
關掉130(mysql01 和mycat01)
開啓130關掉150(keepalived主)
無論哪種情況,通過sqlyog連接192.168.209.100:8066 服務均可用,即實現了mysql集羣高可用