2017年3月25日 星期六

在 CentOS7/RHEL7 上,學習架設 High-Availability 服務(十四)

學習目標:
  • 建立叢集系統的網路備援機制!
操作流程:練習(一)
  1. 在乾淨的環境上,建立叢集系統:
    [root@nodea ~]# yum -y install pcs fence-agents-all fence-agents-rht
    [root@nodea ~]# systemctl enable pcsd
    [root@nodea ~]# systemctl start pcsd
    [root@nodea ~]# firewall-cmd --permanent --add-service=high-availability
    [root@nodea ~]# firewall-cmd --reload
    [root@nodea ~]# echo centos | passwd --stdin hacluster
    [root@nodea ~]# pcs cluster auth -u hacluster -p centos node{a..c}.example.com
    
  2. 在 nodea 上設定叢集系統使用 RRP 的 passive 模式,建立兩個 ring 網路環境:
    [root@nodea ~]# pcs cluster setup --start --enable --name clusterX \
    > nodea.example.com,nodea_r1.example.com \
    > nodeb.example.com,nodeb_r1.example.com \
    > nodec.example.com,nodec_r1.example.com \
    > --rrpmode passive 
    
  3. 在 nodea 上,建立 fence 限制機制:
    [root@nodea ~]# pcs stonith create fence_all fence_rht \
    > ipaddr="fencing.example.com" \
    > pcmk_host_check="none"
    > pcmk_host_list=""
    
  4. 在 nodec 上,測試網路運作機制:
    [root@nodec ~]# nmcli con down "System eth1"
    [root@nodea ~]# corosync-quorumtool
    [root@nodec ~]# nmcli con down "System eth2"
    
操作流程:練習(二)
  1. 查詢 multipath 上的硬體裝置:
    [root@nodea ~]# ls /dev/disk/by-id/dm-uuid-mpath-*
    
  2. 建立該硬體資源的 fence 代理管理設定:
    [root@nodea ~]# pcs stonith create scsi-killer fence_scsi \
    > devices="/dev/disk/by-id/dm-uuid-mpath-FQDN" \
    > pcmk_monitor_action=metadata \
    > pcmk_host_list="nodea.example.com nodeb.example.com nodec.example.com" \
    > pcmk_reboot_action="off" \
    > meta provides="unfencing"
    
  3. 在每個節點上,分別建立兩個不同 level 的 fence 代理機制:
    [root@nodea ~]# pcs stonith level add 1 nodea.example.com fence_nodea
    [root@nodea ~]# pcs stonith level add 2 nodea.example.com scsi-killer
    
  4. 利用更動 nodec 的設定,觀察 fence 運作情況:
    [root@nodea ~]# pcs stonith update fence_nodec ipaddr="broken.example.com"
    [root@nodea ~]# pcs stonith fence nodec.example.com
    [root@nodea ~]# multipath -ll
    

在 CentOS7/RHEL7 上,學習架設 High-Availability 服務(十三)

學習目標:
  • 用 GFS2 叢集檔案系統提供資源儲存!
操作流程:練習(一)
  1. 在各節點上,安裝 gfs2-utils 與 lvm2-cluster 兩個套件:
    [root@nodea ~]# yum -y install gfs2-utils lvm2-cluster
    
  2. 在各節點上,設定 no-quorum-policy=freeze:
    [root@nodea ~]# pcs property set no-quorum-policy=freeze
    
  3. 在 nodea 節點上,設定 DLM 代理資源:
    [root@nodea ~]# pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true
    
  4. 在各節點上,設定 locking_type 在 /etc/lvm/lvm.conf 檔案內:
    [root@nodea ~]# lvmconf --enable-cluster
    
  5. 在各節點上,先暫停 lvm2-lvmetad 服務的運作,以利修改設定檔:
    [root@nodea ~]# systemctl stop lvm2-lvmetad
    
  6. 在 nodea 節點上,設定 clvmd 成為叢集資源:
    [root@nodea ~]# pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true
    
  7. 在 nodea 節點上,設定啟用條件順序,讓 dlm 資源早於 clvmd 資源啟用,並且只能用於同一節點上:
    [root@nodea ~]# pcs constraint order start dlm-clone then clvmd-clone
    [root@nodea ~]# pcs constraint colocation add clvmd-clone with dlm-clone
    
  8. 在 nodea 節點上,建立 LVM 檔案系統:
    [root@nodea ~]# pvcreate /dev/mapper/mpatha
    [root@nodea ~]# vgcreate -Ay -cy cluster_vg /dev/mapper/mpatha
    [root@nodea ~]# lvcreate -L 2G -n gfsdata cluster_vg
    
  9. 在 nodea 節點上,建立 gfs2 檔案系統於 LVM 上:
    [root@nodea ~]# mkfs.gfs2 -t clusterX:gfsdata -j2 /dev/mapper/cluster_vg-gfsdata
    [root@nodea ~]# mkdir /gfsdata
    [root@nodea ~]# mount -t gfs2 /dev/mapper/cluster_vg-gfsdata /gfsdata
    [root@nodea ~]# echo "Hello, cluster gfs2" > /gfsdata/test1
    
操作流程:練習(二)
  1. 在 nodec 上,將 LVM 檔案系統掛載 (會發現空間不足掛載):
    [root@nodec ~]# mount -t gfs2 /dev/mapper/cluster_vg-gfsdata /gfsdata
    
  2. 在 nodea 上檢查 GFS2 檔案系統掛載情況以及硬碟剩餘空間:
    [root@nodea ~]# gfs2_edit -p jindex /dev/mapper/cluster_vg-gfsdata | grep journal
    [root@nodea ~]# df -h /gfsdata
    
  3. 在 nodea 上,增加兩個 journal 掛載數:
    [root@nodea ~]# gfs2_jadd -j2 /gfsdata
    
  4. 在 nodea 上,再次檢查 GFS2 檔案系統掛載情況以及硬碟剩餘空間:
    [root@nodea ~]# gfs2_edit -p jindex /dev/mapper/cluster_vg-gfsdata | grep journal
    [root@nodea ~]# df -h /gfsdata
    
  5. 在 nodea 上,增加 LVM 空間:
    [root@nodea ~]# lvextend -L +512MB /dev/mapper/cluster_vg-gfsdata
    
  6. 在 nodea 上,增加 GFS 空間至 LVM 空間大大:
    [root@nodea ~]# gfs2_grow /gfsdata
    [root@nodea ~]# df -h /gfsdata
    
  7. 在 nodec 上,再次將 LVM 檔案系統掛載:
    [root@nodec ~]# mount -t gfs2 /dev/mapper/cluster_vg-gfsdata /gfsdata
    
操作流程:練習(三)
  1. 在各節點上,準備 DLM 以及 clvmd 服務:
    [root@nodea ~]# yum install -y gfs2-utils lvm2-cluster
    [root@nodea ~]# pcs property set no-quorum-policy=freeze
    [root@nodea ~]# pcs resource create dlm ocf:pacemaker:controld op monitor \ 
    > interval=30s on-fail=fence clone interleave=true ordered=true
    [root@nodea ~]# lvmconf --enable-cluster
    [root@nodea ~]# systemctl stop lvm2-lvmetad
    [root@nodea ~]# pcs resource create clvmd ocf:heartbeat:clvm op monitor \
    > interval=30s on-fail=fence clone interleave=true ordered=true
    [root@nodea ~]# pcs constraint order start dlm-clones then clvmd-clone
    [root@nodea ~]# pcs constraint colocation add clvmd-clone with dlm-clone
    
  2. 在 nodea 上,建立 LVM ,並且製作 GFS2 檔案系統:
    [root@nodea ~]# pvcreate /dev/mapper/mpatha
    [root@nodea ~]# vgcreate -Ay -cy socks /dev/mapper/mpatha
    [root@nodea ~]# lvcreate -L 1G -n shoes socks
    [root@nodea ~]# mkfs.gfs2 -t clusterx:centos-gfs2 -j3 /dev/mapper/socks-shoes 
    
  3. 在 nodea 上,建立 cluster 資源:
    [root@nodea ~]# pcs resource create clusterfs Filesystem \
    > device="/dev/socks/shoes" directory="/mnt/pants" \
    > fstype="gfs2" options="noatiome" op monitor interval=10s
    > on-fail=fence clone interleave=true
    [root@nodea ~]# pcs constraint order start clvmd-clone then clusterfs-clone
    [root@nodea ~]# pcs constraint colocation add clusterfs-clone with clvmd-clone
    
  4. 在 nodec 上,確認掛載況狀:
    [root@nodec ~]# mount | grep /mnt/pants
    

在 CentOS7/RHEL7 上,學習架設 High-Availability 服務(十二)

學習目標:
  • 用 LVM 架 GFS 檔案系統!
  • Cluster 上的 LVM 架構:HA-LVM 與 Clustered LVM!
    • HA-LVM:vg 與其上的 lv,一次只給一個節點使用!
      • 設定方式一:使用 LVM 標籤
      • 設定方式二:使用 clustered LVM daemon , clvmd
    • Clustered LVM:在分享的儲存設備中,所有的vg 與 lv 均可給所有節點使用!
  • 重點提示:
    • LVM 觀念與多重路徑概念整合
    • LVM 設定檔:/etc/lvm/lvm.conf
    • LVM 架構查詢指令:vgcfgrestore
    • LVM 架構參數改變後,需要執行指令:lvchange
操作流程:練習(一)
  1. 在 nodea 上,切割兩個分割區,練習 LVM 基本操作:
    [root@nodea ~]# fdisk /dev/vdb
    [root@nodea ~]# partprobe
    [root@nodea ~]# pvcreate /dev/vdb2 /dev/vdb3
    [root@nodea ~]# vgcreate vgsrv /dev/vdb2 /dev/vdb3
    [root@nodea ~]# vgs
      VG    #PV #LV #SN Attr   VSize VFree
      vgsrv   2   0   0 wz--n- 3.99g 3.99g
    
  2. 在 vgsrv 上,切割一個 LV 分割區:
    [root@nodea ~]# lvcreate -n resizeme -L 2G vgsrv
    
  3. 在 resizeme 上,建立 xfs 檔案系統:
    [root@nodea ~]# mkfs -t xfs /dev/vgsrv/resizeme
    
  4. 將新建立的 xfs 檔案系統,掛載在 /mnt 目錄下:
    [root@nodea ~]# mount /dev/vgsrv/resizeme /mnt
    [root@nodea ~]# touch /mnt/file{0..9}
    
  5. 缷載 /mnt 目錄:
    [root@nodea ~]# umount /mnt
    
  6. 縮減 resizeme 大小至 1G:
    [root@nodea ~]# lvresize -L 1G /dev/vgsrv/resizeme
    [root@nodea ~]# mount /dev/vgsrv/resizeme /mnt  --> 發現不能掛載
    
  7. 檢查 vgsrv 架構:
    [root@nodea ~]# vgcfgrestore -l vgsrv
    :(略)
    :
    File:  /etc/lvm/archive/vgsrv_00002-1891440157.vg
      VG name:     vgsrv
      Description: Created *before* executing 'lvresize -L 1G /dev/vgsrv/resizeme'
      Backup Time: Fri Mar 24 18:50:14 2017
    :
    :(略)
    
  8. 回復到縮減前的狀態:
    [root@nodea ~]# vgcfgrestore -f /etc/lvm/archive/vgsrv_00002-1891440157.vg vgsrv
    
  9. 進行回復後的更新動作:
    [root@nodea ~]# lvchange -an /dev/vgsrv/resizeme 
    [root@nodea ~]# lvchange -ay /dev/vgsrv/resizeme 
    
  10. 重新掛載 /mnt 目錄:
    [root@nodea ~]# mount /dev/vgsrv/resizeme /mnt
    [root@nodea ~]# ls -al /mnt
    
  11. 再次缷載 /mnt 目錄,並移除 resizeme :
    [root@nodea ~]# umount /mnt
    [root@nodea ~]# lvremove /dev/vgsrv/resizeme
    
操作流程:練習(二),使用HA-LVM
  1. 在 nodea 上,將多重路徑上的硬碟設備,做成 LVM 檔案系統 :
    [root@nodea ~]# pvcreate /dev/mapper/mpatha
    [root@nodea ~]# vgcreate clustervg /dev/mapper/mpatha
    [root@nodea ~]# lvcreate -L 1G -n clusterlv clustervg
    [root@nodea ~]# mkfs -t xfs /dev/clustervg/clusterlv
    
  2. 在所有節點上,編寫 lvm 設定檔內容:
    [root@nodea ~]# vim /etc/lvm/lvm.conf
    locking_type = 1
    volume_list = []  --> 表示本地端的LVM不分享!
    
  3. 在所有節點上,重新設定 initramfs 檔案:
    [root@nodea ~]# dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r); reboot
    
  4. 在所有節點上,查詢 cluster 服務運作是否正常:
    [root@nodea ~]# pcs status
    
  5. 在 nodea 節點上,建立 LVM 資源:
    [root@nodea ~]# pcs resource create halvm LVM volgrpname=clustervg exclusive=true --group halvmfs
    [root@nodea ~]# pcs resource create xfsfs Filesystem device="/dev/clustervg/clusterlv" directory="/mnt" fstype="xfs" --group halvmfs
    [root@nodea ~]# pcs status
    [root@nodea ~]# lvs
    [root@nodea ~]# mount | grep clusterlv
    
  6. 在 nodea 節點上,測試 HA-LVM 功能:
    [root@nodea ~]# pcs cluster standby nodea.example.com
    [root@nodea ~]# pcs status
    [root@nodea ~]# pcs cluster unstandby nodea.example.com
    :
    (到各節點查詢,LVM被掛載到哪個節點上)
    
操作流程:練習(二),使用 Clustered LVM 方式
  1. 在各節點上,安裝 dlm 及 lvm2-cluster 套件:
    [root@nodea ~]# yum -y install dlm  lvm2-cluster
    [root@nodea ~]# lvmconf --enable-cluster
    
  2. 在各節點上,先暫停 lvm2-lvmetad 服務的運作,以利修改設定檔:
    [root@nodea /]# systemctl stop lvm2-lvmetad
    
  3. 在 nodea 節點上,新增使用 controld 資源代管的 dlm 資源:
    [root@nodea ~]# pcs resource create dlm controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true
    
  4. 在 nodea 節點上,新增使用 clvm 資源代管的 clvmd 資源:
    [root@nodea ~]# pcs resource create clvmd clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true
    
  5. 在 nodea 節點上,設定啟用條件順序,讓 dlm 資源早於 clvmd 資源啟用,並且只能用於同一節點上:
    [root@nodea ~]# pcs constraint order start dlm-clone then clvmd-clone
    [root@nodea ~]# pcs constraint colocation add clvmd-clone with dlm-clone
    
  6. 在 nodea 節點上,建立 LVM 檔案系統:
    [root@nodea ~]# pvcreate /dev/mapper/mpatha
    [root@nodea ~]# vgcreate myvg /dev/mapper/mpatha
    [root@nodea ~]# lvcreate -L 1G -n mylv myvg
    

2017年3月23日 星期四

在 CentOS7/RHEL7 上,學習架設 High-Availability 服務(十一)

學習目標:
  • 管理擁有多重路徑的儲存設備!
  • 重點提示:
    • 多重路徑套件:device-mapper-multipath
    • 設定檔:/etc/multipath.conf
    • 指令:mpathconf
    • Daemon:multipathd
操作流程:練習(一)
  1. 在 nodea、nodeb、nodec 上,安裝 device-mapper-multipath 工具套件:
    [root@nodea ~]# yum -y install device-mapper-multipath 
    
  2. 在 nodea 上,啟動 multipath 設定檔:
    [root@nodea ~]# mpathconf --enable 
    
  3. 在 nodea 上,修改 multipath 設定檔 /etc/multipath.conf:
    [root@nodea ~]# vim /etc/mutipath.conf
     blacklist {
            devnode "^vd[a-z]"  --> 啟免本地端設備被納入!
    }
    
  4. 在 nodea 上,把 iSCSI 加入 multipath 設定檔中:
    [root@nodea ~]# /usr/lib/udev/scsi_id -g -u /dev/sda
    36001405e92cadbc599440ef89643bc0b
    [root@nodea ~]# vim /etc/mutipath.conf
    (加入下列內容:)
    multipaths {
            multipath {
                    wwid 36001405e92cadbc599440ef89643bc0b
                    alias   ClusterStorage
                    path_grouping_policy    failover
            }
    }
    
    
  5. 在 nodea 上,複製 multipath 設定檔到 nodeb、nodec 節點上:
    [root@nodea ~]# rsync -avz -e ssh /etc/multipath.conf nodeb:/etc/mutlipath.conf
    [root@nodea ~]# rsync -avz -e ssh /etc/multipath.conf nodec:/etc/multipath.conf
    
  6. 在 nodea、nodeb、nodec 上,啟動 multipathd 服務:
    [root@nodea ~]# systemctl enable multipathd ; systemctl start multipathd
    [root@nodeb ~]# systemctl enable multipathd ; systemctl start multipathd
    [root@nodec ~]# systemctl enable multipathd ; systemctl start multipathd
    
  7. 在 nodea、nodeb、nodec 上,查看 multipathd 服務情況:
    [root@nodea ~]# multipath -ll
    [root@nodeb ~]# multipath -ll
    [root@nodec ~]# multipath -ll
    
  8. 在 nodea 上,切割分割區:
    [root@nodea ~]# fdisk /dev/mapper/ClusterStorage 
    
  9. 在 nodea、nodeb、nodec 上,更新 partition table 資訊:
    [root@nodea ~]# partprobe
    [root@nodeb ~]# partprobe
    [root@nodec ~]# partprobe
    
  10. 在 nodea、nodeb、nodec 上,查看分割區內容:
    [root@nodea ~]# ls -la /dev/mapper/
    [root@nodeb ~]# ls -la /dev/mapper/
    [root@nodec ~]# ls -la /dev/mapper/
    
  11. 在 nodea、nodeb、nodec 上,若沒發現分割區,可利用 kpartx 建立:
    [root@nodea ~]# kpartx -a -v /dev/mapper/ClusterStorage
    [root@nodeb ~]# kpartx -a -v /dev/mapper/ClusterStorage
    [root@nodec ~]#  kpartx -a -v /dev/mapper/ClusterStorage
    

在 CentOS7/RHEL7 上,學習架設 High-Availability 服務(十)

學習目標:
  • 將 iSCSI 分享的硬碟,掛載至 cluster 上!
  • 進一步設定掛載 iSCSI 硬碟的參數!
操作流程:練習(一)
  1. 在 nodea 上,安裝 iscsi-initiator 工具套件,並且設定啟動:
    [root@nodea ~]# yum -y install iscsi-initiator-utils 
    [root@nodea ~]# vim /etc/iscsi/initiatorname.iscsi
    InitiatorName=iqn.2017-04.com.example:node
    [root@nodee ~]# systemctl enable iscsi; systemctl start iscsi
    
  2. 在 nodea 上,查詢 fence 主機所提供的 iscsi 裝置:
    [root@nodea ~]# iscsiadm -m discovery -t st -p 172.24.0.20
    [root@nodea ~]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 -p 172.24.0.20 -l
    [root@nodea ~]# lsblk
    [root@nodea ~]# tail /var/log/messages
    
  3. 在 nodea 上,瀏覽相關連結資訊:
    [root@nodea ~]# iscsiadm -m session -P 3
    [root@nodea ~]# cd /var/lib/iscsi/nodes
    [root@nodea nodes]# ls -lR
    [root@nodea nodes]# less iqn.2017-04.com.example\:fence.disk01/172.24.0.20\,3260\,1/default
    
  4. 在 nodea 上,使用指令查看相關訊息:
    [root@nodea /]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 -p 172.24.0.20 -u
    [root@nodea /]# lsblk
    [root@nodea /]# ls -Rl /var/lib/iscsi/nodes/  --> 資料仍存在
    [root@nodea /]# systemctl restart iscsi
    [root@nodea /]# lsblk
    [root@nodea /]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 -p 172.24.0.20 -u
    [root@nodea /]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 -p 172.24.0.20 -o delete
    [root@nodea /]# lsblk
    [root@nodea /]# systemctl restart iscsi
    [root@nodea /]# lsblk   --> 應該是不會自動掛載上來了
    [root@nodea /]# iscsiadm -m discovery -t st -p 172.24.0.20
    [root@nodea /]# ls -Rl /var/lib/iscsi/nodes/
    [root@nodea /]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 -p 172.24.0.20 -o delete
    [root@nodea /]# ls -Rl /var/lib/iscsi/nodes/
    
操作流程:練習(二)
  1. 在 nodea 上,掛載 iSCSI 硬碟,並且切割好硬碟、建立 xfs 檔案系統:
    [root@nodea ~]#  iscsiadm -m discovery -t st -p 172.24.0.20
    [root@nodea ~]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 -p 172.24.0.20 -l
    [root@nodee ~]# lsblk
    [root@nodea ~]# fdisk /dev/sda
    (切割出一個硬碟)
    [root@nodea ~]# partprobe
    [root@nodea ~]# mkfs.xfs /dev/sda1
    [root@nodea ~]# mkdir /mnt/iscsi ; mount -t xfs -o rw,_netdev /dev/sda1 /mnt/iscsi
    
  2. 在 nodea 上,先關閉網路連線:
    [root@nodea ~]# nmcli device disconnect eth0
    
  3. 在 nodea 上,進行時間測試:
    [root@nodea ~]# time touch /mnt/iscsi/test1
    (出現下列結果:)
    touch: cannot touch ‘/mnt/iscsi/test1’: No space left on device
    
    real 0m47.201s
    user 0m0.002s
    sys 0m0.001s
    
    
  4. 在 nodea 上,開啟網路連線:
    [root@nodea ~]# nmcli device connect eth0
    
  5. 在 nodea 上,調整 iscsi 連線的 replacement_timeout 時間值到 5 秒:
    [root@nodea ~]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 \
    > -p 172.24.0.20 -o update -n node.session.timeo.replacement_timeout -v 5
    [root@nodea ~]# umount /mnt/iscsi
    [root@nodea ~]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 -p 172.24.0.20 -u
    [root@nodea ~]# iscsiadm -m node -T iqn.2017-04.com.example:fence.disk01 -p 172.24.0.20 -l
    [root@nodea ~]# mount -t xfs -o rw,_netdev /dev/sda1 /mnt/iscsi
    
  6. 在 nodea 上,再次關閉網路連線,並進行時間測試:
    [root@nodea ~]# nmcli device disconnect eth0
    time touch /mnt/iscsi/test2
    
    touch: cannot touch ‘/mnt/iscsi/test2’: No space left on device
    (出現下列結果,時間明顯缩短:)
    real 0m0.002s
    user 0m0.000s
    sys 0m0.002s
    
    
  7. 在 nodea 上,開啟網路連線:
    [root@nodea ~]# nmcli device connect eth0
    

在 CentOS7/RHEL7 上,學習架設 High-Availability 服務(九)

學習目標:
  • 管理兩節點的 Cluster 架構!
操作流程:練習(一)
  1. 在 nodee,nodef 上,安裝 pcs 與 fence-agents 套件:
    [root@nodee ~]# yum -y install pcs fence-agents-all 
    [root@nodee ~]# firewall-cmd --permanent --add-service=high-availability
    [root@nodee ~]# firewall-cmd --permanent --add-port=1229/tcp
    [root@nodee ~]# firewall-cmd --reload
    
  2. 在 nodee,nodef 上,啟動 pcsd 服務:
    [root@nodee ~]# systemctl enable pcsd ; systemctl start pcsd 
    [root@nodee ~]# echo centos7 | passwd --stdin hacluster
    [root@nodee ~]# pcs cluster auth -u hacluster -p centos7 \
    > nodee.example.com nodef.example.com
    
  3. 將 nodee,nodef 組成一個兩節點 cluster ,名為 R2 :
    [root@nodee ~]# pcs cluster setup --start --enable \
    > --name R2 \
    > --wait_for_all=0 \
    > nodee.example.com \
    > nodef.example.com
    
    [root@nodee ~]# pcs status
    
  4. 建立一個 fence 機制,代理 fence 使用 fence_xvm ,延遅時間設至五秒 :
    [root@nodee ~]# pcs stonith create fence_nodee fence_xvm \
    > port="guest5" \
    > pcmk_host_list="nodee.example.com" \
    > delay=5
    
    [root@nodee ~]# pcs stonith create fence_nodef fence_xvm \
    > port="guest6" \
    > pcmk_host_list="nodef.example.com" \
    > delay=5
    

在 CentOS7/RHEL7 上,學習架設 High-Availability 服務(八)

學習目標:
  • 設定群組資源開啟使用的順序規則
  • 限制三設定值:order location colocation
操作流程:練習(一)
  1. 在 nodea 上,切割分割區約 256 MB(需要掛載iSCSI服務):
    [root@nodea ~]# fdisk /dev/vdb
    (過程簡略...)
    
    [root@nodea ~]# partprobe   --> 必須在所有節點上做
    [root@nodea ~]# mkfs -t xfs /dev/vdb1
    
  2. 在各節點上,取消被 pacemaker 控制的 NFS 服務:
    [root@nodea ~]# systemctl stop nfs-lock ; systemctl disable nfs-lock
    
  3. 在 nodea 節點上,建立一個 nfs 的檔案資源群組:
    [root@nodea ~]# pcs resource create nfsshare Filesystem \
    > device=/dev/vdb1 \
    > directory=/nfsshare \
    > fstype=xfs --group nfs
    
  4. 在 nodea 節點上,建立一個分享服務,置於 nfs 資源群組內:
    [root@nodea ~]# pcs resource create nfsd nfsserver \
    > nfs_shared_infodir=/nfsshare/nfsinfo \
    > --group nfs
    
  5. 在 nodea 節點上,建立一個分享資源目錄,置於 nfs 資源群組內:
    [root@nodea ~]# pcs resource create nfsroot exportfs \
    > clientspec="*" \
    > options=rw,sync,no_root_squash \
    > directory=/nfsshare fsid=0 \
    > --group nfs
    
  6. 在 nodea 節點上,配置一個 IP 位置,置於 nfs 資源群組內:
    [root@nodea ~]# pcs resource create nfsip IPaddr2 \
    > ip=172.24.0.82 \
    > cidr_netmask=24 \
    > --group nfs
    
  7. 在各節點上,啟動防火牆設定:
    [root@nodea ~]# firewall-cmd --permanent --add-service=nfs ; firewall-cmd --reload
    
  8. 在 workstation 主機上,掛載分享出來的目錄:
    [root@fence ~]# mkdir /mnt/nfsv4share 
    [root@fence ~]# mount 172.24.0.82:/ /mnt/nfsv4share
    [root@fence ~]# touch /mnt/nfsv4share/test.txt 
    
  9. 驗證 NFS 分享工作,在 nodea 失效時,仍可以提供服務:
    [root@nodea ~]# pcs cluster standby nodea.example.com
    [root@nodea ~]# pcs status
    [root@fence ~]# ls /mnt/nfsv4share/ 
    
  10. 回復原設定:
    [root@nodea ~]# pcs cluster unstandby nodea.example.com
    [root@nodea ~]# pcs status
    [root@fence ~]# umount /mnt/nfsv4share/ 
    
操作流程:練習(二)
  1. 移動部份資源到其它節點:
    [root@nodea ~]# pcs resource move firstweb nodeb.example.com
    [root@nodea ~]# pcs resource clear firstweb
    [root@nodea ~]# pcs resource move nfs nodec.example.com
    [root@nodea ~]# pcs resource clear nfs
    
  2. 在 nodea 節點上,設定一個 location ,限定 firstweb 分數200:
    [root@nodea ~]# pcs constraint location firstweb prefers \
    > nodea.example.com=200
    
    [root@nodea ~]# pcs status
    
  3. 在 nodea 節點上,設定 firstweb 的資源分數預設值改成 500,nodeb改成499:
    [root@nodea ~]# pcs resource defaults resource-stickiness=500
    [root@nodea ~]# pcs constraint location firstweb prefers \
    > nodeb.example.com=499
    
    [root@nodea ~]# pcs status
    
  4. 在 nodea 節點上,設定 nfs 的資源,避免在 nodec 上執行:
    [root@nodea ~]# pcs constraint location nfs avoids nodec.example.com
    
    [root@nodea ~]# pcs status