一、簡介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