工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆

用ha,lvs构建的高可用负载均衡系统

//////////////////////////////////////////////////
此文档为半年多前做的测试笔记了.采用HeatBeat+lvs构建的高可用负载均衡系统.当时测试算是比较成功的.也上了项目使用.但没用多久就撒了.在实时要求比较高的环境下,问题比较多.要解决的问题也多.但用在静态上的话,感觉还是很不错的说.现在整理一下,发布上来.可惜后期的文档没怎么记录.如各位看观有什么不明或疑问,欢迎指出或和我联系:QQ5846690.mail/man:mymail#3126.com
同时转截请注册来自 http://meisw.cn/show-34-1.html
///////////////////////////////////////////////////

 

环境:机器5台,均采用rhel4,使用DR方式.

结构:两台做双机热备,串口线一条.两台做real server,一台做数据库.同时,双机里的备机也可以做real server.我测试的时候,有用过三台,四台,加上虚拟机的话有5台.开始单测试lvs,用了三台.

LVS分流,三台机.

图表
director
dip:192.168.1.10  (eth0)
vip:192.168.1.9 (eth0:0)

realserver1
rip:192.168.1.11 (eth0)
vip:192.168.1.9 (lo:0)

realserver2
rip:192.168.1.12 (eth0)
vip:192.168.1.9 (lo:0)

 

一 director(调度器)
1 修改内核参数 (/etc/sysctl.conf)
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1

sysctl -p 使之生效

2 配置VIP地址
ifconfig eth0:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up
route add -host 192.168.1.9 dev eth0:0

3 清除ipvsadm表
ipvsadm -C

4 使用ipvsadm安装LVS服务
ipvsadm -A -t 192.168.1.9:http -s rr

5 增加readserver
#forward http to realserver using direct routing with weight 1
ipvsadm -a -t 192.168.1.9:http -r 192.168.1.11 -g -w 1
ipvsadm -a -t 192.168.1.9:Http -r 192.168.1.12 -g -w 1


系统启动后要确认内核是否支持ipvs,只需要执行下面的命令即可:grep ip_vs_init /boot/System.map

二 配置realserver
1 修改内核参数(/etc/sysctl.conf)
net.ipv4.ip_forward = 0
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p 使之生效

2 配置VIP地址
ifconfig lo:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up
route add -host 192.168.1.9 dev lo:0

测试

用IE打开http://192.168.1.10访问看看结果是否正确. 可以在两台real server服务器放置两个不同的页面.如是real server1/real server2.这样就可以看出有没分流到两台real server上了.或者用一些软件来测试一下性能.

 

ha+lvs高可用负载分流


#######################################
# HeatBeat
#######################################

HeartBeat是Linux-HA的高可用性集群软件,它的主要作用是:
安装在Load Balancer和Backup上,运行于active/standby模式。
当Load Balancer失效时,Backup自动激活,成为实际的Load Balancer。
切换到active模式时,按顺序启动Virtual IP、IPVS和Ldirectord。
切换到standby模式时,按顺序关闭Ldirectord、IPVS和Virtual IP。

HeartBeat串口线连接测试方法:
在Load Balancer上:cat < /dev/ttyS0
在Backup上:echo hello >; /dev/ttyS0
在VMWare上设置串口的时候一端做server,一端做client即可

1 修改主机名(/etc/hosts):

127.0.0.1         localhost.localdomain localhost
192.168.136.11    loadbalancer
192.168.136.12    backup

2 安装
groupadd -g 694 haclient
useradd -u 694 -g haclient hacluster

wget http://www.packetfactory.net/libnet/dist/libnet.tar.gz
tar zxf libnet.tar.gz
cd libnet
./configure
make
make install

wget http://www.linux-ha.org/download/heartbeat-1.99.4-tar.gz
tar zxf heartbeat-1.99.4.tar.gz
cd heartbeat-1.99.4
./ConfigureMe configure --disable-swig --disable-snmp-subagent
make
make install
cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
cp ldirectord/ldirectord.cf /etc/ha.d/

chkconfig --add heartbeat
chkconfig --del ldirectord 

 

相关配置文件
haresources
#
rhel4u2 IPaddr::192.168.1.9/24/192.168.1.255 ipvsadm ldirectord

ha.cf

vip
/sbin/ifconfig lo:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up
/sbin/route add -host 192.168.1.9 dev lo:0
echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 >/proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

 

#失效无用连接
echo 1 > /proc/sys/net/ipv4/vs/expire_nodest_conn


FAQ
1 cookie时间,即在线问题 加-p选项

an:

-p选项,是设置保持cookie的一个持续时间.
也就是 客户机 > 转发器 > real server 持续的时间.
这个时间内,某台机所有连接,都是指向前一个已建立过的连接上.

但在设置了-p选项后,在
转发器>real server间还有一个持续时间(为1分钟)

也就是说,在设置了-p选项后
转发器 > real server 的连接时间为 1分钟加上-p设置的时间


在这个时间内,假如某real server挂了,ld是能检测出问题,并且在转发规则里把它的权值改为0
但在上面的前提下,所有之前与这台real servel有连接过的客户机,在这个时间内(1分钟+P设置的时间),仍然会继续往这台机上转发
问题也就出现了.


如果倘若不设置-p选项,在转发器上,会维护着客户机与每一个real server 的连接状态

 

 

ha的一些资料

多个节点,只要还有一个节点,服务就能继续...
而且增加了资源监控,如IP失效了会自动恢复...

如果是2.0,简单的可以这样配,以三个节点为例
1.三个节点都装上heartbeat 2.0.0.0.
2.把三个节点都加到ha.cf里,然后在ha.cf里加上"crm 1"
3.然后用/usr/lib/heartbeat/cts/haresources2cib.py 把原来的/etc/ha.d/haresources 转换成 /var/lib/heartbeat/crm/cib.xml.
"/usr/lib/heartbeat/cts/haresources2cib.py haresources >;/var/lib/heartbeat/crm/cib.xml"
4.把haresources清空
5.启动三台计算机的heartbeat.

2.0用cib替代了haresources.
http://www.linux-ha.org/ClusterInformationBase_2fUserGuide

2.0里面没有工作节点和备份节点之分,资源在哪里个节点运行,失效后可以在哪些另外的节点运行等的都是cib.xml(资源配置文件)里规定的.

2.0里面基本没有活动-备份的概念,换句话说,cib.xml中你可以指定一个服务在不同机器上跑的权重,甚至禁止某个服务在某个机器上跑,等等。各个节点都是平等的。运行时,heartbeat2会根据当前的情况,计算出那里是运行服务的最佳机器。如果你把所有服务的最佳运行节点都设到一台机器,那就相当于一个跑服务,两个备份,如果你把服务配到两个节点,留一个节点空着,那就相当于两个跑服务,一个备份。
CRM, Cluster Resouce Manager, 用于在cluster计算管理资源。开启了它,就开启了2.0的新功能

HA的概念和1.x的配置:
http://www-128.ibm.com/developerworks/cn/linux/l-halinux/index.html
2.x的概念和基本配置:
http://www.linux-ha.org/GettingStartedV2
2.x的资源配置的详细介绍:
http://www.linux-ha.org/ClusterInformationBase_2fUserGuide

这个中文的介绍挺好的,不过是1.x的,不过概念都一样。
http://www-128.ibm.com/developerworks/cn/linux/l-halinux/index.html

 

LVS的官方网站

http://www.linuxvirtualserver.org/zh/lvs1.html

http://zh.linuxvirtualserver.org/ 论坛讨论区

 

注:本文档是06年底作测试时的笔记.但测试完后,没作整理.现在才发觉,所以,有一些是现在加上的,如有错误或不足之处,请指出或提出意见.谢谢

 

Tags: lvs负载均衡

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):