Keepalived為LVS(DR)排程器提供高可用功能,防止排程器單點故障,為使用者提供Web服務
部署5台虛拟機,1台作為用戶端主機、2台作為LVS排程器、2台作為Real Server
client 192.168.4.1
proxy1 192.168.4.10
proxy2 192.168.4.11
web1 192.168.4.50
web2 192.168.4.60
VIP 192.168.4.200
web1配置VIP位址 (将VIP部署在web1、web2的lo回還位址上)
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] ~]# cp ifcfg-lo{,:0}
[[email protected] ~]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.50
NETMASK=255.255.255.255 // 注意:這裡的子網路遮罩必須是32(也就是全255)
NETWORK=192.168.4.50 //網絡位址與IP位址一樣
BROADCAST=192.168.4.50 //廣播位址與IP位址也一樣
ONBOOT=yes
NAME=lo:0
web2配置VIP位址
[[email protected]~]# cd /etc/sysconfig/network-scripts/
[[email protected] ~]# cp ifcfg-lo{,:0}
[[email protected] ~]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.60
NETMASK=255.255.255.255 // 注意:這裡的子網路遮罩必須是32(也就是全255)
NETWORK=192.168.4.60 //網絡位址與IP位址一樣
BROADCAST=192.168.4.60 //廣播位址與IP位址也一樣
ONBOOT=yes
NAME=lo:0
注意:
這裡因為web1也配置與代理一樣的VIP位址,預設肯定會出現位址沖突。
寫入這四行的主要目的就是通路192.168.4.200的資料包,隻有排程器會響應,其他主機都不做任何響應。
web1、web2 都需要配置 (寫入如下4行參數)
[[email protected] ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
配置背景web服務(web1和web2主機)
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo "192.168.4.50" > /var/www/html/index.html
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo "192.168.4.60" > /var/www/html/index.html
啟動Web伺服器軟體(web1和web2主機)
部署排程器 安裝Keepalived與ipvsadm軟體
[[email protected] ~]# yum install -y keepalived ipvsadm
[[email protected] ~]# yum install -y keepalived ipvsadm
部署Keepalived實作LVS-DR模式排程器的高可用
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
[email protected] //設定報警收件人郵箱
}
notification_email_from [email protected] //設定發件人
smtp_server 127.0.0.1 //定義郵件伺服器
smtp_connect_timeout 30
router_id lvs1 //設定路由ID号
vrrp_skip_check_adv_addr
#vrrp_strict //注釋掉全局配置
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER //主伺服器為MASTER
interface eth0 //定義網絡接口
virtual_router_id 50 //主輔VRID号必須一緻
priority 150 //伺服器優先級
advert_int 1
authentication {
auth_type pass
auth_pass forlvs //主輔伺服器密碼必須一緻
}
virtual_ipaddress { 192.168.4.100 } //配置VIP
}
virtual_server 192.168.4.100 80 { //設定ipvsadm的VIP規則
delay_loop 6
lb_algo wrr //設定LVS排程算法為WRR
lb_kind DR //設定LVS的模式為DR
persistence_timeout 1
protocol TCP
real_server 192.168.4.50 80 { //設定後端web伺服器真實IP
weight 1 //設定權重為1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.4.60 80 { //設定後端web伺服器真實IP
weight 2 //設定權重為2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
重新開機服務
[[email protected] ~]# systemctl start keepalived
檢視LVS規則
[[email protected] ~]# ipvsadm -Ln
檢視VIP配置
[[email protected] ~]# ip a s
2)LVS2排程器設定Keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lvs1
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER //主伺服器為BACKUP
interface eth0
virtual_router_id 50 //主輔VRID号必須一緻
priority 100 //伺服器優先級
advert_int 1
authentication {
auth_type pass
auth_pass forlvs //主輔伺服器密碼必須一緻
}
virtual_ipaddress { 192.168.4.100 }
}
virtual_server 192.168.4.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 1
protocol TCP
real_server 192.168.4.50 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.4.60 80 {
weight 2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
重新開機服務
[[email protected] ~]# systemctl start keepalived ipvsadm
檢視LVS規則
[[email protected] ~]# ipvsadm -Ln
檢視VIP設定
[[email protected] ~]# ip a s
用戶端測試
使用curl指令反複連接配接http://192.168.4.100
測試web服務端當機切換VIP
測試proxy排程器當機切換排程功能