系统环境: 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

以下步骤在server19和server25上实施:

[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

 

以下步骤在server19或server25上实施:

[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


#启动

以下步骤在server19和server25上实施:

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


测试

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

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

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