LVS(DR)+ldirectord實現(xiàn)負載平衡
一 環(huán)境介紹
試驗2臺機器上的apache負載平衡,總計使用3臺機器。
調(diào)度機: 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)度機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
如果看到上面的說明已經(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來啟動
ipvsadm-save >/etc/sysconfig/ipvsadm
2 安裝和配置ldirectord ,作用上面的LVS只負責分發(fā),不負責健康檢查,所以,當后面一臺機器掛掉,有可能繼續(xù)分配請求, 使用ldirectord 可以自動將掛掉的機器移除.#p#
ldirectord是heartbeat中的一部分,當我們安裝了heartbeat就帶了ldirectord
1 先配置個可用的安裝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 啟動ldirectord
service ldirectord start
3 配置后面2臺realserver 235/236
1 建立一個執(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臺機器上分別執(zhí)行l(wèi)vsrl.sh
三 測試驗證
1 后面2臺real server分別啟動apache,并在index.heml分別寫入一些標記,以便識別
2 使用瀏覽器輸入http://192.168.1.230, 按 F5是否頁面也來回變化,上面我們選擇的輪詢方式是rr
3 先不開啟ldirectord, 后面的一臺機器關(guān)閉http或者重啟,模擬當機,看是否按F5的時候會被分配到掛的機器上
4 先開啟ldirectord,后面一臺機器模擬當機,這時候應(yīng)該不會被分配到當機的機器上
本文出自 “小時候” 博客,請務(wù)必保留此出處http://shenjianzhousx.blog.51cto.com/1627247/440506