安装
  yum –y install heartbeat libnet
配置
  通过yum安装配置文件目录/etc/ha.d目录下没有配置文件需要从doc目录中复制三个文件.ha.cf.authkeys.haresources
  

  ha.cf

#debugfile /var/log/ha-debug #用于记录 heartbeat 的调试信息,这里不开启
logfile /var/log/ha-log #指名heartbeat的日志存放位置。
logfacility local0 #如果未定义上述的日志文件,那么日志信息将送往local0(对应的#/var/log/messages),如果这 个日志文件都未定义,那么 heartbeat 默认情况下 将在/var/log 下建立 ha-debug 和 ha-log 来记录 相应的日志信息。
bcast eth1 #指明心跳使用以太网广播方式,并且是在eth1接口上 进行 广播。
keepalive #发送心跳报文的间隔,默认单位为秒,如果你毫秒为单位, 那么需要在后面跟 ms 单位,如 1500ms 即代表 .5s
deadtime #指定若备用节点在30秒内没有收到主节点的心跳信 号,则立即接管主节点的服务资源。
warntime #指定心跳延迟的时间为10秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一 个警告日志,但此时不会切换服务。发出最后的心跳 警 告 信息的间隔。
initdead #在某些系统上,系统启动或重启之后需要经过一段时 间 网络才能正常工作,该选项用于解决这种情况产生 的时 间间隔。取值至少为deadtime的两倍。
udpport #设置广播/单播通信使用的端口,694为默认使用的端口号
#baud #设置串行通信的波特率。这里不启用
#serial /dev/ttyS0 #选择串行通信设备,用于双机使用串口线连接的情 况。如果双机使用以太网连接,则应该关闭该选 项。
#ucast eth0 192.168.60.132 #采用网卡eth0的udp单播来组织心跳,后面跟的
IP地址应为双机对方的IP地址。
#mcast eth0 225.0.0.1 #采用网卡eth0的Udp组播来组织心跳,如果采用组 播通讯,在这里可以设置组播通讯所使用的接口,绑定 的组播 ip 地#址(在 224.0.0.0 - 239.255.255.255 间),通讯端口,ttl(time to live)所能经过路由的跳数,是否允许环回(也就是本地发出的数据包时候还接收) 一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和组播,是组织心跳的三种方式,任选其一即可。
auto_failback off #用来定义当主节点恢复后,是否将服务自动切回。如 果不想启用,请设置为off,默认为on。heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点;如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点。
#stonith baytech /etc/ha.d/conf/stonith.baytech #stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。
#watchdog /dev/watchdog #该选项是可选配置,是通过Heartbeat来监控系统的 运行状态。使用该特性,需要在内核中载入"softdog" 内核模块,用来生成实际的设备文件,如果系统中没 有这个内核模块,就需要指定此模块,重新编译内 核。编译完成输入"insmod softdog"加载该模块。 然后输入"grep misc /proc/devices"(应为10),输 入"cat /proc/misc |grep watchdog"(应为 )。最后,生成设备文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能。
node node1 #主节点主机名,可以通过命令"uanme -n"查看。
node node2 #备用节点主机名。 理解:这里部分主备,需要把所有集群主机全部列出
ping 192.168.60.1 #选择ping的节点,ping节点选择的越好,HA集群就 越强壮,可以选择固定的路由器作为ping节点,或者 应用服务器但是 最好不要选择集群中的成员作为ping 节点,ping节点 仅仅用来测试网络连接。如果指定了多个ping节点如
ping 192.168.0.1 192.168.0.2
那么只有当能ping通所有ping节点 时才认为网络是连通的,否则则认为不连通
#ping_group group1 172.16.103.254 172.16.103.212 #ping_group就是同时ping 多个ip,只有所有的ip都无法ping通时,ipfail才会执 行切换的动作,保证了不会是因为被ping的ip出了问 题而产生误切换。 注意,ping_group不能和ping 同时使用
respawn hacluster /usr/lib/heartbeat/ipfail #该选项是可选配置, 意思 是以 hacluster 这 个用户身份运行/usr/lib/heartbeat/ ipfail 这个 插件 respawn列出与heartbeat一起启动和关闭的 进 程,该进程一般是和heartbeat集成的插件,这些 进程遇到故障可以自动重新启动。最常用的进程是 ipfail,此进程用于检测和处理网络故障,需要配合 ping或者ping_group语句,其中指定的ping node 来检测网络的连通性。在v2版本中,ipfail和crm有 冲突,不能同时使用,如果启用crm的情况下,可以 使用pingd插件代替ipfail
apiauth ipfail gid=haclient uid=hacluster #指定对客户端 api 的访问控制,缺省为不可 访问,这里指定了 有权限访问 ipfail用户和组。 apiauth的语法如下
apiauth apigroupname [uid=uid1,uid2 ...] [gid=gid1,gid2 ...]
示例
apiauth ping gid=haclient uid=alanr,root
在指定api访问权限时,可以指定具有访问权限的组或者用户,也可以同时指定组和用户。当进行同时指定时,只要用户是所指定的组或者用户中的其中一员即可访问api库。
也可以配置api默认用户组,命令如下
apiauth default gid=haclient
当配置了默认用户组时,其他所有api授权命令失效且该用户组中的成员可以访问任何api库
如果不在ha.cf文件指定api库的访问权限,则默认的访问权限如下
service default apiauth
ipfail uid=hacluster
ccm gid=haclient
ping gid=haclient
cl_status gid=haclient
lha-snmpagent uid=root
crm uid=hacluster
#crm respawn #是否开启Cluster Resource Manager(集群资源 管 理)功能这里不开启。 注意这里,还可以使用crm on或者 crm yes的写法,有些文档上说crm on的写 法如果cib.xml文件配置错误,会导致heartbeat重 启服务器 , 这点笔者没有遇到过,请读者自行尝试 。 注 意,当使用crm时,默认会自动使用下列命令
apiauth stonithd uid=root
apiauth crmd uid=hacluster
apiauth cib uid=hacluster
respawn hacluster ccm
respawn hacluster cib
respawn root stonithd
respawn root lrmd
respawn hacluster crmd
关于上述命令,和ipfail插件命令的意义相同,这里不再赘述
#autojoin none #该选项作用是将知道集权节点间密钥的服务器自动加入节点。autojoin有三个选项none,other,any他们各自的意义为
none:不使用autojoin功能
other:ha.cf文件中列出来的节点应自动加入集群,没有列出来的就无法自动加入集群
any:任何节点都可以自动加入集群
#hopfudge #设置串口的心跳信息最少的被转发次数,默认值为1
#deadping #设置的用来ping的节点的死亡时间,当超过该时间时则认为该节点网络无法连通,如果该值设置太小将导致系统过快的认为节点死亡。如果设置过大,则会延误系统判定时间。
#realtime off #允许/禁止实时执行将Heartbeat设置为高优先级,缺省为 on
#msgfmt classic/netstring #网线中的信息格式,可以是 classic 或 netstring
classic:利用base64库将二进制值转换为string值在网线中传输,该选项为默认选项。
netstring:在网线中直接传输二进制值,该选项由于不需要转换效率更高。
#use_logd yes/no #是否使用记录监控和日志的功能相似。虽然官方建议开启该选项,但是处于管理习惯,笔者没有开启该选项。
#conn_logd_time #如果前一个连接失败了,我们再次连接到记录监控器的间隔。
#compression bz2 #配置压缩模块它可以为 zlib 或 bz2,可以通过查看/usr/lib/heartbeat/plugins/HBcompress/目录下的文件以确定是否有相应的库。一般在CPU空闲且网络资源紧张的情况下启用该选项。
#compression_threshold #配置压缩的限度这个值决定压缩一个信息的限度,例如:如果限度为1,那么任何大于 1KB 的消息都会被压缩,缺省为2 (KB)

  haresources
  Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源,文件每一行可以包含一个或多个资源脚本名,资源之间使用空格隔  开,参数之间使用两个冒号隔开,在两个HA节点上该文件必须完全一致,此文件的一般格式为:

node-name network <resource-group>
node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。network用于设定集群的IP地址、子网掩码和网络设备标识等。需要注意的是,这里指定的IP地址就是集群对外服务的IP地址,resource-group用来指定需要Heartbeat托管的服务,也就是这些服务可以由Heartbeat来启动和关闭。如果要托管这些服务,就必须将服务写成可以通过start/stop来启动和关闭的脚步,然后放到/etc/init.d/或者/etc/ha.d/resource.d/目录下,Heartbeat会根据脚本的名称自动去/etc/init.d或者/etc/ha.d/resource.d/目录下找到相应脚步进行启动或关闭操作。
下面对配置方法进行具体说明:
node1 IPaddr::192.168.60.200//eth0/ Filesystem::/dev/sdb5::/webdata::ext3 httpd cp.sh db2::db2inst1
MyISO1 IPaddr::192.168.89.121//eth0 对于该资源来说,MyISO1是主服务器
MyISO2 IPaddr::192.168.89.122//eth0 对于该资源来说,MyISO2是主服务器
理解:这里配置一个资源,需要指定资源主服务器,其他则是备份服务器,可以指定多个资源和不同的主服务器,做到互为主备
其中,node1是HA集群的主节点,IPaddr为heartbeat自带的一个执行脚步,Heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start的操作,也就是虚拟出一个子网掩码为255.255.255.0,IP为192.168.60.200的地址。此IP为Heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口为eth0。接着,Heartbeat将执行共享磁盘分区的挂载操作,"Filesystem::/dev/sdb5::/webdata::ext3"相当于在命令行下执行mount操作,即"mount -t ext3 /dev/sdb5 /webdata",然后启动httpd,接下列执行cp.sh这个脚本文件之后以db2inst1的身份启动db2。
其中cp.sh必须放置在/etc/ha.d/resource.d/或/etc/init.d/目录中,该脚本内容如下
cp /etc/ha.d/db2nodes.cfg /home/db2inst1/sqllib/db2nodes.cfg
注意主节点和备份节点中资源文件haresources要完全一样。

  authkeys

  authkeys文件用于设定Heartbeat的认证方式,共有3种可用的认证方式,即crc、md5和sha1。3种认证方式的安全性依次提高,但是占用的系统资源也依次增加。如果    Heartbeat集群运行在安全的网络上,可以使用crc方式;如果HA每个节点的硬件配置很高,建议使用sha1,这种认证方式安全级别最高;如果是处于网络安全和系统资源之间,可  以使用md5认证方式。这里我们使用crc认证方式,设置如下:

auth
crc
# sha1 sha1_any_password
# md5 md5_any_password

需要说明的一点是:无论auth后面指定的是什么数字,在下一行必须作为关键字再次出现,例如指定了"auth 6",下面一定要有一行"6 认证类型"。
最后确保这个文件的权限是600(即-rw-------)。

最新文章

  1. .NET开发人员值得关注的七个开源项目 .
  2. collection view 开发笔记
  3. 敏捷开发与jira
  4. Hangfire项目使用
  5. C# 京东模拟登录小结
  6. Linq:切勿使用 Count() &gt; 0 来判断集合非空
  7. MySQL server has gone away报错
  8. laravel redis Error while reading line from the server.
  9. 详解 mpls vpn 的实现
  10. python并发编程之协程
  11. VS源码编译QuaZip(Windows下)
  12. mysql函数取出单个字段重新组成一维数组
  13. 4.DOM
  14. UnrealEd3视图导航及常用快捷键
  15. CentOS6.4下Mysql数据库的安装与配置
  16. 推荐几个Windows工具软件: Stickies - 桌面贴
  17. 【uoj126】 NOI2013—快餐店
  18. 测试rar/bz2/tar.gz/gz压缩文档完整性
  19. Eclipse实用用快捷键
  20. Spring velocity 中文乱码 解决方案

热门文章

  1. 【记录】YAML 简易入门教程
  2. dfs--八皇后问题
  3. 吴裕雄--天生自然 PYTHON3开发学习:数字(Number)
  4. 寒假day01-Spring框架
  5. IDEA查看代码最近修改人及日期
  6. OutOfMemoryError异常
  7. matlab设置mex失败
  8. Codeforces Round #316 (Div. 2) D计算在一棵子树内某高度的节点
  9. 在维护项目中的UUID工具类
  10. flash插件的安装——网页视频无法播放