系统环境: rhel6 x86_64 iptables and selinux disabledhtml
主机: 192.168.122.119 server19.example.com node
192.168.122.25 server25.example.comlinux
192.168.122.163 server63.example.com算法
192.168.122.193 server93.example.com apache
所需的包: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.rpmvim
Realserver1 192.168.122.163:apacheapi
Realserver2 192.168.122.193:apache服务器
Load Balance 192.168.122.119:heartbeat apache网络
Load Balance 192.168.122.25:heartbeat apachetcp
#配置 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也关闭,将没法访问到页面.当一台调度器宕掉后,另外一台调度器会接管,发挥调度的做用(即调度器之间实现了高可用)