您好,登錄后才能下訂單哦!
基于corosync+pacemaker的高可用集群
Pacemaker即Cluster Resource Manager (簡稱CRM),用來管理整個HA的控制中心,客戶端通過pacemaker來配置管理監控整個集群。它不能提供底層心跳信息傳遞的功能,它要想與對方節點通信需要借助底層(新拆分的heartbeat或corosync)的心跳傳遞服務,將信息通告給對方。
pacemaker管理資源的工具由命令行界面的crmsh、pcs和圖形化界面pygui、hawk等進行管理。
因此,一般來說都是選擇corosync來進行心跳的檢測,搭配pacemaker的資源管理系統來構建高可用的系統,下面就來介紹下corosync+pacemaker構建高可用系統。
配置共有兩個測試節點,分別server2和server3,相的IP地址分別為172.25.80.2和172.25.80.3;
模擬實現的集群服務是web服務;
提供web服務的地址為172.25.80.1
1,基礎環境設置:
首先配置一臺HA主機需要做的準備工作:
1)固定IP地址
2)所有節點的主機名稱和對應的IP地址解析服務可以正常工作,只需要保證兩個節點上的/etc/hosts文件均為下面的內容:
172.25.80.2 server2 node1
172.25.80.3 server3 node2
以上三步配置完成后能實現相互解析主機名,如下:
3)配置節點信任關系:
節點1:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
節點2:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
2,安裝環境需要的相應的軟件包:
#yum install -y libibverbs librdmacm lm_sensors libtool-ltdl openhpi-libs openhpiperl-TimeDate
3,安裝corosync和pacemaker,我們這里將軟件包放在/root/corosync目錄下(兩個節點都要做):
cluster-glue-1.0.6-1.6.el5.i386.rpm
cluster-glue-libs-1.0.6-1.6.el5.i386.rpm
corosync-1.2.7-1.1.el5.i386.rpm
corosynclib-1.2.7-1.1.el5.i386.rpm
heartbeat-3.0.3-2.3.el5.i386.rpm
heartbeat-libs-3.0.3-2.3.el5.i386.rpm
libesmtp-1.0.4-5.el5.i386.rpm
openais-1.1.3-1.6.el5.i386.rpm
openaislib-1.1.3-1.6.el5.i386.rpm
pacemaker-1.0.11-1.2.el5.i386.rpm
pacemaker-libs-1.0.11-1.2.el5.i386.rpm
perl-TimeDate-1.16-5.el5.noarch.rpm
resource-agents-1.0.4-1.1.el5.i386.rpm
開始安裝:
# cd /root/corosync/
# yum -y --nogpgcheck localinstall *.rpm
這里我們使用本地yum安裝,并忽略包的檢查。
4,corosync的相關配置(在節點1上執行):
# cd /etc/corosync
# cp corosync.conf.example corosync.conf
這里corosync.conf.example是配置樣本,我們只需拷貝一份,并進行修改即可:
vim /etc/corosync/corosync.conf
compatibility: whitetank
totem {
version: 2
secauth: off
threads: 0
interface {
ringnumber: 0
bindnetaddr: 172.25.0.0
mcastport: 5405
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
to_syslog: yes
logfile:/var/log/cluster/corosync.log //此處日志存放的地方
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
service {
ver: 0
name: pacemaker
}
aisexec {
user: root
group: root
}
生成節點間通信時用到的認證密鑰文件:
# corosync-keygen //此處會在當前目錄下生成一個認證密鑰文件
然后拷貝相關的文件到節點2上:
# scp -p corosync.conf authkey node2:/etc/corosync/
為兩個節點創建corosync生成的日志所在的目錄:
# mkdir /var/log/cluster
# ssh node2 -- mkdir /var/log/cluster
5,開始啟動corosync(在節點1上執行):
# /etc/init.d/corosync start
Starting Corosync Cluster Engine(corosync): [ OK ] //出現此,說明corosync已經啟動
啟動節點2:
# ssh node2 -- /etc/init.d/corosync start //此步您需要在節點1上進行
Starting Corosync Cluster Engine (corosync): [ OK ] //出現此,說明您的節點2corosync已經啟動,節點2上繼續驗證是否出現異常錯誤
Online: [ server2 server3 ] //此處說明您的兩個集群節點均已運行正常。
6,配置集群的工作屬性:
因為corosync默認已經啟用了stonith,而當前又沒有添加stonith設備,會出現默認配置不可用的狀態,為防止以后出現錯誤,影響操作,我們這里可以禁用stonith:
# crm configure property stonith-enabled=false //這樣執行的命令會提交而且會立即生效
INFO: building help index
crm,crm_verify相關的命令是1.0后的版本的pacemaker提供的基于命令行的集群管理工具;可以在集群中的任何一個節點上執行,查看相應的信息。
7,為集群添加集群資源:
corosync支持heartbeat,lsb和ocf等類型的資源代理,目前較為常用的類型為lsb和lsb兩類,stonith類專為配置stonith設備而用。
8,配置相試網頁:
#echo "<h2>Server2</h2>" > /var/www/html/index.html
#chkconfig httpd off
#service httpd stop
#ssh node2 -- 'echo "<h2>Server3</h2>" > /var/www/html/index.html'
#ssh node2 -- 'chkconfig httpd off'
#ssh node2 -- 'service httpd stop'
添加web資源:
首先創建的web集群創建一個IP地址資源,
# crm configure primitive WebIPocf:heartbeat:IPaddr paramsip=172.25.80.1
然后將httpd服務添加為集群資源。將httpd添加為集群資源有兩處資源代理可用:lsb和ocf:heartbeat,為了簡單起見,這里使用lsb類型:
#crm configure primitive WebSite lsb:httpd
可以通過主機的瀏覽器輸入http://172.25.80.1進行訪問web服務:
9,在節點2上使節點1離線:
# ssh node1 -- /etc/init.d/corosync stop
# crm status
============
Stack: openais
Current DC: server3 - partition WITHOUT quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ server3 ]
OFFLINE: [ server2 ]
此時節點1已經離線,而節點2卻無法獲得相應的資源,當然也無法訪問相應的服務,,此時的集群狀態是“WITHOUT quorum”,沒有了quorum,就無法使節點獲得相應的資源,集群服務無法正常運行。可以采取設置quorum,來忽略quorum。如下設置:
# crm configure property no-quorum-policy=ignore
# crm status
============
Stack: openais
Current DC: server3 - partition WITHOUT quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ seerver3 ]
OFFLINE: [ server2 ]
Resource Group: Web
WebIP (ocf::heartbeat:IPaddr):Started server3
WebSite (lsb:httpd): Started server3//此時節點2已經獲得資源
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。