天天看點

LVS結合keepalived配置測試

 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開始啟用。

做到可負載均衡和高可用的結合。

繼續閱讀