| 角色 | IP | 主機名 | 軟件版本 |
|---|---|---|---|
| VIP | 192.168.244.10 | - | - |
| LVS-DR-Master | 192.168.244.146 | keepalived01 | Keepalived 1.2.13, IPVS 1.2.1 |
| LVS-DR-Backup | 192.168.244.147 | keepalived02 | Keepalived 1.2.13, IPVS 1.2.1 |
| MyCAT RealServer | 192.168.244.148 | mycat01 | MyCAT 1.5 |
| MyCAT RealServer | 192.168.244.149 | mycat02 | MyCAT 1.5 |
核心功能:
1. LVS DR 模式負載均衡(高性能、無七層開銷)
2. Keepalived 實現 RealServer 健康檢查 + LVS 自身雙主熱備
# 兩台 LVS 節點均執行
yum install -y keepalived ipvsadm
# ipvsadm 僅為管理工具,LVS 內核模組 CentOS 7.1 (3.10) 內建
# /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736 # CentOS 7 網卡名非 eth0,需 ip addr 確認
virtual_router_id 51
priority 100
advert_int 1
authentication { auth_type PASS; auth_pass 1111; }
virtual_ipaddress { 192.168.244.10; }
}
virtual_server 192.168.244.10 8066 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.244.148 8066 {
weight 1
TCP_CHECK { connect_timeout 3; nb_get_retry 3; delay_before_retry 3; connect_port 8066; }
}
real_server 192.168.244.149 8066 {
weight 1
TCP_CHECK { connect_timeout 3; nb_get_retry 3; delay_before_retry 3; connect_port 8066; }
}
}
複製 Master 配置,修改兩點:
state BACKUPpriority 99 (低於 Master)# /root/realserver.sh (兩台 MyCAT 節點均執行)
#!/bin/bash
VIP=192.168.244.10
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"
;;
esac
chmod +x realserver.sh
./realserver.sh start
# 驗證 ip addr show lo:0
# 兩台 LVS 啟動
systemctl start keepalived
# 查看 IPVS 映射
ipvsadm -L
# 輸出應顯示 VIP:8066 映射到兩個 RealServer IP:8066
# 關閉持久連接觀察輪詢
# 修改 persistence_timeout 0 並重啟 keepalived
for i in {1..4}; do mysql -h192.168.244.10 -P8066 -utest -ptest -DTESTDB -e 'SELECT @@hostname'; done
# 輸出應交替顯示 mycat01 / mycat02
# 停止 Master keepalived
systemctl stop keepalived
# 客戶端仍可連接,Backup 升級為 Master 接管 VIP
# 停止 mycat01 服務
cd /usr/local/mycat && bin/mycat stop
# ipvsadm -L 應不再顯示 192.168.244.148
# 客戶端請求自動導向 mycat02
interface 必須填寫真實網卡名(eno16777736 而非 eth0)