RHEL4+HA+LVS+ldirectord
实现负载均衡加备份
1、 配置IP地址(eth0:192.168.100.1,eth1:172.16.0.1)
主机名(test1.dlli.com)
2、 安装和配置HA(heartbeat)
RHEL4+HA+LVS+ldirectord_第1张图片
 
(1)先安装libnet
./configure
make
make install
(2)安装HA
添加用户和组
groupadd -g 694 haclient
useradd -u 694 -g haclient hacluster
安装
./ConfigureMe configure
make
make install
拷贝配置文件到/etc/ha.d下:

 
(3)配置主配置文件(/etc/ha.d/ha.cf)
做如下修改
logfile /var/log/ha-log  #指名heartbeat的日志存放位置
ucast   eth1  172.16.0 .2(对端eth1上的IP)#指明心跳方式使用单播方式,并且是在eth1接口上进行。
logfacility local0
keepalive 2  #指明心跳时间为2秒(即每两秒钟在eth1上发送一次广播)。
deadtime 30  #指定在30秒内没有心跳信号,则立即切换服务。
warntime 10  #指明心跳延迟的时间为十秒。当10秒钟内备份机不能联系上主机(当前活动的服务器,即无心跳信号),就会往日志中写入一个警告日志,但此时不会切换服务。
initdead 120 #在有些系统上,系统启动后要过一段时间网络才正常工作,这个是时间来解决这种情况产生的时间间隔,此值到少是deadtime的两倍。
udpport 694 #使用端口 694 作为广播和单播连接的端口.
auto_failback on  # 当主节点恢复后,是否自动切回
node test1.dlli.com  #主控机host名
node test2.dlli.com #备用机host名
# 默认heartbeat并不检测除本身之外的其他任何服务,也不检测网络状况,所以当网络中断时,并不会进行Load Balancer和Backup之间的切换,可以通过ipfail插件,设置‘ping nodes’来解决这一问题
ping_group group1 172.16.0.2 172.16.0.2 #一般主控机IP放到备份机IP之前
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
保存时强制保存退出(:wq!)。
(4)配置资源文件(/etc/ha.d/haresources):
test1.dlli.com 192.168.100.254  ipvsadm  ldirectord
设置test1.dlli.com为主节点,集群服务器的ip地址为192.168.100.254 集群的服务有ipvsadm ldirectord
(5)认证文件(/etc/ha.d/authkeys),选取一种认证方式,这个文件的权限必须是600
auth 1
1 crc
chmod 600 /etc/ha.d/authkeys
3、 安装配置LVS
(1)安装LVS
cd ipvsadm-1.24
ln -s /usr/src/kernels/2.6.9-5.EL-i686 /usr/src/linux
make
make install
(2)配置ipvsadm主配置文件(/etc/sysconfig/ipvsadm)
vi /etc/sysconfig/ipvsadm
-C                                   #清除ipvsadm缓存
-A -t 192.168.100.254:80 -s wlc           #添加虚拟IP 80端口服务
-a -t 192.168.100.254:80  -r 192.168.100.3:80  -g -w 1 
-a -t 192.168.100.254:80  -r 192.168.100.4:80  -g -w 1   #添加参与80端口负载的真实机192.168.100.3和192.168.100.4
4、配置Ldirectord
Ldirectord的作用是监测Real Server,当Real Server失效时,把它从Load Balancer列表中删除,恢复时重新添加,在安装heartbeat时已经安装了Ldirectord。
配置(/etc/ha.d/ldirectord.cf):
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:80
autoreload=yes
#logfile="/var/log/ldirectord.log"
#logfile="local0"
quiescent=yes
virtual=192.168.100.254 :80
 real=192.168.100.3:80 gate
 real=192.168.100.4:80 gate
#fallback=127.0.0.1:80 gate
service=http
#request="index.html"
 #receive="Test Page"
 #virtualhost=some.domain.com.au
scheduler=wlc
#persistent=600
#netmask=255.255.255.255
protocol=tcp
5、修改/etc/hosts
把两相节点的主机名解析成IP
192.168.100.1     test1.dlli.com      test1
192.168.100.2    test2.dlli.com  test2
到此主控机就完成了
如用虚拟机做,可以做好一台克隆出备份机使用同样的方法配置节点2,备份节点192.168.100.2上的Lvs配置完全相同,heartbeat的配置与节点1要基本相同。
改动如下:
在/etc/ha.d/ha.cf文件中这句ucast  eth1 172.16.0 .1的IP是对端的eth1上的IP
主机名要改为test2.dlli.com
Eth0的IP改为192.168.100.2
Eth1的IP改为172.16.0.2
6、在主控机和备份机上启动HA服务(注:如果使用客隆方式要把备份机配置完成后再把两台机器上的heartbeat启动)
service heartbeat start
7、检测
ipvsadm
8、真实机的配置
(1)配置eth0的ip:192.168.100.3
配置lo:0的ip:192.168.100.254/32
ifconfig eth0 192.168.100.3
ifconfig lo:0 192.168.100.254 netmask 255.255.255.255
设置路由:
route add –host 192.168.100.254 dev lo:0
(2)vi /etc/sysctl.conf
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
#echo 这四句目的是为了关闭ARP广播响应
sysctl –p   #立即生效。
(3)配置网页服务
创建主网文件:
Vi /var/www/html/index.html
启动网页服务:
Service httpd start
9、测试:
在客户端打开IE输入 [url]http://192.168.100.254[/url]
看到网页就正确了。