前期準備,各個節點時間同步。
各個節點可以基於伺服器名稱互相訪問
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: corosynccurrent 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: corosynccurrent 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: corosynccurrent 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...