當學習了LVS三種模式的負載均衡。以DR模式爲例,配置完後需要directord實現後端服務器的健康檢查。而且還無法解決調度器宕掉整個負載均衡失去作用的問題,感覺很不爽。那麼在DR模式下,爲何不用keepalived實現LVS的高可用,還能對後端服務器進行健康檢查。
keepalived實現LVS高可用的工作原理
用keepalived對後端web服務器的狀態進行健康檢查,如果某個web服務器宕機或者故障,keepalived將檢測到,並將故障的服務器從系統中剔除,同時使用其他服務器來代替該服務器的工作,當該服務器正常工作後,keepalived自動將該服務器添加到服務器羣。再通過配置主備keepalived,即需要配置兩臺主機的keeplived實現高可用。一臺主機上keeplived宕掉了,則有備份keeplived接管負載均衡調度。
實驗環境
主機名 | 功能 |
---|---|
server4 | 負載均衡調度器+keepalived(MASTER) |
server5 | 後端服務器1 |
server6 | 後端服務器2 |
server7 | 負載均衡調度器+keepalived(BACKUP) |
一.keepalived+LVS(DR模式)負載均衡的配置
1.安裝虛擬服務器1.4.3版本的keepalived包,並解壓
tar zxf keepalived-1.4.3.tar.gz
cd keepalived-1.4.3
yum install -y openssl-devel.x86_64 ##安裝keepalived依賴包
2.編譯keepalived的源碼包
yum install -y gcc ##因爲源碼是c編寫的,所以需要安裝gcc
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make && make install
3.製作keepalived軟鏈接,方便管理和配置,並添加可執行權限
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /ln -s /usr/local/keepalived/etc/keepalived/ /etc/
usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
4.將keepalived複製到server7
scp -r /usr/local/keepalived/ server4:/usr/local/
5.在server4中修改keepalived的配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
##全局配置
global_defs {
notification_email {
root@localhost ##健康檢查報告通知郵箱
}
notification_email_from keepalived@localhost ##發送郵件的地址
smtp_server 127.0.0.1 ##郵件服務器
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
##vrrpd的配置
vrrp_instance VI_1 {
state MASTER
interface eth0 ##綁定虛擬IP的指定節點
virtual_router_id 1
priority 100 ##優先級。主節點要比從節點優先級高
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.13.100 # 設定虛擬ip(啓動服務後,ip會自動添加在eth0中)
}
}
##Apache服務的負載均衡
virtual_server 172.25.13.100 80 {
delay_loop 1 ## 當RS服務器出問題後的反映時間
lb_algo rr ## 指定LVS的算法,這裏選擇輪循rr
lb_kind DR ## 指定LVS的模式,這裏選擇DR(直接路由模式)
#persistence_timeout 50
protocol TCP
# RS的健康檢查機制
real_server 172.25.13.5 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.13.6 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
6.在server4上啓動keepalived服務
1)啓動前先關閉ipvsadm
systemctl stop ipvsadm ## 可以用ipvasdm -L查看策略,空表示關閉了
2)開啓keepalived服務
systemctl start keepalived
開啓後server4的eth0會自動添加上虛擬IP:172.25.13.100/32
7.在測試機中進行apache服務的測試
1)輪詢方式訪問web後端服務器server5和server6
2)當後端服務器server5的apache服務掛掉,keepalived可以檢測到,並將故障的服務器從系統中剔除。
[root@server5 ~]# systemctl stop httpd
3)當服務器工作正常後 Keepalived自動將服務器加入到服務器羣中
[root@server5 ~]# systemctl start httpd
二.keepalived+lvs(DR)實現高可用
爲解決當只有一臺keepalived主機時,如果它宕掉了,則數據無法轉發,更不可能實現負載均衡的問題,可以配置主備keepalived,即需要再配置一臺主機的keeplived實現高可用。一臺主機上keeplived宕掉了,則有備份keeplived接管負載均衡調度。
1.在server7製作keepalived軟鏈接,方便管理和配置,並添加可執行權限
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /ln -s /usr/local/keepalived/etc/keepalived/ /etc/
usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
2在server7中修改keepalived的配置文件(從節點狀態設置程BACKUP優先級修改50)
3開啓keepalived服務
systemctl start keepalived
4.在測試機上測試
1)當宕掉一臺keepalived主機(server4),此時server7的狀態爲MASTER,server4的狀態變成BACKUP
[root@server4 ~]# systemctl stop keepalived
2)當server4上的keepalived正常工作之後,由於優先級問題,server4又把主權拿過來,server7變成後備狀態
[root@server4 ~]# systemctl start keepalived
也可以通過日誌來查看keepalived主機的狀態!!!