一、简介gui
heartbeat的v2版本将v1中haresources配置文件使用GUI图形配置接口来配置高可用集群。更加便捷,直观。
三、heartbeat-gui配置
1、安装
<code>解决依赖关系</code>
<code>[root@node1 heartbeat]</code><code># yum install libtool-ltdl -y</code>
<code>[root@node1 heartbeat]</code><code># yum install net-snmp-libs libnet PyXML pygtk2-libglade -y</code>
<code>[root@node1 heartbeat]</code><code># rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm</code>
<code>[root@node1 heartbeat]</code><code># rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm</code>
<code>[root@node1 heartbeat]</code><code># yum -y localinstall heartbeat-2.1.4-12.el6.x86_64.rpm </code>
<code>安装gui</code>
<code>[root@node1 heartbeat]</code><code># yum -y localinstall heartbeat-gui-2.1.4-12.el6.x86_64.rpm</code>
<code>heartbeat 安装组件说明</code>
<code> </code><code>heartbeat 核心组件 * </code>
<code> </code><code>heartbeat-devel 开发包 </code>
<code> </code><code>heartbeat-gui 图形管理接口 * (这个必须安装,这篇博文重点讲解图形资源管理器)</code>
<code> </code><code>heartbeat-ldirectord 为lvs高可用提供规则自动生成及后端realserver健康状态检查的组件 </code>
<code> </code><code>heartbeat-pils 装载库插件接口 * </code>
<code> </code><code>heartbeat-stonith 爆头接口 *</code>
2、配置
<code>复制配置文件至</code><code>/etc/ha</code><code>.d目录下</code>
<code>[root@node1 ~]</code><code># cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys} /etc/ha.d/ </code>
<code>配置认证文件</code>
<code>auth 2</code>
<code>#1 crc</code>
<code>2 sha1 XUcb+fkiktY49z6zVHTy2A</code>
<code>#3 md5 Hello!</code>
<code>[root@node2 heartbeat-2.1.4]</code><code># openssl rand -base64 16</code>
<code>XUcb+fkiktY49z6zVHTy2A==</code>
<code>配置ha.cf文件,定义集群的工作方式</code>
<code>定义日志文件位置(二选一) logfacility为将日志交由syslog管理 </code>
<code>logfile </code><code>/var/log/ha-log</code>
<code>#logfacility local0</code>
<code>多长时间发送一次心跳信息,默认为2秒</code>
<code>#keepalive 2</code>
<code>多长时间宣布某节点死亡,默认30秒</code>
<code>#deadtime 30</code>
<code>多长时间警告对方心跳信息延迟了,默认10秒</code>
<code>#warntime 10</code>
<code>第一次死去时间,避免因网络问题导致宣布死亡</code>
<code>#initdead 120</code>
<code>使用udp694端口传递心跳,并选择哪种方式传递心跳</code>
<code>#udpport 694</code>
<code>串行线缆传递心跳</code>
<code>#serial /dev/ttyS0 # Linux</code>
<code>#serial /dev/cuaa0 # FreeBSD</code>
<code>#serial /dev/cuad0 # FreeBSD 6.x</code>
<code>#serial /dev/cua/a # Solaris</code>
<code>串行线缆的工作频率</code>
<code>#baud 19200</code>
<code>广播传递心跳</code>
<code>#bcast eth0 # Linux</code>
<code>#bcast eth1 eth2 # Linux</code>
<code>#bcast le0 # Solaris</code>
<code>#bcast le1 le2 # Solaris</code>
<code>多播传递心跳,网卡必须支持多播,</code><code>ifconfig</code> <code>| </code><code>grep</code> <code>MULTICAST</code>
<code>mcast eth0 225.0.0.1 694 1 0 </code><code>#端口694,TTL为1,不允许回传为0</code>
<code>#启用网卡支持多播</code>
<code>[root@node1 ha.d]</code><code># ip link set eth0 multicast on</code>
<code> </code>
<code>单薄传递心跳</code>
<code>#ucast eth0 192.168.1.2</code>
<code>自动故障转回</code>
<code>auto_failback on</code>
<code>指明节点</code>
<code>#node ken3</code>
<code>#node kathy</code>
<code>node node1</code>
<code>node node2</code>
<code>加入crm开启这行,on或者respawn都可以</code>
<code>crm on</code>
<code>指明网关为</code><code>ping</code> <code>node设备(仲裁设备)</code>
<code>#ping 10.10.10.254</code>
<code>ping</code> <code>192.168.0.1</code>
<code>指明一个组为</code><code>ping</code> <code>node设备(仲裁设备)</code>
<code>#ping_group group1 10.10.10.254 10.10.10.253</code>
<code>指明节点间传送的压缩算法</code>
<code>compression bz2</code>
<code>指明节点间传送数据压缩的最小数据为2KB</code>
<code>compression_threshold 2</code>
<code>配置haresource文件,加入资源</code>
<code>node1 192.168.0.17</code><code>/24/eth0/192</code><code>.168.0.255 httpd</code>
3、配置双节点
<code>[root@node1 ha.d]</code><code># scp /etc/ha.d/{ha.cf,authkeys} node2:/etc/ha.d/</code>
<code>ha.cf 100% 10KB 10.3KB</code><code>/s</code> <code>00:00 </code>
<code>authkeys 100% 662 0.7KB</code><code>/s</code> <code>00:00</code>
<code>[root@node1 ha.d]</code><code># scp /etc/ha.d/haresources node2:/etc/ha.d/</code>
<code>haresources 100% 5952 5.8KB</code><code>/s</code> <code>00:00</code>
<code>将认证文件的权限改为600</code>
<code>[root@node1 ha.d]</code><code># chmod 600 authkeys ; ssh node2 'chmod 600 /etc/ha.d/authkeys '</code>
<code>启动服务</code>
<code>[root@node1 ha.d]</code><code># service heartbeat start; ssh node2 'service heartbeat start'</code>
<code>logd is already running</code>
<code>Starting High-Availability services: </code>
<code>Done.</code>
此时以禁用haresource资源管理器,下面使用gui界面配置资源
4、gui配置
<code>因为gui需要用户密码登录,因此为hacluster设置密码</code>
<code>[root@node1 ~]</code><code># echo "linus" | passwd --stdin hacluster</code>
<code>Changing password </code><code>for</code> <code>user hacluster.</code>
<code>passwd</code><code>: all authentication tokens updated successfully.</code>
<code>将Resources配置文件通过脚本生成crm,可省略,crm会自动生成</code>
<code>[root@node2 crm]</code><code># cd /usr/lib64/heartbeat</code>
<code>[root@node2 heartbeat]</code><code># ./haresources2cib.py /etc/ha.d/haresources</code>
<code>因为gui需要图形化界面支持,所以安装KDE桌面,远程软件中xshell支持,CRT等不支持</code>
<code>xshell配置步骤如下</code>
<code>File --> Properties --> SSH --> Tunneling --> Forward X11 connections to下的Xmanager</code>
<code>[root@node1 ~]</code><code># yum groupinstall KDE Desktop -y</code>
<code>安装完毕后退出xshell,重新登录后即可</code>
<code>查看状态</code>
<code>[root@node2 ha.d]</code><code># crm_mon</code>
<code>命令行接口</code>
<code>[root@node2 ha.d]</code><code># crm_sh</code>
<code>/usr/sbin/crm_sh</code><code>:31: DeprecationWarning: The popen2 module is deprecated. Use the subprocess module.</code>
<code> </code><code>from popen2 </code><code>import</code> <code>Popen3</code>
<code>crm </code><code># nodes</code>
<code>crm nodes </code><code># list</code>
<code> </code><code><node </code><code>id</code><code>=</code><code>"da321285-0881-449f-b249-d912a65c1954"</code> <code>uname</code><code>=</code><code>"node2"</code> <code>type</code><code>=</code><code>"normal"</code><code>/></code>
<code> </code><code><node </code><code>id</code><code>=</code><code>"0b161e79-35d1-44a9-a09a-e7ae7e80659d"</code> <code>uname</code><code>=</code><code>"node1"</code> <code>type</code><code>=</code><code>"normal"</code><code>/></code>
<code>crm nodes </code><code># status</code>
<code> </code><code><node_state </code><code>id</code><code>=</code><code>"da321285-0881-449f-b249-d912a65c1954"</code> <code>uname</code><code>=</code><code>"node2"</code> <code>crmd=</code><code>"online"</code> <code>crm-debug-origin=</code><code>"do_lrm_query"</code> <code>shutdown</code><code>=</code><code>"0"</code> <code>in_ccm=</code><code>"true"</code> <code>ha=</code><code>"active"</code> <code>join</code><code>=</code><code>"member"</code> <code>expected=</code><code>"member"</code><code>></code>
<code> </code><code><node_state </code><code>id</code><code>=</code><code>"0b161e79-35d1-44a9-a09a-e7ae7e80659d"</code> <code>uname</code><code>=</code><code>"node1"</code> <code>crmd=</code><code>"online"</code> <code>crm-debug-origin=</code><code>"do_lrm_query"</code> <code>shutdown</code><code>=</code><code>"0"</code> <code>in_ccm=</code><code>"true"</code> <code>ha=</code><code>"active"</code> <code>join</code><code>=</code><code>"member"</code> <code>expected=</code><code>"member"</code><code>></code>
<code>查看端口与服务是否正常(所有节点一致)</code>
<code>[root@node1 ~]</code><code># ss -tunlp | grep heartbeat</code>
<code>udp UNCONN 0 0 225.0.10.1:694 *:* </code><code>users</code><code>:((</code><code>"heartbeat"</code><code>,3451,8),(</code><code>"heartbeat"</code><code>,3452,8))</code>
<code>udp UNCONN 0 0 *:36708 *:* </code><code>users</code><code>:((</code><code>"heartbeat"</code><code>,3451,7),(</code><code>"heartbeat"</code><code>,3452,7))</code>
<code>[root@node1 ~]</code><code># ss -tunlp | grep mgmtd</code>
<code>tcp LISTEN 0 10 *:5560 *:* </code><code>users</code><code>:((</code><code>"mgmtd"</code><code>,3463,10))</code>
<code>[root@node1 ~]</code><code># ps -ef | grep heartbeat</code>
<code>root 3445 1 0 19:42 ? 00:00:00 heartbeat: master control process</code>
<code>nobody 3450 3445 0 19:42 ? 00:00:00 heartbeat: FIFO reader </code>
<code>nobody 3451 3445 0 19:42 ? 00:00:00 heartbeat: write: mcast eth0 </code>
<code>nobody 3452 3445 0 19:42 ? 00:00:00 heartbeat: </code><code>read</code><code>: mcast eth0 </code>
<code>nobody 3453 3445 0 19:42 ? 00:00:00 heartbeat: write: </code><code>ping</code> <code>192.168.0.1</code>
<code>nobody 3454 3445 0 19:42 ? 00:00:00 heartbeat: </code><code>read</code><code>: </code><code>ping</code> <code>192.168.0.1</code>
<code>498 3457 3445 0 19:42 ? 00:00:00 </code><code>/usr/lib64/heartbeat/ccm</code>
<code>498 3458 3445 0 19:42 ? 00:00:00 </code><code>/usr/lib64/heartbeat/cib</code>
<code>nobody 3459 3445 0 19:42 ? 00:00:00 </code><code>/usr/lib64/heartbeat/lrmd</code> <code>-r</code>
<code>nobody 3460 3445 0 19:42 ? 00:00:00 </code><code>/usr/lib64/heartbeat/stonithd</code>
<code>498 3461 3445 0 19:42 ? 00:00:00 </code><code>/usr/lib64/heartbeat/attrd</code>
<code>498 3462 3445 0 19:42 ? 00:00:00 </code><code>/usr/lib64/heartbeat/crmd</code>
<code>root 3463 3445 0 19:42 ? 00:00:00 </code><code>/usr/lib64/heartbeat/mgmtd</code> <code>-</code><code>v</code>
<code>root 4208 3476 0 19:50 pts</code><code>/2</code> <code>00:00:00 </code><code>grep</code> <code>heartbeat</code>
<code>启动gui</code>
<code>[root@node1 ~]</code><code># hb_gui &</code>
图形界面如下
登录后界面如下
<a href="http://s4.51cto.com/wyfs02/M01/8A/51/wKiom1gtO-eiJn9oAADwzEBN3SE788.png-wh_500x0-wm_3-wmp_4-s_2682614655.png" target="_blank"></a>
配置资源
<a href="http://s1.51cto.com/wyfs02/M01/8A/54/wKiom1gtXHfCPq4DAADNuAKBOGU480.png-wh_500x0-wm_3-wmp_4-s_3880063266.png" target="_blank"></a>
loction,order,colocation是位置顺序序列的约束条件
<a href="http://s5.51cto.com/wyfs02/M01/8A/58/wKiom1gtm9aRs-F9AAA9W3EL7Eo981.png-wh_500x0-wm_3-wmp_4-s_617722561.png" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M00/8A/54/wKioL1gtnpyQ6SzCAAEtNa_X9xg802.png-wh_500x0-wm_3-wmp_4-s_1666454492.png" target="_blank"></a>
<a href="http://s5.51cto.com/wyfs02/M01/8A/54/wKioL1gtoZDgqvhqAACmrOq0h1E378.png-wh_500x0-wm_3-wmp_4-s_2473199307.png" target="_blank"></a>
定义组资源
<a href="http://s3.51cto.com/wyfs02/M02/8A/58/wKiom1gtovSizymlAABAjgk9Qoo677.png-wh_500x0-wm_3-wmp_4-s_1089039900.png" target="_blank"></a>
之后在定义资源的时候选择加入组即可
定义约束关系(序列约束)
<a href="http://s3.51cto.com/wyfs02/M02/8A/58/wKiom1gtpk3yp7NBAADpQOfHRGs612.png-wh_500x0-wm_3-wmp_4-s_890072259.png" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/8A/54/wKioL1gtpk7xIkOnAADCkeIA0UY534.png-wh_500x0-wm_3-wmp_4-s_2936193368.png" target="_blank"></a>
其余约束关系定义,位置约束要选明score
<a href="http://s2.51cto.com/wyfs02/M00/8A/58/wKiom1gtqGbhTlJIAAE6tP9r1ck261.png-wh_500x0-wm_3-wmp_4-s_3597037694.png" target="_blank"></a>
<a href="http://s5.51cto.com/wyfs02/M01/8A/54/wKioL1gtqOKiaHTWAAFLD2t2xFM000.png-wh_500x0-wm_3-wmp_4-s_739717352.png" target="_blank"></a>
<code>资源约束(3种类型):</code>
<code> </code><code>位置约束(locations):资源更倾向于哪个节点上 ,使用数值表示; </code>
<code> </code><code>inf: 无穷大</code>
<code> </code><code>n: 表示数值,要对节点间的做比较来决定最后落在那个节点上(此处n为正值)</code>
<code> </code><code>-n: 同上,如果节点间的位置约束均为负值,则最后运行于接近正值的节点上</code>
<code> </code><code>-inf: 负无穷(只要有其它选择,就不会选择此节点 )</code>
<code> </code><code>排列约束(Colocations):资源运行在同一节点的倾向性;</code>
<code> </code><code>inf: 无限倾向于在一起</code>
<code> </code><code>-inf: 无限倾向于不在一起</code>
<code> </code><code>顺序约束(orders):资源启动次序及关闭次序;</code>
<code>位置约束说明</code>
<code> </code><code>ID:表示为约束记录起一个名字</code>
<code> </code><code>from to:表示那一个资源与那一个资源(此处写上面定义资源名字即可)</code>
<code> </code><code>score:在一起的可能性(也可以是数值,比如10,-10)</code>
<code> </code><code>INFINITY:webip必须要和webserver在一个节点上</code>
<code> </code><code>-INFINITY:webipbu不和webserver在一个节点上</code>
<code> </code>
<code>一般来说,我们可以将资源定义为组,也可以将基本资源使用约束关系定义。</code>
<code>高可用集群启动顺序:webip --> webfilesystem(nfs)-->webserver</code>
本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1873712