系统环境: rhel6 x86_64 iptables and selinux disabled

主机: 192.168.122.119 server19.example.com

192.168.122.25 server25.example.com

192.168.122.163 server63.example.com

192.168.122.193 server93.example.com

所需的包:heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm ldirectord-3.9.2-1.2.x86_64.rpm


Realserver1 192.168.122.163:apache

Realserver2 192.168.122.193:apache

Load Balance 192.168.122.119:heartbeat apache

Load Balance 192.168.122.25:heartbeat apache


#配置 Load Balance

以下步骤在server19server25上实施:

[root@server19 kernel]# yum localinstall heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm ldirectord-3.9.2-1.2.x86_64.rpm -y

[root@server19 kernel]# yum install perl-IO-Socket-INET6 ipvsadm -y

[root@server19 ha.d]# modprobe softdog

[root@server19 ha.d]# echo modprobe softdog >> /etc/rc.d/rc.local

[root@server19 ha.d]# yum install httpd -y

[root@server19 ha.d]# echo `hostname` > /var/www/index.html

[root@server19 ha.d]# /etc/init.d/httpd stop

 

以下步骤在server19server25上实施:

[root@server19 kernel]# cd /usr/share/doc/heartbeat-3.0.4/

[root@server19 heartbeat-3.0.4]# cp authkeys haresources ha.cf /etc/ha.d/

注:这三个配置文件可以通过rpm -q heartbeat -d 查看其位置

[root@server19 heartbeat-3.0.4]# cd /usr/share/doc/packages/ldirectord/

[root@server19 ldirectord]# cp ldirectord.cf /etc/ha.d/

注:这个配置文件可以通过rpm -q ldirectord -d 查看其位置

[root@server19 ldirectord]# cd /etc/ha.d/


#配置/etc/ha.d/authkeys

[root@server19 ha.d]# vim authkeys

auth 3

#1 crc

#2 sha1 HI!

3 md5 Hello! (去掉注释)

[root@server19 ha.d]# chmod 600 authkeys

认证文件(/etc/ha.d/authkeys),文件的权限必须是 600

 

#配置/etc/ha.d/ha.cf

[root@server19 ha.d]# vim ha.cf

debugfile /var/log/ha-debug (去掉注释)

调试日志文件文件,取默认值

logfile /var/log/ha-log (去掉注释)

系统运行日志文件,取默认值

logfacility local0

日志等级,取默认值

keepalive 2(去掉注释)

心跳频率,自己设定。1:表示 1 ;200ms:表示 200 毫秒

deadtime 30(去掉注释)

节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡,自己设定

warntime 10 (去掉注释)

发出警告时间,自己设定

initdead 120 (去掉注释)

守护进程首次启动后应该等待 120 秒后再启动主服务器上的资源

udpport 694 (去掉注释)

心跳信息传递的 udp 端口,使用端口 694 进行 bcast ucast 通信,取默认值

bcast eth0 (去掉注释)

采用 udp 广播播来通知心跳

auto_failback on

当主节点恢复后,是否自动切回

watchdog /dev/watchdog (去掉注释)

watchdog 能让系统在出现故障 1 分钟后重启该机器,这个功能可以帮助服务器在确实停止心 跳后能够重新恢复心跳

node server19.example.com

主节点名称,uname --n 保持一致.排在第一的默认为主节点,所以不要搞措顺序

node server25.example.com

副节点名称,uname --n 保持一致

ping 192.168.122.1

respawn hacluster /usr/lib64/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。 所以当网络中断时,并不会进行 Load Balancer Backup 之间的切换。 可以通过 ipfail 插件,设置'ping nodes'来解决这一问题,但不能使用一个集群节点作为 ping 的节点.


#配置/etc/ha.d/haresources

[root@server19 ha.d]# vim haresources

server19.example.com IPaddr::192.168.122.178/24/eth0 ldirectord httpd

:192.168.122.178为虚拟IP

这个文件中定义了实现集群所需的各个软件的启动脚本,这些脚本必须放在/etc/init.d 或者 /etc/ha.d/resource.d 目录里 IPaddr 的作用是启动 Virutal IP,它是 HeartBeart 自带的一个 脚本.ldirectord 的作用是启动 ldirectord 监控程序,它会使 ldirectord.cf 中定义的 lvs 生效, 并监听其健康状;httpd apache 服务的启动脚本。


#配置/etc/ha.d/ldirectord.cf

[root@server19 ha.d]# vim ldirectord.cf

# Sample for an http virtual service

virtual=192.168.122.178:80 虚拟IP:服务端口

real=192.168.122.163:80 gate realserver:服务端口

real=192.168.122.193:80 gate realserver:服务端口

fallback=127.0.0.1:80 gate realserver全挂掉后,由调度器上的服务来提供服务

service=http 服务名

scheduler=rr 算法

#persistent=600 持续连接时间

#netmask=255.255.255.255

protocol=tcp

checktype=negotiate

checkport=80 检测端口

request="index.html" 检测有无inde.html测试页

# receive="Test Page" 检测测试页中的内容

# virtualhost=www.x.y.z


[root@server19 ha.d]# scp authkeys ha.cf haresources ldirectord.cf root@192.168.122.25:/etc/ha.d/


#配置Realserver

以下步骤在server63上实施:

[root@server63 ~]# yum install arptables_jf httpd -y

[root@server63 ~]# arptables -A IN -d 192.168.122.178 -j DROP

[root@server63 ~]# arptables -A OUT -s 192.168.122.178 -j mangle --mangle-ip-s 192.168.122.163

[root@server63 ~]# /etc/init.d/arptables_jf save


[root@server63 ~]# ifconfig eth0:0 192.168.122.178 netmask 255.255.255.255 up

[root@server63 ~]# ip addr add 192.168.122.178 dev eth0

注:可用ip addr show查看


[root@server63 ~]# echo `hostname` > /var/www/html/index.html

[root@server63 ~]# /etc/init.d/httpd start

 

以下步骤在server93上实施:

[root@server93 ~]# yum install arptables_jf httpd -y

[root@server93 ~]# arptables -A IN -d 192.168.122.178 -j DROP

[root@server93 ~]# arptables -A OUT -s 192.168.122.178 -j mangle --mangle-ip-s 192.168.122.193

[root@server93 ~]# /etc/init.d/arptables_jf save


[root@server93 ~]# ifconfig eth0:0 192.168.122.178 netmask 255.255.255.255 up

[root@server93 ~]# ip addr add 192.168.122.178 dev eth0

注:可用ip addr show查看


[root@server93 ~]# echo `hostname` > /var/www/html/index.html

[root@server93 ~]# /etc/init.d/httpd start


#启动

以下步骤在server19server25上实施:

[root@server19 ha.d]# /etc/init.d/heartbeat start


测试

访问192.168.122.178反复刷新页面,如果页面在server63server93直接来回切换,说明正常。

:server63server93上的apache服务关闭后,访问的将是调度器上的apache页面,如果调度器上的apache也关闭,将无法访问到页面.当一台调度器宕掉后,另一台调度器会接管,发挥调度的作用(即调度器之间实现了高可用)

posted on 2014-09-30 16:59  ↗℡.Koen↘  阅读(238)  评论(0编辑  收藏  举报