DR模式
Direct Routing直連路由
通過為請求報文的重新封裝一個的MAC首部進行轉(zhuǎn)發(fā);源MAC是DIP所在接口的MAC矮烹,目標MAC是挑選出某RS的RIP所在接口的MAC地址磺箕;IP首部不會發(fā)生編發(fā)(CIP<-->VIP)
環(huán)境:Centos 7.0
內(nèi)核:kernel-3.10.0-327.el7.x86_64
keepalived版本:Keepalived v1.2.13
LVS-Master:192.168.1.1
LVS-Backup:192.168.1.2
VIP :192.168.1.100
web1 :192.169.1.3
web2 :192.168.1.4
在LVS-Master上的keepalvied配置
vim /etc/keepalived/keepalived.conf
global_defs {
# notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc #故障時發(fā)送郵件的郵箱
# }
# notification_email_from Alexandre.Cassen@firewall.loc #是有哪個郵箱發(fā)
# smtp_server 192.168.1.1 #郵箱的smtp server地址
# smtp_connect_timeout 30 #鏈接smtp server的超時時間
router_id LVS1 #表示運行Keepalived服務(wù)器標識(BAKUP:LVS2)
}
vrrp_instance VI_1 {
state MASTER #(MASTER|BACKUP)
interface eno16777728 #網(wǎng)卡名稱
virtual_router_id 51 #虛擬路由ID认然,主備保持一致
priority 100 #優(yōu)先級
advert_int 1 #MASTER與BACKUP之間同步檢查的間隔
authentication {
auth_type PASS #認證方式
auth_pass 1111 #認證密碼
}
virtual_ipaddress {
192.168.1.100 #VIP
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6 # 健康檢查的時間間隔
lb_algo rr # 負載均衡算法(rr wrr lc wlc lblcsh dh)
lb_kind DR #LVS實現(xiàn)負載均衡的的機制(NAT TUN DR)
nat_mask 255.255.255.0
persistence_timeout 50 # 同一IP 的連接50秒內(nèi)被分配到同一臺realserver(測試時建議改為0)
protocol TCP # 用TCP監(jiān)測realserver的狀態(tài)
real_server 192.168.1.3 80 { # 定義realserver
weight 1 # 定義權(quán)重
TCP_CHECK {
connect_timeout 3 # 三秒無響應(yīng)超時
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.1.4 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
在LVS-BACKUP需要更改的位置
vim /etc/keepalived/keepalived.conf
global_defs {
router_id LVS2
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777728
virtual_router_id 51
priority 90
advert_int 1
在web服務(wù)器上創(chuàng)建腳本/etc/init.d/lvsrs,所有RS上都需要執(zhí)行這個腳本喘垂。
#!/bin/bash
VIP=192.168.1.100
/etc/rc.d/init.d/functions #需要給這個文件執(zhí)行權(quán)限
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/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