歡迎您光臨本站 註冊首頁

分享自己做的LINUX-HA

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

Linux下高可用集群方案很多,本文介紹的是性價比比較高的一種: 使用Heartbeat 2.0配置Linux高可用性集群. 一、 準備工作 你首先需要兩台電腦,這兩台電腦並不需要有相同的硬體(或者內存大小等),但如果相同的話,當某個部件出現故障時會容易處理得多.接下來您需要決定如何部署.你的集群是通過Heartbeat 軟體產生在兩台電腦之間心跳信號來建立的.為了傳輸心跳信號,需要在節點之間存在一條或多條介質通路(串口線通過modem電線,乙太網通過交叉線,等等).現在可以開始配置硬體了.既然想要獲得高可用性(HA),那麼您很可能希望避免單點失效.在本例中,可能是您的null modem線/串口,或者網卡(NIC)/ 交叉線.因此便需要決定是否希望為每個節點添加第二條串口null modem連線或者第二條NIC/交叉線連接.我使用一個串口和一塊額外的網卡來作為heartbeat的通路,這是我只有一條null modem線和一塊多餘的網卡,並且認為有兩種介質類型傳輸heartbeat信號比較好.硬體配置完成之後,便需要安裝操作系統以及配置網路(我在本文中使用的是RedHat).假設您有兩塊網卡,那麼有一塊應該配置用於常規網路用途,另一塊作為集群節點之間的專用網路連接(通過交叉線).例如,假設集群節點有如表-1下的IP地址: 表-1 群集節點的IP地址
主伺服器mxl.com 192.168.0.10
心跳IP地址 10.1.1.2
備份伺服器bakup.mxl.com 192.168.0.5
心跳IP地址 10.1.1.3
檢查配置是否正確 使用用netstat -nr 和ping 命令 簡單網路拓樸圖

安裝軟體包 heartbeat-2.1.3-3.el5.centos.i386.rpm perl-Digest-SHA1-2.11-1.2.1.i386.rpm heartbeat-devel-2.1.3-3.el5.centos.i386.rpm perl-IO-Socket-SSL-1.01-1.fc6.noarch.rpm heartbeat-gui-2.1.3-3.el5.centos.i386.rpm perl-LDAP-0.33-3.fc6.noarch.rpm heartbeat-ldirectord-2.1.3-3.el5.centos.i386.rpm perl-Mail-POP3Client-2.17-1.el5.centos.noarch.rpm heartbeat-pils-2.1.3-3.el5.centos.i386.rpm perl-MailTools-1.77-1.el5.centos.noarch.rpm heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm perl-Net-IMAP-Simple-1.17-1.el5.centos.noarch.rpm libnet-1.1.2.1-2.rf.i386.rpm perl-Net-IMAP-Simple-SSL-1.3-1.el5.centos.noarch.rpm perl-Authen-Radius-0.13-1.el5.centos.noarch.rpm perl-Net-SSLeay-1.30-4.fc6.i386.rpm perl-Convert-ASN1-0.20-1.1.noarch.rpm perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm perl-Digest-HMAC-1.01-15.noarch.rpm perl-5.8.8-10.el5_0.2.i386.rpm 或使用源碼進行安裝, 下面以源碼安裝進行配置 [root@mxl] tar -zxvf libnet.tar.gz cd libnet ./configure Make Make install [root@mxl]tar -zxvf heartbeat-2.1.3.tar.gz ./ConfigureMe configure --enable-mgmt --with-ccmuser-name=hacluster Make Make install #--enable-mgmt 表示支持圖形管理工具 配置HA需要三個文件:ha.cf haresources authkeys 默認/etc/ha.d 下沒有這三個文件,我們需要找到這三個文件然後,拷貝到其目錄下 [root@mxl heartbeat-2.1.3]# pwd /usr/share/doc/heartbeat-2.1.3 [root@mxl heartbeat-2.1.3]# ls apphbd.cf faqntips.html haresources Requirements.html authkeys faqntips.txt hb_report.html Requirements.txt AUTHORS GettingStarted.html hb_report.txt rsync.html ChangeLog GettingStarted.txt heartbeat_api.html rsync.txt COPYING ha.cf heartbeat_api.txt startstop COPYING.LGPL HardwareGuide.html logd.cf DirectoryMap.txt HardwareGuide.txt README [root@mxl heartbeat-2.1.3]# cp ha.cf

authkeys haresources /etc/ha.d 以上的工作完成之後我們就需要對文件進行配置以實現雙機的效果
  1. 配置hearbeat主文件ha.cf
#logfile /var/log/ha-log 日誌存放位置 #keepalive 2 指明心跳時間為秒 #deadtime 30 指定在30秒內沒有心跳信號,會立即切換服務 #warntime 10 指明心跳延遲時間為10秒 #initdead 120 在某些配置下,重啟后網路需要一些時間才能正常工作.這個單獨的”deadtime”選項可以處理這種情況.它的取值至少應該為通常deadtime的兩倍 #udpport 694 使用埠694進行bcast和ucast通信.這是默認的,並且在IANA官方註冊的埠號. #baud 19200 波特率,串口通信的速度. #bcast eth1 # Linux 表示在eth1介面上使用廣播heartbeat(將eth1替換為eth0,eth2,或者您使用的任何介面). #auto_failback on 該選項是必須配置的.對於那些熟悉Tru64 Unix的人來說,heartbeat的工作方式類似於“favored member“模式.在failover之前,haresources文件中列出的主節點掌握所有的資源,之後從節點接管這些資源.當auto_failback設置為on時,一旦主節點重新恢復聯機,將從從節點取回所有資源.若該選項設置為off,主節點便不能重新獲得資源.該選項與廢棄的nice_failback選項類似.如果要從一個nice_failback設置為off的集群升級到這個或更新的版本,需要特別注意一些事項以防止flash cut. #node ken3 該選項是必須配置的.集群中機器的主機名,與“uname –n”的輸出相同. #node kathy #ping 10.10.10.254 Ping 192.168.0.1

ping 可以使用 ipfail插件的用途是檢測網路故障 a.選擇好的候選ping節點 這步很重要.你的選擇越好,則得到的HA集群便越強壯.選擇固定的交換機路由器等是一個好主意.不要選擇HA集群中的任一個成員,也不要選擇其他人的工作站.選擇能反映您HA節點的連接狀況的ping節點也很重要.如果您要監視兩個介面的連接情況,明智的做法是為每個介面選擇一個只對該介面可用的ping節點. b.設置auto_failback為on或者off 只有當Heartbeat被配置為非legacy時ipfail才會起作用.在ha.cf文件中,如下將auto_failback設置為on或者off: auto_failback on 或者 auto_failback off c.配置ha.cf使之啟動ipfail. 向ha.cf中增加如下一行(假設您在編譯時的PREFIX為/usr): respawn hacluster /usr/lib/heartbeat/ipfail d.向ha.cf中加入ping節點: ping pnode1 pnode2 pnodeN 將pnode1,pnode2,…pnodeN等替換為您ping節點的IP地址. 確保向集群中各個成員的ha.cf中加入以上相同的配置指令. e. 修改Heartbeat配置文件 如果修改了配置文件etc/ha.d/ authkeys或者 /etc/ha.d/ha.cf后要使用下面的命令重新載入服務. #/etc/init.d/heartbeat reload 或者 #service heartbeat reload #respawn userid /path/name/to/run #respawn hacluster /usr/lib/heartbeat/ipfail 該選項是可選配置的:列出將要執行和監控的命令.例如:要執行ccm守護進程,則要添加如下的內容: respawn hacluster /usr/lib/heartbeat/ccm 是的Heartbeat以userid(在本例中為hacluster)的身份來執行該進程並監視該進程的執行情況,如果其死亡便重啟之. 對於ipfail,則應該是:respawn hacluster /usr/lib/heartbeat/ipfail 注意:如果結束進程的退出代碼為100,則不會重啟該進程.

  1. 配置[root@mxl ha.d]# vi authkeys 文件
#auth 1 #1 crc #2 sha1 HI! #3 md5 Hello! 需要配置的第三個文件authkeys決定了您的認證密鑰.共有三種認證方式:crc,md5,和sha1.您可能會問:“我應該用哪個方法呢?”簡而言之:如果您的Heartbeat運行於安全網路之上,如本例中的交叉線,可以使用crc,從資源的角度來看,這是代價最低的方法.如果網路並不安全,但您也希望降低CPU使用,則使用md5.,如果您想得到最好的認證,而不考慮CPU使用情況,則使用sha1,它在三者之中最難破解. 文件格式如下: auth <number> <number> <authmethod> [<authkey>] 因此,對於sha1,示例的/etc/ha.d/authkeys可能是 auth 1 1 sha1 key-for-sha1-any-text-you-want 1 md5 key-for-sha1-any-text-you-want 對於md5,只要將上面內容中的sha1換成md5就可以了. 對於crc,可作如下配置: auth 2 2 crc 不論您在關鍵字auth後面指定的是什麼索引值,在後面必須要作為鍵值再次出現.如果您指定“auth 4”,則在後面一定要有一行的內容為 配置完成後文件的許可權設置(600) [root@mxl ha.d]# chmod 600 authkeys
  1. 配置[root@mxl ha.d]# vi haresources 文件
#node-name resource1 resource2 ... resourceN node mxl.com #just.linux-ha.org 135.9.216.110 135.9.215.111 135.9.216.112 httpd mxl.com 10.1.1.1 10.1.1.2 httpd smb 重啟服務 把配置好的文件拷貝到其它的節點上即可


[火星人 ] 分享自己做的LINUX-HA已經有497次圍觀

http://coctec.com/docs/linux/show-post-50566.html