Heartbeat(注意iptables和selinux的问题)

安装
  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),如果这 3 个日志文件都未定义,那么 heartbeat 默认情况下 将在/var/log 下建立 ha-debug 和 ha-log 来记录 相应的日志信息。 
bcast eth1 #指明心跳使用以太网广播方式,并且是在eth1接口上 进行 广播。 
keepalive 2 #发送心跳报文的间隔,默认单位为秒,如果你毫秒为单位, 那么需要在后面跟 ms 单位,如 1500ms 即代表 1.5s 
deadtime 30 #指定若备用节点在30秒内没有收到主节点的心跳信 号,则立即接管主节点的服务资源。 
warntime 10 #指定心跳延迟的时间为10秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一 个警告日志,但此时不会切换服务。发出最后的心跳 警 告 信息的间隔。
initdead 120 #在某些系统上,系统启动或重启之后需要经过一段时 间 网络才能正常工作,该选项用于解决这种情况产生 的时 间间隔。取值至少为deadtime的两倍。 
udpport 694 #设置广播/单播通信使用的端口,694为默认使用的端口号 
#baud 19200 #设置串行通信的波特率。这里不启用 
#serial /dev/ttyS0 #选择串行通信设备,用于双机使用串口线连接的情 况。如果双机使用以太网连接,则应该关闭该选 项。 
#ucast eth0 192.168.60.132 #采用网卡eth0的udp单播来组织心跳,后面跟的
IP地址应为双机对方的IP地址。 
#mcast eth0 225.0.0.1 694 1 0 #采用网卡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"(应为 130)。最后,生成设备文件:"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 #设置串口的心跳信息最少的被转发次数,默认值为1
#deadping 30 #设置的用来ping的节点的死亡时间,当超过该时间时则认为该节点网络无法连通,如果该值设置太小将导致系统过快的认为节点死亡。如果设置过大,则会延误系统判定时间。
#realtime off #允许/禁止实时执行将Heartbeat设置为高优先级,缺省为 on
#msgfmt classic/netstring #网线中的信息格式,可以是 classic 或 netstring
classic:利用base64库将二进制值转换为string值在网线中传输,该选项为默认选项。
netstring:在网线中直接传输二进制值,该选项由于不需要转换效率更高。
#use_logd yes/no #是否使用记录监控和日志的功能相似。虽然官方建议开启该选项,但是处于管理习惯,笔者没有开启该选项。
#conn_logd_time 60 #如果前一个连接失败了,我们再次连接到记录监控器的间隔。
#compression bz2 #配置压缩模块它可以为 zlib 或 bz2,可以通过查看/usr/lib/heartbeat/plugins/HBcompress/目录下的文件以确定是否有相应的库。一般在CPU空闲且网络资源紧张的情况下启用该选项。
#compression_threshold 2 #配置压缩的限度这个值决定压缩一个信息的限度,例如:如果限度为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/24/eth0/ Filesystem::/dev/sdb5::/webdata::ext3 httpd cp.sh db2::db2inst1 
MyISO1 IPaddr::192.168.89.121/24/eth0 对于该资源来说,MyISO1是主服务器
MyISO2 IPaddr::192.168.89.122/24/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 1 
1 crc 
#2 sha1 sha1_any_password 
#3 md5 md5_any_password 


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

原文地址:https://www.cnblogs.com/djoker/p/6396749.html