歡迎您光臨本站 註冊首頁

高可用集群--Corosync/Openais 的配置

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

高可用集群--Corosync/Openais 的配置

下面以一實例來說明基於Corosync/Openais的高可用集群服務的配置.環境2台伺服器提供LNMP服務,1NFS伺服器為mysql資料庫提供共享存儲.集群節點:1、主機名:aydon1,IP172.16.13.1,2、主機名:aydon2,IP172.16.13.8.NFS 伺服器:IP,172.16.13.6.提供web服務的地址:172.16.13.2提供mysql服務的地址:172.16.13.3以上伺服器的操作系統均為RHEL5.4 .

一、配置NFS伺服器

這裡將/mydata作為mysql數據的存放目錄,因此創建目錄/mydata.#mkdir /mydata添加用戶和組Mysql服務是以mysql 用戶的身份運行的,所以/mydata目錄的屬主、屬主應該為mysql,#groupadd -r -g 110 mysql#useradd -r -u 110 -g mysql mysql#chown mysql.mysql /mydata(註:NFS是以用戶id來識別用戶的,所以得保證三台伺服器上的mysql用戶的uid是相同的)#vim /etc/exports 添加如下內容:/mydata 172.16.13.1(rw,no_root_squash) 172.16.13.6(rw,no_root_squash)#service nfs start --開啟NFS服務NFS服務配置完成,可以掛載進行測試.

二、

配置HA節點1) /etc/hosts文件中添加如下內容172.16.13.1 aydon1172.16.13.6 aydon2(註:保證所有節點的主機名稱和對應的IP地址解析服務可以正常工作,且每個節點的主機名稱需要跟"uname -n「命令的結果保持一致)2) 設定兩個節點可以基於密鑰進行ssh通信Node1:# ssh-keygen -t rsa# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]Node2:# ssh-keygen -t rsa # ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]3) 安裝Corosync及相關軟體包需要下載如下軟體包cluster-gluecluster-glue-libsheartbeatopenaislibresource-agentscorosyncheartbeat-libspacemakercorosyncliblibesmtppacemaker-libs.下載地址:http://clusterlabs.org/rpm/.這裡將所需的軟體包都下載至/root/rpm目錄中.使用如下命令安裝: #cd /root/rpm#yum -y --nogpgcheck localinstall *.rpm4) aydon1上配置corosync(以下配置均在aydon1上進行)#cd /etc/corosync#cp corosync.conf.example corosync.conf編輯corosync.conf ,修改為如下內容:compatibility: whitetank

totem {

version: 2

secauth: off --開啟或關閉安全認證

threads: 0

interface {

ringnumber: 0

bindnetaddr: 172.16.0.0 --網卡所在網路的網路地址

mcastaddr: 229.88.1.8 --指定多播地址

mcastport: 5405

}

}

logging {

fileline: off

to_stderr: no --是否向屏幕上輸出錯誤信息

to_logfile: yes --是否將日誌保存在文件中

to_syslog: no --是否將日誌信息記錄到系統日誌中

logfile: /var/log/cluster/corosync.log --保存日誌的文件

debug: off

timestamp: off

logger_subsys {

subsys: AMF

debug: off

}

}

amf {

mode: disabled

}

service {

ver: 0

name: pacemaker

use_mgmtd: yes

}

aisexec {

user: root

group: root

}5) 生成節點間通信時用到的認證密鑰文件#corosync-keygencorosync.confauthkey複製至aydon2#scp -p corosync.conf authkey aydon2:/etc/corosync6) 在兩節點上創建corosync日誌所在目錄#mkdir /var/log/cluster#ssh aydon2 'mkdir /var/log/cluster' 7) 啟動corosync#service corosync start8) 查看corosync引擎是否正常啟動# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.logJun 14 19:02:08 node1 corosync[5103]: [MAIN ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.Jun 14 19:02:08 node1 corosync[5103]: [MAIN ] Successfully read main configuration file '/etc/corosync/corosync.conf'.Jun 14 19:02:08 node1 corosync[5103]: [MAIN ] Corosync Cluster Engine exiting with status 8 at main.c:1397.Jun 14 19:03:49 node1 corosync[5120]: [MAIN ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.Jun 14 19:03:49 node1 corosync[5120]: [MAIN ] Successfully read main configuration file '/etc/corosync/corosync.conf'. 9) 查看初始化成員節點通知是否正常發出# grep TOTEM /var/log/cluster/corosync.logJun 14 19:03:49 node1 corosync[5120]: [TOTEM ] Initializing transport (UDP/IP).Jun 14 19:03:49 node1 corosync[5120]: [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).Jun 14 19:03:50 node1 corosync[5120]: [TOTEM ] The network interface [192.168.0.5] is now up.Jun 14 19:03:50 node1 corosync[5120]: [TOTEM ] A processor joined or left the membership and a new membership was formed.10) 檢查啟動過程中是否有錯誤產生:# grep ERROR: /var/log/cluster/corosync.log | grep -v unpack_resources11) 查看pacemaker 是否正常啟動# grep pcmk_startup /var/log/cluster/corosync.logJun 14 19:03:50 node1 corosync[5120]: [pcmk ] info: pcmk_startup: CRM: InitializedJun 14 19:03:50 node1 corosync[5120]: [pcmk ] Logging: Initialized pcmk_startupJun 14 19:03:50 node1 corosync[5120]: [pcmk ] info: pcmk_startup: Maximum core file size is: 4294967295Jun 14 19:03:50 node1 corosync[5120]: [pcmk ] info: pcmk_startup: Service: 9Jun 14 19:03:50 node1 corosync[5120]: [pcmk ] info: pcmk_startup: Local hostname: node1.a.org如果上面命令執行均沒有問題,接著可以執行如下命令啟動node2上的corosync# ssh node2 -- /etc/init.d/corosync start注意:啟動node2需要在node1上使用如上命令進行,不要在node2節點上直接啟動. #crm status --查看集群節點的啟動狀態.12) 配置集群工作屬性① 禁用stonith設備corosync默認啟用了stonith,而當前集群並沒有stonith設備,所以禁用stonith設備.#crm configure property stonith-enabled=false ② 定義默認資源粘性每一次資源的流動都可能造成服務在短時間內不可用,所以應避免資源的流動.#crm configure rsc_defaults resource-stickiness=100③  定義no-quorum-policy策略對於兩節點的集群,當有一台服務下線時,剩餘的quorum是絕對不可能多餘quorum總數的1/2的,而no-quorum-policy默認是stop-停止集群服務,這樣一來兩節點的高可用集群是沒有意義的,因此將設定no-quorum-policy=ignore#crm configure property no-quorum-policy=ignore④ 定義資源對於當前集群服務來講,資源有:提供web服務的ip,nginx服務,提供mysql服務的ip,mysql服務,共享存儲/mydata. #crm configure primitive webip ocf:heartbeat:IPaddr ip=172.16.13.2 nic=eth0 cidr_netmask=16#crm configure primitive nginx lsb:nginx#crm configure primitive myip ocf:heartbeat:IPaddr ip=172.16.13.3 nic=eth0 cidr_natmask=16#crm configure primitive mysqld lsb:mysqld#crm configure primitive mynfs ocf:heartbeat:Filesystem params device="172.16.13.6:/mydata" directory="/mydata" fstype="nfs" op start timeout=60 op stop timeout=60 ⑤ 定義colocation約束資源的排列約束:web服務:webip一定得和nginx存在於同一伺服器上;mysql服務:myip,mysqld,mynfs一定得存在於同一台伺服器上.因此做如下定義:#crm configure colocation inf: web webip nginx #crm configure colocation mysql inf: myip mysqld mynfs⑥ 定義order約束資源的應用次序:對於web服務,應該webip先生效,然後是nginx;對於mysql服務,mynfs先應用,其次是myip,mysqld,因此做以下定義:#crm configure order nginx-after-webip mandatorywebip nginx#crm configure order mysqd-after-mynfs mandatory: mynfs myip mysqld到此,集群服務配置完畢.接下來可以使用如下命令來查看各節點的工作狀態:#crm status註:將某項服務定義為集群服務,那麼該服務就不應該開機啟動.

本文出自 「Linux」 博客,請務必保留此出處http://wld6linux.blog.51cto.com/4356376/837708


[火星人 ] 高可用集群--Corosync/Openais 的配置已經有1026次圍觀

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