2012年(21)
分类: LINUX
2012-11-08 08:59:00
apt-get update
echo master >/etc/hostname
hostname master
如果使用现有的主机名,则跳过此配置
ha.cf
ha.cf是heartbeat的配置文件
crm on
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 500ms
deadtime 10
warntime 5
initdead 30
udpport 694
ucast eth1 192.168.11.189 # Linux
auto_failback off
node master
node slave
#debug 1
respawn root /usr/lib/heartbeat/pingd -m 100 -d 4s -a pingd
EOF
ucast eth1为在哪个网卡接口上配置心的跳发送和接受,eth1为网卡接口名。此处需要用绞叉线在master和slave的在eth1的端口进行串联。或者使用ucast eth1 IPaddres 参数,此处的Ipadreess 在master上此处为slave的IP,在slave上位master的IP.ucast 为单播,bcast为组播。
Node指定HA成员节点的主机名。一般为业务的业务的名称,如SMS-1,SMS-2
Keepalive 心跳发送频率,默认为秒。
Warntime 警告时间,默认为秒。
Deadtime 资源失效或宕机的时间,默认为秒。
Auto_failback 当master宕机后恢复回来,是否将资源切回master上。Off为不切回。
debug 最好不要打开debug日志,因为此日志非常大。如果为了测试可以开启debug日志,等测试完成后再将参数注销,重启heartbeat。
ping 192.168.11.254 监测网络状态,192.168.11.254为外网网关,heartbeat会不断地ping网关,当发现网关不通后,就会认为当前网络出现故障。在结合cib.xml中的配置会自动降级到slave状态。
Crm on 开启heartbeat的crm模式,此模式的相关信息:
cat > /etc/ha.d/authkeys <
auth 3
3 md5 Hello!
EOF
chmod 600 /etc/ha.d/authkeys
HA认证加密模式,本手册采用md5加密方式。
haresources文件
master 192.168.11.251 资源名
EOF
master 是主机名,192.168.11.252为虚拟IP也就是VIP,资源名为监控资源的名称,是个可执行的脚本文件。需要是LSB或者ocf风格的脚本,此脚本的特点就是脚本跟status和monitor 参数,实现监控服务是否在工作,如果不在则返回大于0的状态码。
本手册使用tomcat作为heartbeat需要监控的资源,heartbeat通过tomcat_sms.sh对tomcat进行管理(启动、关闭、监控)。上面配置的资源名实际就是tomcat_sms.sh,为了方便后续的配置,假设此脚本已经编写完成,为ocf格式,存放在/usr/lib/ocf/resource.d/heartbeat/目录下。
示例:tomcat_sms.sh
master 192.168.11.251 tomcat_sms.sh
haresources文件支持多行,每一行为一个监控资源组。例如:
master 192.168.11.251 tomcat_sms.sh
slave 192.168.11.252 mailserver.sh
这样在HA的master主机上运行tomcat_sms.sh资源,而在slave主机上运行着mailserver.sh资源,这样可以最大限度的发挥主机的性能。
资源名 监控脚本
此脚本是/etc/ha.d/haresources里定义的脚本(资源名),本手册中示例为:tomcat_sms.sh,通过此脚本可管理SMS业务的启动、关闭、监控。Heartbeat有3总脚本风格,分别为ocf、lsb和heartbeat。Heartbeat调用ocf风格的脚本都放置在/usr/lib/ocf/resource.d/heartbeat/下。Tang部署的平台的heartbeat都是用ocf风格的脚本格式。
并赋予脚本执行权限。
Heartbeat: /etc/ha.d/resource.d/
Ocf: /usr/lib/resource.d/heartbeat/
Lsb: /etc/init.d/
cib.xml文件
/usr/lib/heartbeat/haresources2cib.py
cib.xml
修改crm监控资源的间隔,本手册采用的是每个7秒查看一次资源是否正常,如果5秒脚本没有执行结束,将超时并且heartbeat将资源切到slave上。此处间隔时间和超时根据业务的需要进行设置。
sed -i -e '/default-resource-stickiness/ s:value="0":value="100":g' /var/lib/heartbeat/crm/cib.xml
#sed -i -e '/default-resource-failure-stickiness/ s:value="0":value="-100":g' /var/lib/heartbeat/crm/cib.xml
当主机宕机后恢复,是否将资源切回主机上。此设置为不切回。Heartbeat使用了一个负责的故障切换策略。详情请见:http://steven1981.itpub.net/post/7967/494028
sed -i -e 's:class="lsb":class="ocf":g' /var/lib/heartbeat/crm/cib.xml
将管理资源的脚本设置为ocf脚本格式,因为heartbeat默认使用这个脚本来管理资源(启动、关闭、监控运行状态。。),此值修改的tomcat_sms.sh脚本的配置。这步不是需要做的。
sed -i -e 's:primitive class="heartbeat" id=:primitive class="ocf" id=:g' /var/lib/heartbeat/crm/cib.xml
如果资源脚本的脚本类型为heartbeat需要修改成ocf或者lsb,这样heartbeat才能使用它。
chown -R hacluster:haclient /var/lib/heartbeat
ln -s /usr/lib/ocf/resource.d/ /resource.d
向cib.xml文件中的
attribute="pingd" operation="not_defined"/>
attribute="pingd" operation="lte" value="0"/>
监控网络状态,当发现网络故障后,自动将自己降级为slave。
如果heartbeat监控多个资源组,在此处的配置也需要相应的改变,需要配置多个
attribute="pingd" operation="not_defined"/>
attribute="pingd" operation="lte" value="0"/>
attribute="pingd" operation="not_defined"/>
attribute="pingd" operation="lte" value="0"/>
截断
默认的heartbeat的日志是按周截断的,需要修改成按天截断,修改成如下:
/etc/logrotate.d/heartbeat
/var/log/ha-debug {
missingok
rotate 7
daily
compress
}
/var/log/ha-log {
Missingok
rotate 7
daily
compress
}
被监控的资源的启动关闭都是由heartbeat控制的,因此需要关闭这些资源自身的自启动功能。示例:ipvsadm和ldirectord
关闭资源自启动
update-rc.d -f ldirectord remove
update-rc.d -f ipvsadm remove
heartbeat
由于heartbeat默认安装后是启动的,经过修改后的heartbeat需要先关闭,或者直接使用kill -9强制杀手
/etc/init.d/heartbeat stop
/etc/init.d/heartbeat start
/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}