corosync pacemaker部署高可用集群

2022-05-22 13:21:07 字數 4695 閱讀 5573

前期準備,各個節點時間同步。

各個節點可以基於伺服器名稱互相訪問

yum安裝corosync和pacemaker

編輯配置corosync配置檔案:

totem 

}logging

}quorum

nodelist

node

node

}service

使用corosync-keygen生成/etc/corosync/authkey檔案,這裡可以使用-l選項,

corosync-keygen -l -k /etc/corosync/authkey

將/etc/corosync/目錄下的authkey corosync.conf同步到其他節點上。

各個節點啟動corosync服務。

執行crm_mon

stack: corosync

current dc: node63.colinshi.top (version

1.1.18-11.el7_5.2-2b07d5c5a9) -partition with quorum

last updated: wed jun

2714:38:14

2018

last change: wed jun

2713:40:48

2018

by root via crm_attribute on node61.colinshi.top

3nodes configured

0resources configured

online: [ node61.colinshi.top node62.colinshi.top node63.colinshi.top ]

no active resources

可以看到3個節點均上線online狀態。

接下來就可以定義資源

這裡是使用了crmsh這個軟體。用於配置相關資源等。

具體安裝參見:

我這邊準備配置2組資源乙個是,每組資源有乙個ip位址和乙個服務組成

第一組為ip+nginx

定義2個資源:

crm configure primitive nginx_ip ocf:heartbeat:ipaddr ip='192.168.1.69'

crm configure primitive nginx_server systemd:nginx

2個資源合併到乙個組內

crm configure group nginx_group nginx_server systemd:nginx

stack: corosync

current dc: node63.colinshi.top (version

1.1.18-11.el7_5.2-2b07d5c5a9) -partition with quorum

last updated: thu jun

2815:44:19

2018

last change: thu jun

2815:41:53

2018

by root via cibadmin on node61.colinshi.top

3nodes configured

2resources configured

online: [ node61.colinshi.top node62.colinshi.top node63.colinshi.top ]

full list of resources:

resource group: nginx_group

nginx_ip (ocf::heartbeat:ipaddr): started node61.colinshi.top

nginx_server (systemd:nginx): started node61.colinshi.top

第二組為ip+mysql+檔案掛載

定義3個資源

crm configure primitive mysql_ip ocf:heartbeat:ipaddr ip='192.168.1.68'

crm configure primitive mysql_server systemd:mysqld

crm configure primitive mysql_filesystem ocf:heartbeat:filesystem device='192.168.1.2:/volume1/mydata' directory='/mydata' fstype='nfs' 

定義colocation排列約束確保3個資源在一起

crm configure colocation mysql_file_with_server inf: mysql_filesystem mysql_server

crm configure colocation mysql_ip_with_server inf: mysql_ip mysql_server

定義order順序約束

crm configure order mysql_file_order_server serialize: mysql_ip mysql_filesystem mysql_server

基本搞定:

stack: corosync

current dc: node63.colinshi.top (version

1.1.18-11.el7_5.2-2b07d5c5a9) -partition with quorum

last updated: fri jun

2916:11:54

2018

last change: fri jun

2916:11:34

2018

by root via crm_attribute on node61.colinshi.top

3nodes configured

5resources configured

online: [ node61.colinshi.top node62.colinshi.top node63.colinshi.top ]

full list of resources:

resource group: nginx_group

nginx_ip (ocf::heartbeat:ipaddr): started node62.colinshi.top

nginx_server (systemd:nginx): started node62.colinshi.top

mysql_filesystem (ocf::heartbeat:filesystem): started node61.colinshi.top

mysql_ip (ocf::heartbeat:ipaddr): started node61.colinshi.top

mysql_server (systemd:mysqld): started node61.colinshi.top

在來定義乙個位置約束

將mysql的服務優先定義在node63.colinshi.top上

location mysql_for_node63 mysql_ip 100: node63.colinshi.top

定義乙個mysql_ip足矣。因為之前3個mysql資源被定義了排列約束,必定會都在一起。

接下來只要node63.colinshi.top存活,那麼mysql服務就會優先在node63.colinshi.top上啟動。

online: [ node61.colinshi.top node62.colinshi.top node63.colinshi.top ]

full list of resources:

resource group: nginx_group

nginx_ip (ocf::heartbeat:ipaddr): started node62.colinshi.top

nginx_server (systemd:nginx): started node62.colinshi.top

mysql_filesystem (ocf::heartbeat:filesystem): started node63.colinshi.top

mysql_ip (ocf::heartbeat:ipaddr): started node63.colinshi.top

mysql_server (systemd:mysqld): started node63.colinshi.top

其次定義資源(resource),如果是要定義組資源(group),可以先定義組,然後在組內新增相關資源。使用資源**(ra):resource agents information center進行定義資源

組資源是可以看成一群資源的集合

clone資源其實就是同時在n個節點上使用的資源形式,而master/salve是一種特殊的轉殖資源

資源之間可以有3個約束關係,location(位置約束):資源對節點的傾向性,colocation(排列約束):資源彼此間是否能執行於同一節點的傾向性,order(順序約束):多個資源啟動順序依賴關係

集群的關鍵就是資源的定義和約束。

最後如果定義了非對稱節點,那麼就需要對資源定義故障轉移域(failover domains)

nginx,keepalived高可用部署

環境 172.16.91.218 主 172.16.91.219 安裝包版本 nginx 1.14.0.tar.gz keepalived 2.0.7.tar.gz 把 nginx,keepalived 壓縮包 上傳到 usr local src 兩個機器 都 安裝 nginx 安裝 依賴 包 yu...

xxl job高可用部署

xxl job高可用部署 xxl job作為分布式任務排程中心,怎麼實現高可用呢,如下圖所示 當我們部署一套 xxl job 的時,排程中心 可用分布式部署,首先我們的排程中心最好部署兩台,排程中心會指向同乙個 mysql 例項,這樣排程中心一定程度上可以保證它的 ha 1 對於頁面的請求操作是根據...

lvs的高可用部署

避免單點故障 vs故障 需要高可用 多個排程器。可用keepalived來實現 vrrp是一種容錯協議,它保證當主機的下一跳路由器出現故障時,由另一台路由器來代替出現故障的路由器進行工作,從而保持網路通訊的連續性和可靠性。tar zxvf keepalived 2.0.6.tar.gz 進入keep...