LVS/DR + keepalived配置
注意:前面雖然我們已經配置過一些操作,但是下面我們使用keepaliave操作和之前的操作是有些沖突的,是以若是之前配置過DR,請首先做如下操作:
三台機器:
director(eth010.222.138.200, vip eth0:1: 10.222.138.10)
real server1(eth0 rip: 10.222. 138.201, vip lo:0: 10.222.138.10)
real server2(eth0 rip: 10.222.138.202, vip lo:0: 10.222.138.10)
dr上執行:
ipvsadm -C
ifconfig eth0:1 down
前面的lvs雖然已經配置成功也實作了負載均衡,但是我們測試的時候發現,當某台real server把httpd程序停掉,那麼director照樣會把請求轉發過去,這樣就造成了某些請求不正常。是以需要有一種機制用來檢測real server的狀态,這就是keepalived。它的作用除了可以檢測rs狀态外,還可以檢測備用director的狀态,也就是說keepalived可以實作ha叢集的功能,當然了也需要一台備用director.
備用director也需要安裝一下keepalived軟體
yum install -y keepalived (分别在2台director 上面安裝)
dir master:
[root@dir network-scripts]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER #備用伺服器上為 BACKUP
interface eth0
virtual_router_id 51
priority 100 #備用伺服器上為90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.222.138.10
virtual_server 10.222.138.10 80 {
delay_loop 6 #(每隔10秒查詢realserver狀态)
lb_algo rr #(lvs 算法)
lb_kind DR #(Direct Route)
persistence_timeout 00 #(同一IP的連接配接60秒内被配置設定到同一台realserver)
protocol TCP #(用TCP協定檢查realserver狀态)
real_server 10.222.138.201 80 {
weight 100 #(權重)
TCP_CHECK {
connect_timeout 10 #(10秒無響應逾時)
nb_get_retry 3
delay_before_retry 3
connect_port 80
real_server 10.222.138.202 80 {
weight 100
connect_timeout 10
以上為主director的配置檔案,從director的配置檔案隻需要修改
state MASTER -> state BACKUP
priority 100 -> priority 90
dir backup :
[root@dir02 ~]# vim /etc/keepalived/keepalived.conf
state BACKUP #備用伺服器上為 BACKUP
priority 90 #備用伺服器上為90
配置完keepalived後,需要開啟端口轉發(主從都要做):
echo 1 > /proc/sys/net/ipv4/ip_forward
然後,兩個rs上執行 /usr/local/sbin/lvs_dr_rs.sh 腳本 (配置檔案上次lvs-dr實驗已建立)
[root@rs1 ~]# cat /usr/local/sbin/lvs_rs.sh
#! /bin/bash
vip=10.222.138.10
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip 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
最後,兩個director上啟動keepalived服務(先主後從):
/etc/init.d/keepalived start
另外,需要注意的是,啟動keepalived服務會自動生成vip和ipvsadm規則,不需要再去執行上面提到的/usr/local/sbin/lvs_dr.sh 腳本。
測試: 關閉其中一台rs1的nginx服務, 用戶端通路時隻達到rs2,比較智能。
關閉 dir上的keepalived, 備用的keepalived開始啟用。
做到可負載均衡和高可用的結合。