- 论坛徽章:
- 0
|
以前做的一些东西,也不知道你用得上用不上.内部资料,所以不是很详细.但配置是一定可以成功的.try it ~~MSN:jason_wangxu@hotmail.com,多多交流.
Lvs+heartbeat
Load Balancer是整个集群系统的前端,负责把客户请求转发到Real Server上。
Backup是备份Load Balancer,当Load Balancer不可用时接替它,成为实际的Load Balancer。
Load Balancer通过Ldirectord监测各Real Server的健康状况。在Real Server不可用时把它从群中剔除,恢复时重新加入。
IPVS是LVS集群系统的核心软件,它的主要作用是:
安装在Load Balancer上,把发往Virtual IP的请求转发到Real Server上。
IPVS安装主要包括几个方面:
在Load Banlancer上安装IPVS内核补丁 (2.6内核以上已经包括)
在Real Server上安装ARP hidden内核补丁 (2.6内核以上已经包括)
在Load Banlancer上安装IPVS管理软件ipvsadm-1.24.tar.gz
安装heatbeat前必须先安装libnet包,libnet提供了一些高层的api(就是应用程序编程接口)
下载地址:http://www.packetfactory.net/libnet/ 稳定版本是:1.1.2.1
e2fsprogs是一个磁盘管理工具,这里说需要安装但不知道有什么用(知道的提个醒)
heartbeat 心跳监测
如果机器不够用,可以考虑充分利用资源可以将上面的备机也做为一个realserver的服务器,但如果有则就不需要这样做了.
二 各种模式详解:
1.Virtual server via NAT(VS-NAT缓存在前调度在后)radware
Virtual Server via NAT方法的最大优点是集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。这种实现方法的最大的缺点是扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。
2.Virtual server via IP tunneling(VS-TUN)
基于IP隧道模式Lvs集群,负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。但是,这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议,我仅在Linux系统上实现了这个。
3.Virtual Server via Direct Routing(VS-DR调度在前缓存在后)LVS
就象VS-TUN一下,在VS-DR方式下,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。这种方式能够大大提高Virtual Server的可扩展性。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,但它要求负载均衡器的网卡必须与物理网卡在一个物理段上。
我们这里使用DR模式+HA模式
配置基于DR模式Lvs集群
环境描述:本文在配置LVS时使用5台linux,一台做Directorserver(192.168.0.25) ,3台做realserver(192.168.0.127 192.168.0.128,192.168.0.129),在配置lvs+heartbeat时又添加了一台(192.168.0.126)做为备份主节点,虚拟VIP:192.168.0.100
可以编译也可以用novell 公司的集群套件rpm包.
heartbeat-2.0.4-1.el4.i386.rpm
heartbeat-ldirectord-2.0.4-1.el4.i386.rpm
heartbeat-pils-2.0.4-1.el4.i386.rpm
heartbeat-stonith-2.0.4-1.el4.i386.rpm
ipvsadm-1.24-5.i386.rpm
libnet-1.1.2.1-1.rh.el.um.1.i386.rpm
perl-Authen-SASL-2.08-1.rh.el.um.1.noarch.rpm
perl-Convert-ASN1-0.18-1.rh.el.um.1.noarch.rpm
perl-Crypt-SSLeay-0.51-4.rh.el.um.1.i386.rpm
perl-Digest-HMAC-1.01-13.noarch.rpm
perl-Digest-SHA1-2.07-5.i386.rpm
perl-IO-Socket-SSL-0.96-1.rh.el.um.1.noarch.rpm
perl-ldap-0.3202-1.rh.el.um.1.noarch.rpm
perl-libnet-1.19-3.noarch.rpm
perl-Mail-IMAPClient-2.2.9-1.rh.el.um.1.noarch.rpm
perl-modules-5.8.5-3.i386.rpm
perl-Net-DNS-0.48-1.i386.rpm
perl-Net-SSLeay-1.25-3.2.el4.rf.i386.rpm
perl-Parse-RecDescent-1.94-1.rh.el.um.1.noarch.rpm
perl-XML-NamespaceSupport-1.08-1.rh.el.um.1.noarch.rpm
perl-XML-SAX-0.12-1.rh.el.um.1.noarch.rpm
这是几个重要的文件,一会儿做配置详解。还有就是大家有时间就把每个文档里的readme 看一下很有,全是英文又太多翻译的不准所以这里没有贴出来。
cp /usr/share/doc/heartbeat-2.0.4/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.0.4/haresources /etc/ha.d/
cp /usr/share/doc/hearthbeat-2.0.4/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-ldirectord-2.0.4/ldirectord.cf /etc/ha.d/
三 配置文件详解
l Ip_forward开启路由(本试验在一个子网中,不需要这个功能)
l 配置hosts,
l 配置HA之间的认证机制
l 配置HA
l 配置HA的资源
l 配置IPVS调度
1. more /etc/hosts
192.168.0.25 director1
192.168.0.126 director2(备机)
192.168.0.127 serverA
192.168.0.128 serverB
192.168.0.129 serverC
192.168.0.100 www.aliang.com
所有主机hosts必须相同
2./etc/ha.d/authkeys (关于认证信息)
auth 3 #选的第几个号开头的就写几
#1 crc
#2 sha1 HI!
3 md5 Hellocaixun! #选取的主要md5认证方式的。
认证文件,选取一种认证方式,这个文件的权限必须是600。
Director1 与director2的配置必须相同
3./etc/ha.d/haresources (资源配置文件)
这个文件指定同步的服务以及主机是什么。两台机器上的这个文件一定要一致。
例:direct1 IPaddr2:192.168.0.100/eth0 \
ldirectord::ldirectord.cf LVSSyncDaemonSwap::master
主机名 IP地址 高可用性服务启动脚本
4./etc/ha.d/ha.cf (主要配置文件)
logfile /var/log/ha-log #日志存放路径
logfacility local0 #说明:日志等级,取默认值
keepalive 2 #心跳间隔时间为2秒
deadtime 10 #指定等待声明主机死机的时间
#warntime 10 #写入日志的警报时间
initdead 60 #该参数指定heartbeat首次启动时deadtime应该为多久。因为当heartbeat在引导时启动时,还需要给网络启动留出时间,所以这个时间要设得长一些。
udpport 694 #该参数指定heartbeat发送UDP包时所使用的端口
#baud 19200 #该参数串口通讯的波特率
#serial /dev/ttyS0 #该参数指定在心跳线接在哪一个串口上。
#bcast eth0 eth1 #广播地址
ucast eth0 192.168.0.126 #监听心跳服务器的IP为对方邻居IP
auto_failback on #启动切换功能
use_logd yes #后台运行日志
node director1 #该参数告诉 heartbeat 使用哪些主机。节点名的正确性是非常重要的。节点名应与命令uname -n所显示的名称一致。
node director2
####二台LVS配置必需相同 (只需修改ucast eth0 192.168.0.25)
5、/etc/ha.d/ ldirectord.cf
Ldirectord的作用是监测Real Server,当Real Server失效时,把它从Load Balancer列表中删除,恢复时重新添加
checktimeout=10 超时
checkinterval=30 检测间隔
#fallback=127.0.0.1:80
autoreload=yes realserver恢复时自动载入
logfile="/var/log/ldirectord.log"
#logfile="local0"
quiescent=yes
# A sample virual with a fallback that will override the gobal setting
virtual=192.168.0.100:80
real=192.168.0.127->192.168.0.129:80 gate
fallback=127.0.0.1:80 gate
service=http
request="vip100.html"
receive="vip100"
# virtualhost=some.domain.com.au
virtualhost=www.aliang.com
scheduler=rr
# persistent=600
#netmask=255.255.255.255
protocol=tcp
说明:
virtual=192.168.0.100:80设置虚拟IP地址和应用端口
real=192.168.0.127->192.168.0.129:80 gate设置真实服务器地址范围,直接路由模式
service=http真实服务器的检测服务类型
request="vip100.html"请求真实服务器的检测页面
receive="vip100"应该从检测页面返回的字符串,如果相同说明真实服务器功能正常
不同的VIP,其检测页面名不能相同。
virtualhost=www.aliang.com设置VIP对应的域名
scheduler=rr设置调度策略,rr为轮询,wrr,wlc wlc lblc lblcr dh sh sed nq
persistent=600会话保持时间,单位秒
#netmask=255.255.255.255客户端地址掩码, 默认255.255.255.255
protocol=tcp应用服务协议tcp
realserver端配置
l 配置启用loopback接口地址arp 不响应请求
l 配置vip100.html
四u 配置loopback接口地址arp不响应请求
编辑/etc/sysctl.conf, 添加:(真实服务器不响应VIP)
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
/etc/sysconfig/network-scripts/ifcfg-eth0:100
DEVICE=lo:100
IPADDR=192.168.0.100
NETMASK=255.255.255.255
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
ONBOOT=yes
NAME=loopback
配置多个vip,就配置多个回环网卡
配置/var/www/html/vip100.thml
内容:vip100
启动apache测试
Service httpd start,然后在页面上就可以看到vip100字样。
实验测试:
真实服务器serverA
serverA touch /var/www/html/index.html
echo “this is serverA!!!” > /var/www/html/index.html
真实服务器serverB
touch /var/www/html/index.html
echo “this is serverB!!” > /var/www/html/index.html
真实服务器serverC
touch /var/www/html/index.html
echo “this is serverC!!” > /var/www/html/index.html
测试结果,当访问http://192.168.0.100/时,刷新页面会出现 this is serverA /this is serveB /this is serverC 内容跳转 |
|