Linux rhel7.0 pacemaker集群搭建和配置
一 Linux 集群發展史
高可用集群的層次結構
1 消息/基礎架構 corosync
2 成員關系 :監聽心跳信息,並進行處理成員關系和計算成員關系的票數等信息
3 資源管理 VIP 磁盤 文件系統 CRM (群集資源管理器)等,有些策略引擎(有些資源是放置在同一個節點和其依賴關系) 和資源的分配調度有關
4 資源 : 對特定資源的操作,通過一定的腳本實現
pacemaker 群集資源管理器
corosync 消息/基礎架構
管理工具
crmsh : crm (cluster resource manager )shell (centos 7 已經廢棄)
pcs : pacemaker corosync server
CLVM
集群化的LVM(clustered LVM)
LVM 的一個集群方面的擴展,允許集群中的計算機通過LVM 管理共享存儲
DRBD
distributed replicated block device (DRBD)
軟件實現的、無共享的、服務器之間的鏡像塊設備內容的復制解決方案
GFS2/OCFS
global file system 2 / oracle Cluster file system
集群文件系統使用集群中的所有節點並發的通過標準文件系統接口來訪問存儲設備
二 Linux HA 體系結構
pacemaker 體系結構
群集的組成:
1 基本的消息層
2 資源管理層
pacemaker 內部組件
四個關鍵組件
1 CIB(群集信息基礎)xml 文件,信息在群集之間同步
2 CRMd(群集資源管理守護進程)通過選舉一個DC,是一個指定的協調者
3 PEngine(PE or 策略引擎)
4 STONITHd
shoot-the-other-node-in-the-head
爆其他節點的頭
corosync
corosync 位於高可用集群結構中的底層,為各個節點(node)之間提供心跳信息傳遞這樣一個角色
心跳: 就是講多臺服務器用網絡連接起來,而後每一臺服務器都不停的將自己依然在線的信息使用很簡短很小的通告給同一網絡中的其他主機,告訴他們自己依然在線,其他服務器收到這個心跳信息就認為它是在線的,尤其是主服務器
fencing agent
隔離引擎
集群通常需要使用fencing agent
fencing 是在一個節點不穩定或者無答復時將其關閉,使得他不會損壞集群的其他資源,其主要用途是消除腦裂
常見的fencing agent 類型
power 類型的agent
會將節點的電源斷電,他通常鏈接到物理設備比如UPS
storage類型的agent
會確保某個時刻只有一個節點會讀寫共享的存儲
resource agent
RA 是管理一個集群資源的可執行程序,沒有固定其實現的編程語言,但大部分RA 都是使用shell 腳本實現的
pacemaker 使用RA來和收管理資源進行交互,它即支持它自身實現的70多個RA,也支持第三方RA
要實現一個RA, 需要遵循OCF 規範
pacemaker 支持三種類型的RA:
LSB resource agents
OCF resource agents
legacy heartbeat resource agents
RA 支持的主要操作包括:
start 、 stop 、monitor、validate-all、meta-data...
pcs resource agnet 查看相關的agent
STONITH
stonith 是“shoot the other node in the head ” 的首字母簡寫
他是heartbeat 軟件包的一個組件
它允許使用一個遠程或“智能的”鏈接到健康服務器的電源設備自動重啟失效負無窮的電源
stonith 設備可以關閉電源並相應軟件命令,運行heartbeat的服務器可以通過串口線或網線向stonith設備發送命令,他控制高可用服務器對其他服務器的電力供應
主服務器可以復位備用服務器的電源
備用服務器也可以復位主服務的電源
三 高可用解決方案概述
1 active/passive
只有當主節點故障時,備用節點才會啟用
2 shared failover
最後一個設備作為前面幾臺服務器的備用服務器節點
3 N to N redundancy
需要有群集文件系統,能夠實現對同一資源的並發訪問
群集的規劃和設計
軟件
群集類型:A/P,A/A....
操作系統嗎:redhat/centos,suse
群集軟件:pacemaker+corosync...
群集配置: 群集名稱,資源依賴,次序等約束
硬件
服務器:
HCL,帶外管理,冗余電源
網絡:
將業務、心跳、存儲、帶外管理網絡分開
網卡的捆綁、冗余
存儲:
控制器,接口,raid 級別
空間規劃
二 基於NFS共享存儲的集群搭建
一 環境準備
1 本地yum源,通過本地掛載配置進行配置
2 網絡yum
[pacemkaker]
name=pacemaker
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
3 安裝軟件包
yum -y install pacemaker corosync pcs psmisc policycoreutils-python fence-agents-all
二 群集節點的準備
1 配置主機名及解析
2 配置SSH key 互信
3 配置時鐘
4 配置防火墻相關(本實驗關閉防火墻和SELinux,生產環境不建議關閉)
三 群集創建
1 配置pcs 守護程序
2 設置hacluster 賬戶密碼
安裝群集軟件包時,會創建一個賬戶hacluster,它的密碼是禁用的
此賬戶用於群集間通信時的身份驗證
必須在每個節點設置其密碼後並啟用此賬戶
3 集群配置文件
群集及pacemaker配置文件
配置文件為corosync.conf 和 cib.xml,默認不存在
corosync.conf 文件提供corosync 使用的集群參數
cib.xml 是 XML 文件,存儲集群配置及所有資源的信息,pcsd 守護程序負責整個節點上同步CIB的內容
最佳策略
雖然可以手工創建、修改、但建議通過pcs 工具進行管理和維護
4 認證組成群集的節點
5 配置和同步群集節點
6 在群集節點中啟動群集資源並查看圖形化界面相關
圖形化界面:用戶名為hacluster 密碼為前面設置認證時使用的密碼
四 共享存儲配置和掛載
1 NFS相關配置
2置將虛擬機遷移到共享存儲中
3 手動遷移測試
4此處需要將磁盤的高級選項改為none
5配置並遷移資源
將虛擬的有KVM 放權
virsh undefine rhel7.3
pcs resource create rh7.3 ocf:heartbeat:VirtualDomain \
hypervisor="qemu:///system" \
config="/vm/qemu_config/rhel7.3.xml" \
migration_transport=ssh \
meta allow-migrate="true" priority="100" \
migration_transport=ssh \
op start timeout="120s" \
op stop timeout="120s" \
op monitor timeout="30" interval="10" \
op migrate_from interval="0" timeout="120s" \
op migrate_to interval="0" timeout="120"
6關閉腦裂
並查看狀態
五 遷移測試
pcs resource move X
pcs resource move X Y
其中如果選擇第一個,如果有多個節點,則其會根據集群內部算法進行計算決定遷移的目標節點,如果選擇第二個,則Y表示目標節點,X表示資源名稱
配置節點standby/unstandby
stop 節點進行測試,資源自動遷移
服務運行的情況下進行的
六其他相關資源及配置
1 配置群集的stonith
二 配置基於iscsi 存儲的服務和配置stonith (disk)
1 基本概述
在SAN中,主機一般都是initiator, 存儲設備則是target
initator
scsi 會話的發起方
向target 請求LUN,並將數據的讀寫指令發送給target
target
接受scsi 會話的一方
他接收來自initiator 的指令,為initiator 提供LUN,並實現對LUN的讀寫
Linux上主要的開源target 項目
Linux scsi target - STGT /tgt (之前的版本)
Linux-IO target-LIO Linux 2.6.38開始納入內核 ,內核模式的模擬,對用戶提供友好的管理工具
SCST-Generic SCSI subsystem for linux
Linux-IO target 概述
Linux-IO target 在Linux內核中,用軟件實現各種SCSI target
前端
FC FCOE ISCSI 1394 infiniband USB vhost
架構
支持SSE4.2高性能,多線程
支持x86,ia64,alpha,cell PPC,ARM, MIPS 等多種CPU
支持高可用,負載平衡集群
2 環境準備:
同上
3 安裝Linux 的存儲服務器
1 安裝targetcli 軟件包
2 配置target
1 創建存儲對象
2 創建ISCSI target
3 配置target portal group(TPG)
1 配置portals
2 配置LUN: 添加塊設備,ramdisk,fileio三個LUN
3 配置ACL
查看ISCSI initator 查看其IQN
為每個initiator創建ACL
4 保存配置
5 設置target 服務自啟動
6 檢查配置
Linux-IO target
Linux上主要的開源target
Linux-IO
7 使用存儲上40GB的磁盤
pcs stonith create scsi-shooter fence_scsi pcmk_host_list="node1 node2"\
devices="/dev/disk/by-id/wwn-0x6001405876a238fd00745d198419fc60" \
meta provides=unfencing \4安裝群集文件系統軟件
OCFS2和GFS2是群集文件系統
5 配置DLM
需要進行克隆和兩個節點上都存在
pcs resource create dlm ocf:pacemaker:controld \
op monitor interval=30s \
on-fail=fence clone interleave=true ordered=true6 LVM-cluster 安裝和配置
其運行必須是兩個節點都能運行
pcs resource create clvmd ocf:heartbeat:clvm \
op monitor interval=30s \
配置約束:
次序約束和位置約束:
查看約束:
創建LV
在集群中創建LV與在單節點上創建LV 是一樣的
其必須保證群集基礎架構運行正常,並有quorate 法定人數
1 創建一個分區,設置為8e 及 LVM
刷新磁盤:
7 創建GFS2 文件系統
相關參數講解:
-p 使用的協議
-j 保存的日誌的份數
-t 指定的鎖定的表,其方式是群集的名稱和其他
最後指定塊設備
向集群中添加GFS2 文件系統
添加克隆的資源,即在每個節點上均掛載文件系統
pcs resource create VMFS ocf:heartbeat:Filesystem
device="/dev/vg0/lv0" directory="/vm" fstype="gfs2" clone
配置約束
8 添加虛擬機資源並配置約束
配置和處理相關約束
9遷移虛擬機測試
Linux rhel7.0 pacemaker集群搭建和配置