標籤:lvs-dr
首先需要4台伺服器
2台dir分別是 dirmaster dirslave
2台RS 分別運行nginx測試服務
dir
192.168.186.129
192.168.186.135
RS
192.168.186.130
192.168.186.132
首先搭建LVS-DR服務
a.dir上面安裝ipvsadm
yum install ipvsadm
b.更改ipvsadm設定檔
vim /etc/usr/local/sbin/lvs_dr.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward #dir伺服器行開啟路由轉寄功能
ipv=/sbin/ipvsadm
vip=192.168.186.110
rs1=192.168.186.130
rs2=192.168.186.132
#設定vip
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev eth0:0
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
兩台rs上:vim /usr/local/sbin/lvs_dr_rs.sh
#! /bin/bash
vip=192.168.186.110
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
c.然後director上執行: bash /usr/local/sbin/lvs_dr.sh
兩台rs上執行: bash /usr/local/sbin/lvs_dr_rs.sh
Windows下瀏覽器測試訪問
以上完成後,即可實現RS的負載平衡,每次請求根據權重的設定而分攤
但是如果當某一個RS服務停止時,那麼用戶端請求依然會直接到停止服務的RS上。
2.增加keepalived服務
注意:前面雖然我們已經配置過一些操作,但是下面我們使用keepaliave操作和之前的操作是有些衝突的,所以若是之前配置過DR,請首先做如下操作:dr上執行:
$ipv -C
ifconfig eth0:0 down
前面的lvs雖然已經配置成功也實現了負載平衡,但是我們測試的時候發現,當某台real server把nginx進程停掉,那麼director照樣會把請求轉寄過去,這樣就造成了某些請求不正常。所以需要有一種機制用來檢測real server的狀態,這就是keepalived。它的作用除了可以檢測rs狀態外,還可以檢測備用director的狀態,也就是說keepalived可以實現ha叢集的功能,當然了也需要一台備用director.
a.主機和備用機上都要安裝上keepalived
yum install -y keepalived
安裝好後,編輯設定檔
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 {
192.168.186.110
}
}
virtual_server 192.168.186.110 80 {
delay_loop 6 #(每隔10秒查詢realserver狀態)
lb_algo wlc #(lvs 演算法)
lb_kind DR #(Direct Route)
persistence_timeout 60 #(同一IP的串連60秒內被分配到同一台realserver)
protocol TCP #(用TCP協議檢查realserver狀態)
real_server 192.168.186.100 80 {
weight 100 #(權重)
TCP_CHECK {
connect_timeout 10 #(10秒無響應逾時)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.186.101 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
以上為主director的設定檔,從director的設定檔只需要修改
state MASTER -> state BACKUP
priority 100 -> priority 90
配置完keepalived後,需要開啟連接埠轉寄(主從都要做):
echo 1 > /proc/sys/net/ipv4/ip_forward
然後,兩個rs上執行 /usr/local/sbin/lvs_dr_rs.sh 指令碼
最後,兩個director上啟動keepalived服務(先主後從):
/etc/init.d/keepalived start
另外,需要注意的是,啟動keepalived服務會自動產生vip和ipvsadm規則,不需要再去執行上面提到的/usr/local/sbin/lvs_dr.sh 指令碼。
這篇主要寫了怎麼搭建服務,講解我轉寄了一篇文章~~~
本文出自 “熊仔的部落格” 部落格,請務必保留此出處http://9821177.blog.51cto.com/9811177/1715642
LVS DR+keepalived實現HA+LB