CentOS下LVS(DR)+ldirectord 实现负载平衡
时间:2014-05-19 00:08 来源:linux.it.net.cn 作者:IT网
LVS(DR)+ldirectord 实现负载平衡
waynewu 2009-10-28
MSN:waynewush@yahoo.com.cn Email: waynewush@gmail.com
一 环境介绍
试验2台机器上的apache负载平衡,总计使用3台机器。
调度机: 192.168.1.238
vip1: 192.168.1.230
realip: 192.168.1.235
readip: 192.168.1.236
系统: RHEL 5.3
二 安装配置过程
1 安装和配置调度机lvs
1 RHEL5 光盘中中已经带了LVS安装软件,直接到光盘的Cluster可以找到
# rpm -ivh rpm -ivh ipvsadm-1.24-8.1.i386.rpm
2 检查lvs模块是否已经加载
lsmod|grep ip_vs
ip_vs 77313 0
如果看到上面的说明已经加载成功
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 执行脚本,sh lvsdr.sh 这样调度器的规则已经启用了,使用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的规则保存到/etc/sysconfig/ipvsadm中,可以使用server ipvsadm来启动
ipvsadm-save >/etc/sysconfig/ipvsadm
2 安装和配置ldirectord ,作用上面的LVS只负责分发,不负责健康检查,所以,当后面一台机器挂掉,有可能继续分配请求, 使用ldirectord 可以自动将挂掉的机器移除.
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=1
2 安装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 建立一个执行脚本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台机器上分别执行lvsrl.sh
三 测试验证
1 后面2台real server分别启动apache,并在index.heml分别写入一些标记,以便识别
2 使用浏览器输入http://192.168.1.230, 按 F5是否页面也来回变化,上面我们选择的轮询方式是rr
3 先不开启ldirectord, 后面的一台机器关闭http或者重启,模拟当机,看是否按F5的时候会被分配到挂的机器上
4 先开启ldirectord,后面一台机器模拟当机,这时候应该不会被分配到当机的机器上
四 网络上一些可以参考和借鉴的文章
http://blog.163.com/herod_xiao/blog/static/87188399200991635444342/
http://sery.blog.51cto.com/10037/54645
http://zh.linuxvirtualserver.org/book/export/html/95
ldirectord参数的详细描述: http://blog.freebug.org/archives/337.html
ipvsadm命令详解: http://zh.linuxvirtualserver.org/node/5
(责任编辑:IT)
LVS(DR)+ldirectord 实现负载平衡 waynewu 2009-10-28 MSN:waynewush@yahoo.com.cn Email: waynewush@gmail.com 一 环境介绍 试验2台机器上的apache负载平衡,总计使用3台机器。 调度机: 192.168.1.238 vip1: 192.168.1.230 realip: 192.168.1.235 readip: 192.168.1.236 系统: RHEL 5.3 二 安装配置过程 1 安装和配置调度机lvs 1 RHEL5 光盘中中已经带了LVS安装软件,直接到光盘的Cluster可以找到 # rpm -ivh rpm -ivh ipvsadm-1.24-8.1.i386.rpm 2 检查lvs模块是否已经加载 lsmod|grep ip_vs ip_vs 77313 0 如果看到上面的说明已经加载成功 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 执行脚本,sh lvsdr.sh 这样调度器的规则已经启用了,使用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的规则保存到/etc/sysconfig/ipvsadm中,可以使用server ipvsadm来启动 ipvsadm-save >/etc/sysconfig/ipvsadm 2 安装和配置ldirectord ,作用上面的LVS只负责分发,不负责健康检查,所以,当后面一台机器挂掉,有可能继续分配请求, 使用ldirectord 可以自动将挂掉的机器移除. 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=1 2 安装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 建立一个执行脚本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台机器上分别执行lvsrl.sh 三 测试验证 1 后面2台real server分别启动apache,并在index.heml分别写入一些标记,以便识别 2 使用浏览器输入http://192.168.1.230, 按 F5是否页面也来回变化,上面我们选择的轮询方式是rr 3 先不开启ldirectord, 后面的一台机器关闭http或者重启,模拟当机,看是否按F5的时候会被分配到挂的机器上 4 先开启ldirectord,后面一台机器模拟当机,这时候应该不会被分配到当机的机器上 四 网络上一些可以参考和借鉴的文章 http://blog.163.com/herod_xiao/blog/static/87188399200991635444342/ http://sery.blog.51cto.com/10037/54645 http://zh.linuxvirtualserver.org/book/export/html/95 ldirectord参数的详细描述: http://blog.freebug.org/archives/337.html ipvsadm命令详解: http://zh.linuxvirtualserver.org/node/5 (责任编辑:IT) |