LVS(DR)+ldirectord實(shí)現(xiàn)負(fù)載平衡
一 環(huán)境介紹
試驗(yàn)2臺(tái)機(jī)器上的apache負(fù)載平衡,總計(jì)使用3臺(tái)機(jī)器。
調(diào)度機(jī): 192.168.1.238
vip1: 192.168.1.230
realip: 192.168.1.235
readip: 192.168.1.236
系統(tǒng): RHEL 5.3
二 安裝配置過程
1 安裝和配置調(diào)度機(jī)lvs
1 RHEL5 光盤中中已經(jīng)帶了LVS安裝軟件,直接到光盤的Cluster可以找到
# rpm -ivh rpm -ivh ipvsadm-1.24-8.1.i386.rpm
2 檢查lvs模塊是否已經(jīng)加載
lsmod|grep ip_vs
ip_vs 77313 0
如果看到上面的說(shuō)明已經(jīng)加載成功
3 配置lvs,編輯腳本 lvsdr.sh
[root@ddmap ~]# cat lvsdr.sh
#!/bin/bash
RIP1=192.168.1.235
RIP2=192.168.1.236
VIP1=192.168.1.230
/sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev eth0:0
echo "1" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
#set LVS apache
/sbin/ipvsadm -A -t $VIP1:80 -s rr
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
4 執(zhí)行腳本,sh lvsdr.sh 這樣調(diào)度器的規(guī)則已經(jīng)啟用了,使用ipvsadmin -l查看
[root@ddmap ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.230:http rr
-> 192.168.1.236:http Route 1 0 0
-> 192.168.1.235:http Route 1 0 0
5 完成后可以講ipvs的規(guī)則保存到/etc/sysconfig/ipvsadm中,可以使用server ipvsadm來(lái)啟動(dòng)
ipvsadm-save >/etc/sysconfig/ipvsadm
2 安裝和配置ldirectord ,作用上面的LVS只負(fù)責(zé)分發(fā),不負(fù)責(zé)健康檢查,所以,當(dāng)后面一臺(tái)機(jī)器掛掉,有可能繼續(xù)分配請(qǐng)求, 使用ldirectord 可以自動(dòng)將掛掉的機(jī)器移除.#p#
ldirectord是heartbeat中的一部分,當(dāng)我們安裝了heartbeat就帶了ldirectord
1 先配置個(gè)可用的安裝ldirectord和heartbeat的源
[root@ddmap ~]# cat /etc/yum.repos.d/ha-clustering.repo
[server_ha-clustering]
name=High Availability/Clustering server technologies (CentOS_5)
#type=rpm-md
baseurl=http://download.opensuse.org/repositories/server:/ha-clustering/CentOS_5/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/server:/ha-clustering/CentOS_5/repodata/repomd.xml.key
enabled=12 安裝ldirectord
# yum install ldirectord
3 配置ldirectord
# cp /usr/share/doc/ldirectord-1.0/ldirectord.cf /etc/ha.d/.
# vim /etc/ha.d/ldirectord.cf
# Global Directives
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no
# Sample for an http virtual service
virtual=192.168.1.230:80
real=192.168.1.235:80 gate
real=192.168.1.236:80 gate
fallback=127.0.0.1:80 gate
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
# receive="Test Page"
# virtualhost=www.x.y.z
4 啟動(dòng)ldirectord
service ldirectord start
3 配置后面2臺(tái)realserver 235/236
1 建立一個(gè)執(zhí)行腳本lvsrl.sh
#!/bin/bash
VIP1=192.168.1.230
/sbin/ifconfig lo:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
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
2 在2臺(tái)機(jī)器上分別執(zhí)行l(wèi)vsrl.sh
三 測(cè)試驗(yàn)證
1 后面2臺(tái)real server分別啟動(dòng)apache,并在index.heml分別寫入一些標(biāo)記,以便識(shí)別
2 使用瀏覽器輸入http://192.168.1.230, 按 F5是否頁(yè)面也來(lái)回變化,上面我們選擇的輪詢方式是rr
3 先不開啟ldirectord, 后面的一臺(tái)機(jī)器關(guān)閉http或者重啟,模擬當(dāng)機(jī),看是否按F5的時(shí)候會(huì)被分配到掛的機(jī)器上
4 先開啟ldirectord,后面一臺(tái)機(jī)器模擬當(dāng)機(jī),這時(shí)候應(yīng)該不會(huì)被分配到當(dāng)機(jī)的機(jī)器上
本文出自 “小時(shí)候” 博客,請(qǐng)務(wù)必保留此出處http://shenjianzhousx.blog.51cto.com/1627247/440506