一、概述
keepalived,是一種更強大的lvs負載均衡配置。可以解決lvs服務器發生故障而產生的問題,還可以驗證RS服務器是否正常,如果不正常就不會在往該RS服務器轉發請求。
配置多臺LVS負載均衡服務器,如果一臺發生故障,自動啓用另一臺繼續執行負載均衡操作,兩臺LVS服務器是主從關係。
二、配置
1.環境準備,四臺虛擬機,兩臺作LVS服務器,兩臺RS服務器
LVS服務器-1(DS) --eleven-2 | DIP:192.168.40.33 | VIP:192.168.40.100(在keepalived配置文件中配置) |
LVS服務器-2(DS) --eleven-3 | DIP:192.168.40.34 | VIP:192.168.40.100(在keepalived配置文件中配置) |
真實後端服務器(RS)--eleven-4 | RIP:192.168.40.35 | VIP:192.168.40.100 |
真實後端服務器(RS)--eleven-5 | RIP:192.168.40.36 |
VIP:192.168.40.100 |
2.兩臺RS服務器配置響應級別和通告級別
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
3.兩臺RS服務器在迴環接口lo上新開闢個接口配置VIP
ifconfig lo:7 192.168.40.100 netmask 255.255.255.255
4.兩臺RS服務器安裝httpd,供待會測試
#安裝httpd
yum install httpd -y
#創建index.html文件供測試
vi /var/www/html/index.html
#輸入內容
#eleven-4
from eleven-4
#eleven-5
from eleven-5
5.兩臺LVS服務器安裝keepalived,可以不用再單獨安裝ipvsadm,但是爲了方便我們查看相關信息,也把ipvsadm安裝上。
##安裝keepalived
yum install keepalived -y
##安裝ipvsadm
yum install ipvsadm -y
6.keepalived.conf配置文件講解,keepalived的配置文件在/etc/keepalived/keepalived.conf
##keepalived.conf配置文件主要有三塊配置區域global_defs ,vrrp_instance ,virtual_server
! 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地址
smtp_connect_timeout 30 ##連接smtp服務器的超時時間
router_id LVS_DEVEL ##標誌本節點的字符串,通常爲ip地址,故障發生時郵件會通知到
}
##用來配置是主機還是從機,權重值,LVS服務器的健康驗證,當檢查失敗時會將vrrp_instance的priority減少相應的值
vrrp_instance VI_1 {
state MASTER ##配置是主機還是從機,MASTER爲工作狀態,BACKUP是備用狀態
interface eth0 ##配置的vip所要掛在的網卡接口,默認爲eth0
virtual_router_id 51 #3虛擬路由標誌。同組的virtual_router_id應該保持一致。它將決定多播的MAC地址
priority 100 ##權重
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { ##配置VIP,如何使用可查看幫助文檔,命令:man keepalived.conf
192.168.200.16
192.168.200.17
192.168.200.18
192.168.200.100
}
}
###根據上面配置的VIP執行對應的虛擬服務。
virtual_server 192.168.200.100 443 { ##虛擬IP,來源與上面的虛擬IP地址,後面加空格加端口號
delay_loop 6 ###健康檢查間隔,單位爲秒,默認6s進行一次健康檢查
lb_algo rr ###配置負載規則,默認爲rr輪詢
lb_kind NAT ###負載均衡轉發規則。一般包括DR,NAT,TUN 3種。
nat_mask 255.255.255.0
persistence_timeout 50 ###同一個IP地址在50秒內lvs轉發給同一個後端服務器
protocol TCP ###轉發協議,有TCP和UDP兩種。
real_server 192.168.201.100 443 { ##真實服務器,包括IP和端口號
weight 1 ##權重
SSL_GET { #通過什麼請求規則判斷RealServer的健康狀態,HTTP_GET/SSL_GET:相當於HTTPS
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3 ##連接超時時間
nb_get_retry 3 ##重連次數
delay_before_retry 3 ##重連時間間隔
}
}
}
7.實操,兩臺LVS服務器是主從關係,先配置主機的keepalived.conf,再配置從機的,將從機的priority 配的低於主機的。
! 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 #從機配置BACKUP
interface eth0
virtual_router_id 51
priority 100 #權重,用於區分主從關係,高的爲主機,低的爲從機,會根據全權重來區分各LVS服務器的優先級,從機這裏配置50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.40.100/24 dev eth0 label eth0:3
}
}
virtual_server 192.168.40.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.40.35 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.40.36 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
8.重啓兩臺LVS服務器的keepalived
service keepalived restart
9.查看ip,會發現自動創建了VIP,輸入ipvsadm -lm 查看主機真是效果,此時從機不會有效果,當主機發生故障後,從機會自動變成這樣的效果。
10.測試,瀏覽器請求,192.168.40.100:80