KVM學習筆記(集群泉唁,pacemaker和corosync簡單配置)

1 Linux集群架構(gòu)

Linux集群架構(gòu)一般分為四個層次結(jié)構(gòu):

  • 信息層:負責心跳信息的傳遞摊趾,corosync負責

  • 成員關系層:集群中成員關系的選舉,確定游两,corosync負責

  • 資源管理層:集群資源的管理砾层,如虛擬IP,存儲贱案,數(shù)據(jù)庫等等肛炮,pacemaker負責

  • 資源層:資源代理止吐,pacemaker負責

高可用集群的層次結(jié)構(gòu)

管理工具:

pcs:(Pacemaker Corosync Server)

CLVM:

集群化的LVM(Clustered LVM)

LVM的集群擴展,允許集群中的計算機通過LVM管理共享存儲

DRBD:

Distributed Replicated Block Device

軟件實現(xiàn)的侨糟、無共享的碍扔、服務器之間的鏡像塊設備內(nèi)容的存儲復制解決方案

GFS2/OCFS

Global File System 2/Oracle Cluster File System

集群文件系統(tǒng),使集群中的所有節(jié)點并發(fā)的通過標準文件系統(tǒng)接口來訪問存儲設備

2 Pacemaker體系結(jié)構(gòu)

集群總的結(jié)構(gòu)分三個部分秕重,資源代理不同,資源管理,信息及成員管理部分溶耘。

Pacemaker體系結(jié)構(gòu)

Pacemaker內(nèi)部組件

Pacemaker內(nèi)部組件

  CIB主要負責集群最基本的信息配置與管理二拐,Pacemaker中的 CIB主要使用 XML的格式來顯示集群的配置信息和集群所有資源的當前狀態(tài)信息。CIB所管理的配置信息會自動在集群節(jié)點之間進行同步凳兵, PE將會使用 CIB所提供的集群信息來規(guī)劃集群的最佳運行狀態(tài)百新。并根據(jù)當前 CIB信息規(guī)劃出集群應該如何控制和操作資源才能實現(xiàn)這個最佳狀態(tài),在 PE做出決策之后庐扫,會緊接著發(fā)出資源操作指令饭望,而 PE發(fā)出的指令列表最終會被轉(zhuǎn)交給集群最初選定的控制器節(jié)點( Designated controller,DC),通常 DC便是運行 Master CRMd的節(jié)點形庭。
  在集群啟動之初铅辞, pacemaker便會選擇某個節(jié)點上的 CRM進程實例來作為集群 Master CRMd,然后集群中的 CRMd便會集中處理 PE根據(jù)集群 CIB信息所決策出的全部指令集。在這個過程中萨醒,如果作為 Master的 CRM進程出現(xiàn)故障或擁有 Master CRM進程的節(jié)點出現(xiàn)故障巷挥,則集群會馬上在其他節(jié)點上重新選擇一個新的 Master CRM進程。
  在PE的決策指令處理過程中验靡,DC會按照指令請求的先后順序來處理PEngine發(fā)出的指令列表倍宾,簡單來說, DC處理指令的過程就是把指令發(fā)送給本地節(jié)點上的 LRMd(當前節(jié)點上的 CRMd已經(jīng)作為 Master在集中控制整個集群胜嗓,不會再并行處理集群指令)或者通過集群消息層將指令發(fā)送給其他節(jié)點上的 CRMd進程高职,然后這些節(jié)點上的 CRMd再將指令轉(zhuǎn)發(fā)給當前節(jié)點的 LRMd去處理。當集群節(jié)點運行完指令后辞州,運行有 CRMd進程的其他節(jié)點會把他們接收到的全部指令執(zhí)行結(jié)果以及日志返回給 DC(即 DC最終會收集全部資源在運行集群指令后的結(jié)果和狀態(tài))怔锌,然后根據(jù)執(zhí)行結(jié)果的實際情況與預期的對比,從而決定當前節(jié)點是應該等待之前發(fā)起的操作執(zhí)行完成再進行下一步的操作变过,還是直接取消當前執(zhí)行的操作并要求 PEngine根據(jù)實際執(zhí)行結(jié)果再重新規(guī)劃集群的理想狀態(tài)并發(fā)出操作指令埃元。
  在某些情況下,集群可能會要求節(jié)點關閉電源以保證共享數(shù)據(jù)和資源恢復的完整性媚狰,為此岛杀, Pacemaker引人了節(jié)點隔離機制,而隔離機制主要通過 STONITH進程實現(xiàn)崭孤。 STONITH是一種強制性的隔離措施类嗤, STONINH功能通常是依靠控制遠程電源開關以關閉或開啟節(jié)點來實現(xiàn)糊肠。在 Pacemaker中, STONITH設備被當成資源模塊并被配置到集群信息 CIB中遗锣,從而使其故障情況能夠被輕易地監(jiān)控到货裹。同時, STONITH進程( STONITHd)能夠很好地理解 STONITH設備的拓撲情況精偿,因此弧圆,當集群管理器要隔離某個節(jié)點時,只需 STONITHd的客戶端簡單地發(fā)出 Fencing某個節(jié)點的請求笔咽, STONITHd就會自動完成全部剩下的工作搔预,即配置成為集群資源的 STONITH設備最終便會響應這個請求,并對節(jié)點做出 Fenceing操作拓轻,而在實際使用中,根據(jù)不同廠商的服務器類型以及節(jié)點是物理機還是虛擬機经伙,用戶需要選擇不同的 STONITH設備扶叉。

3 管理工具pcs

[root@controller1 ~]$ pcs --help

Usage: pcs [-f file] [-h] [commands]...
Control and configure pacemaker and corosync.

Options:
    -h, --help         Display usage and exit.
    -f file            Perform actions on file instead of active CIB.
    --debug            Print all network traffic and external commands run.
    --version          Print pcs version information.
    --request-timeout  Timeout for each outgoing request to another node in
                       seconds. Default is 60s.

Commands:
    cluster     Configure cluster options and nodes.
    resource    Manage cluster resources.
    stonith     Manage fence devices.
    constraint  Manage resource constraints.
    property    Manage pacemaker properties.
    acl         Manage pacemaker access control lists.
    qdevice     Manage quorum device provider on the local host.
    quorum      Manage cluster quorum settings.
    booth       Manage booth (cluster ticket manager).
    status      View cluster status.
    config      View and manage cluster configuration.
    pcsd        Manage pcs daemon.
    node        Manage cluster nodes.
    alert       Manage pacemaker alerts.

最為常用的管理命令有:

  • cluster 配置集群選項和節(jié)點

  • status 查看當前集群資源和節(jié)點以及進程狀態(tài)

  • resource 創(chuàng)建和管理集群資源

  • constraint 管理集群資源約束和限制

  • property 管理集群節(jié)點和資源屬性

  • config 以用戶可讀格式顯示完整集群配置信息

4 集群資源

在 pacemaker高可用集群中产弹,資源就是集群所維護的高可用服務對象褂删。根據(jù)用戶的配置冯勉,資源有不同的種類损敷,其中最為簡單的資源是原始資源(primitive Resource),此外還有相對高級和復雜的資源組(Resource Group)和克隆資源(Clone Resource)等集群資源概念氓侧。在 Pacemaker集群中祥国,每一個原始資源都有一個資源代理(Resource Agent, RA), RA是一個與資源相關的外部腳本程序培他,該程序抽象了資源本身所提供的服務并向集群呈現(xiàn)一致的視圖以供集群對該資源進行操作控制绸罗。

使用pcs resource agent可以查看當前集群正在使用的agent
[root@node1 ~]$ pcs resource agent
使用pcs resource 可以查看當前集群正在使用的資源
[root@node1 ~]$ pcs resource

4.1 Fencing Agent

隔離代理,Fencing在一個節(jié)點不穩(wěn)定或者無應答時將其關閉,使得它不會損壞集群的其他資源,用于消除腦裂荒典。
常見Fencing Agent類型:

  • Power類型
    將節(jié)點的電源斷電,通常連接到物理設備如UPS
  • Storage類型
    確保某個時間只有一個節(jié)點會讀寫共享的存儲

4.2 STONITH(shoot the other node in the head)

Heartbeat軟件包的一個組件酪劫,用于防止集群出現(xiàn)腦裂現(xiàn)象。一旦集群中的節(jié)點相互之間失去了通信寺董,無法知道其他節(jié)點的狀態(tài)覆糟,此時集群中的每個節(jié)點將嘗試fence(隔離或“射殺”)失去通信的節(jié)點,確保這些節(jié)點不再搶奪資源遮咖,然后才繼續(xù)啟動服務資源滩字,對外提供服務。

  • 主服務器可以復位備用服務器的電源
  • 備用服務器也可以復位主服務器的電源

安裝fence-agents軟件包

yum -y install fence-agents

安裝完畢后可查看到系統(tǒng)支持的stonith設備類型

[root@node1 ~]$ pcs stonith list
fence_apc - Fence agent for APC over telnet/ssh
fence_apc_snmp - Fence agent for APC, Tripplite PDU over SNMP
fence_bladecenter - Fence agent for IBM BladeCenter
fence_brocade - Fence agent for HP Brocade over telnet/ssh
fence_cisco_mds - Fence agent for Cisco MDS
fence_cisco_ucs - Fence agent for Cisco UCS
fence_compute - Fence agent for the automatic resurrection of OpenStack compute
                instances
fence_drac5 - Fence agent for Dell DRAC CMC/5
fence_eaton_snmp - Fence agent for Eaton over SNMP
fence_emerson - Fence agent for Emerson over SNMP
fence_eps - Fence agent for ePowerSwitch
fence_evacuate - Fence agent for the automatic resurrection of OpenStack compute
                 instances
fence_hpblade - Fence agent for HP BladeSystem
fence_ibmblade - Fence agent for IBM BladeCenter over SNMP
fence_idrac - Fence agent for IPMI
fence_ifmib - Fence agent for IF MIB
fence_ilo - Fence agent for HP iLO
fence_ilo2 - Fence agent for HP iLO
fence_ilo3 - Fence agent for IPMI
fence_ilo3_ssh - Fence agent for HP iLO over SSH
fence_ilo4 - Fence agent for IPMI
fence_ilo4_ssh - Fence agent for HP iLO over SSH
fence_ilo_moonshot - Fence agent for HP Moonshot iLO
fence_ilo_mp - Fence agent for HP iLO MP
fence_ilo_ssh - Fence agent for HP iLO over SSH
fence_imm - Fence agent for IPMI
fence_intelmodular - Fence agent for Intel Modular
fence_ipdu - Fence agent for iPDU over SNMP
fence_ipmilan - Fence agent for IPMI
fence_kdump - Fence agent for use with kdump
fence_mpath - Fence agent for multipath persistent reservation
fence_rhevm - Fence agent for RHEV-M REST API
fence_rsa - Fence agent for IBM RSA
fence_rsb - I/O Fencing agent for Fujitsu-Siemens RSB
fence_sbd - Fence agent for sbd
fence_scsi - Fence agent for SCSI persistent reservation
fence_virt - Fence agent for virtual machines
fence_vmware_soap - Fence agent for VMWare over SOAP API
fence_wti - Fence agent for WTI
fence_xvm - Fence agent for virtual machines

以上輸出中的每個Fence agent都是一種Stonith設備御吞,從名字的后綴可以看出麦箍,這些Agent有以下幾類:
  通過服務器的管理口來關閉被fencing節(jié)點的電源,如ilo陶珠,ipmi挟裂,drac,絕大多數(shù)Agent屬于此類揍诽,這些用于控制物理服務器節(jié)點话瞧。
  通過Hybervisor虛擬層或云平臺關閉被fencing的節(jié)點嫩与,如virt,vmware交排,xvm划滋,compute,這些用于控制虛機節(jié)點埃篓。
  通過禁止被fencing節(jié)點訪問特定資源阻止起啟動处坪,如scsi,math架专,brocade同窘。
  前兩種都屬于電源類型的Stonith設備,而第三種和電源無關部脚,之所以要這樣劃分想邦,是因為:
  使用非電源類型Stonith設備時,被fenced的節(jié)點沒有關閉電源委刘,僅僅是服務沒有啟動丧没。在對其重啟前,必須進行unfence锡移,這樣節(jié)點才能正常重啟呕童。因此創(chuàng)建此種類型的Stonith設備時需指定參數(shù)meta provides=unfencing
  使用電源類型的stonith設備則無需指定淆珊,因為被fenced的節(jié)點電源已經(jīng)被關閉夺饲,而啟動節(jié)點這個操作本身即為unfenced。

4.3 Pacemaker服務模式

  1. Active/Active模式
    負載均衡模式
  2. Active/Passive模式
    主備模式
  3. N+1模式
    所謂的N+1就是多準備一個額外的備機節(jié)點施符,當集群中某一節(jié)點故障后該備機節(jié)點會被激活從而接管故障節(jié)點的服務往声。在不同節(jié)點安裝和配置有不同軟件的集群中,即集群中運行有多個服務的情況下戳吝,該備機節(jié)點應該具備接管任何故障服務的能力烁挟,而如果整個集群只運行同一個服務,則N+1模式便退變?yōu)?Active/Passive模式骨坑。
  4. N+M模式
    在單個集群運行多種服務的情況下撼嗓,N+1模式下僅有的一個故障接管節(jié)點可能無法提供充分的冗余,因此欢唾,集群需要提供 M(M>l)個備機節(jié)點以保證集群在多個服務同時發(fā)生故障的情況下仍然具備高可用性且警, M的具體數(shù)目需要根據(jù)集群高可用性的要求和成本預算來權衡。

5 集群安裝及基本配置

5.1 安裝軟件

需要安裝pacemaker礁遣、corosync斑芜、pcs、psmic祟霍、policycoretils-python杏头、fence-agents-all

5.2 配置SSH免密登錄

使用ssh-keygen盈包,ssh-copy-id命令

5.3 配置時鐘服務器

在crontab中寫入定時同步任務

每隔30分鐘,同步一次時間
[root@node1 ~]$ crontab -e
*/30  *  *  *  * /usr/sbin/ntpdate time.windows.com &> /dev/null

5.4 添加防火墻規(guī)則

firewalld自帶high-availability服務醇王,可以打開以下端口:

  • TCP:端口2224呢燥、3121、21064
  • UDP:端口5405
  • DLM:端口21064
[root@node1 ~]$ firewall-cmd --add-service=high-availability --permanent 
[root@node1 ~]$ firewall-cmd --reload

5.5 配置pcsd守護程序

pcs軟件包包括守護程序寓娩、命令行工具叛氨、GUI工具

打開pcsd守護程序,并設置自動啟動
[root@node1 ~]$ systemctl start pcsd
[root@node1 ~]$ systemctl enable pcsd

5.6 配置hacluster賬戶密碼

安裝集群軟件包時棘伴,會創(chuàng)建一個hacluster賬戶寞埠,它的密碼默認是禁用的

[root@node1 ~]$ getent shadow hacluster
hacluster:!:18531::::::
第二個字段是!表示禁止此賬號登錄

此賬號是用于集群之間通信時的身份認證的,必須要在每個節(jié)點上設置密碼以啟用此賬戶

[root@node1 ~]$ echo 'linuxplus' | passwd --stdin hacluster
[root@node1 ~]$ getent shadow hacluster
hacluster:$6$UbmPEg20$UMxkxEBbeQHadgq6dgmM87LZ8s5yDcnnEDnuTdMQ3.CrdCULHVX8TxTNAKeR6MVMWC0i.wbGWFmvMuMdfajki/:18531::::::
第二個字段變?yōu)榱思用艿拿艽a

5.7 集群及Pacemaker配置文件

配置文件為corosync.conf和cib.xml焊夸,默認不存在仁连。
/etc/corosync/下有corosync.conf.example官方的配置示例。
/var/lib/pacemaker/cib/cib.xml是自動生成的集群數(shù)據(jù)庫文件阱穗。
corosync.conf提供corosync使用的集群參數(shù)饭冬。
cib.xml存儲集群配置及所有資源的信息,pcsd負責在集群的所有節(jié)點上同步cib的內(nèi)容颇象。
不推薦手工修改配置文件伍伤,推薦使用pcs工具進行管理維護

6 集群的創(chuàng)建

6.1 認證集群節(jié)點

認證組成集群的節(jié)點并徘,在任意一個節(jié)點上驗證所有的節(jié)點遣钳,使用之前配置的hacluster賬號。

pcs cluster auth [<node>[:<port>]] [...] [-u <username>] [-p <password>] [--force] [--local]
[root@node1 ~]$ pcs cluster auth node1 node2 -u hacluster -p linuxplus
node1: Authorized
node2: Authorized

6.2 配置和同步集群節(jié)點

創(chuàng)建配置文件/etc/corosync/corosync.conf:

  • 手工創(chuàng)建:參考example文件
  • 自動生成:通過pcs cluster setup命令創(chuàng)建麦乞,推薦使用這種方式
pcs cluster setup --name <cluster name> <node1[,node1-altaddr]> [<node2[,node2-altaddr]>]
[root@node1 ~]$ pcs cluster setup --name cluster1 node1 node2

6.3 在集群節(jié)點中啟動集群服務

使用pcs cluster start命令蕴茴,默認只會啟動本節(jié)點,需要添加--all參數(shù)

[root@node1 ~]$ pcs cluster start --help

Usage: pcs cluster start...
    start [--all | <node>... ] [--wait[=<n>]] [--request-timeout=<seconds>]
        Start a cluster on specified node(s). If no nodes are specified then
        start a cluster on the local node. If --all is specified then start
        a cluster on all nodes. If the cluster has many nodes then the start
        request may time out. In that case you should consider setting
        --request-timeout to a suitable value. If --wait is specified, pcs
        waits up to 'n' seconds for the cluster to get ready to provide
        services after the cluster has successfully started.
[root@node1 ~]$ pcs cluster start --all
node1: Starting Cluster (corosync)...
node2: Starting Cluster (corosync)...
node1: Starting Cluster (pacemaker)...
node2: Starting Cluster (pacemaker)...

查看集群狀態(tài)姐直,發(fā)現(xiàn)集群組件已經(jīng)啟動倦淀,node1是目前的DC
[root@node1 ~]$ pcs cluster status
Cluster Status:
 Stack: corosync
 Current DC: node1 (version 1.1.21-4.el7-f14e36fd43) - partition WITHOUT quorum
 Last updated: Mon Sep 28 12:29:38 2020
 Last change: Sat Sep 26 21:27:37 2020 by hacluster via crmd on node1
 2 nodes configured
 0 resources configured

PCSD Status:
  node1: Online
  node2: Online
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市声畏,隨后出現(xiàn)的幾起案子撞叽,更是在濱河造成了極大的恐慌,老刑警劉巖插龄,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愿棋,死亡現(xiàn)場離奇詭異,居然都是意外死亡均牢,警方通過查閱死者的電腦和手機糠雨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徘跪,“玉大人甘邀,你說我怎么就攤上這事琅攘。” “怎么了松邪?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵坞琴,是天一觀的道長。 經(jīng)常有香客問我测摔,道長置济,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任锋八,我火速辦了婚禮浙于,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挟纱。我一直安慰自己羞酗,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布紊服。 她就那樣靜靜地躺著檀轨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欺嗤。 梳的紋絲不亂的頭發(fā)上参萄,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音煎饼,去河邊找鬼讹挎。 笑死,一個胖子當著我的面吹牛吆玖,可吹牛的內(nèi)容都是我干的筒溃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沾乘,長吁一口氣:“原來是場噩夢啊……” “哼怜奖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起翅阵,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤歪玲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后掷匠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滥崩,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年槐雾,在試婚紗的時候發(fā)現(xiàn)自己被綠了夭委。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖株灸,靈堂內(nèi)的尸體忽然破棺而出崇摄,到底是詐尸還是另有隱情,我是刑警寧澤慌烧,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布逐抑,位于F島的核電站,受9級特大地震影響屹蚊,放射性物質(zhì)發(fā)生泄漏厕氨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一汹粤、第九天 我趴在偏房一處隱蔽的房頂上張望命斧。 院中可真熱鬧,春花似錦嘱兼、人聲如沸国葬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汇四。三九已至,卻和暖如春踢涌,著一層夾襖步出監(jiān)牢的瞬間通孽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工睁壁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留背苦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓堡僻,卻偏偏與公主長得像糠惫,于是被迫代替她去往敵國和親疫剃。 傳聞我的和親對象是個殘疾皇子钉疫,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354