2017年2月20日 星期一

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

學習需知:
  • Clustor Software 需求:
    • corosync 套件:5405/UDP,5405/UDP
    • pcs 套件:有分 pcs 指令與 pcsd 服務套件!pcsd 使用 2224/TCP
    • pacemaker 套件:clustor 主要套件!使用 3121/TCP
    • dlm 套件:使用21064/TCP ,存取GFS2遠端檔案系統
安裝流程:
  1. 在 nodea, nodeb, nodec上,利用 yum 安裝 pcs 與 fence-agents-all 套件:
    [root@nodea ~]#yum -y install pcs fence-agents-all
    [root@nodeb ~]#yum -y install pcs fence-agents-all
    [root@nodec ~]#yum -y install pcs fence-agents-all
    
  2. 在 nodea, nodeb, nodec上,啟動 HA 防火牆設定:
    #[root@nodea ~]firewall-cmd --permanent --add-service=high-availability
    [root@nodea ~]#firewall-cmd --reload
    :
    :
    (其他各 node ,作法相同!)
    
  3. 在 nodea, nodeb, nodec上,啟動 pcsd 服務:
    [root@nodea ~]#systemctl start pcsd
    [root@nodea ~]#systemctl enable pcsd
    :
    (其他各 node ,作法相同!)
    
  4. 在 nodea, nodeb, nodec上,修改 hacluster 帳號的密碼:
    [root@nodea ~]# echo centos7 | passwd --stdin hacluster
    :
    (其他各 node ,作法相同!)
    
  5. 在 nodea 上對各節點,進行身份驗證:
    [root@nodea ~]# pcs cluster auth nodea.example.com \
    > nodeb.example.com \
    > nodec.example.com
    (按下 Enter 後,出現輸入帳密!)
    Username: hacluster
    Password:centos7 
    
    (若成功,會產生下列結果!)
    nodeb.example.com: Authorized
    nodea.example.com: Authorized
    nodec.example.com: Authorized
    
    
  6. 設定 nodea, nodeb, nodec 為 clusterX 基本節:
    [root@nodea ~]# pcs cluster setup --start --name clusterx \
    > nodea.example.com \
    > nodeb.example.com \
    > nodec.example.com
    
  7. 設定開機時,啟動 clusterx 上所有的 node:
    [root@nodea ~]# pcs cluster enable --all
    
  8. 查看 clusterx 上,cluster 運作情形:
    [root@nodea ~]# pcs status
    
  9. 在 nodea, nodeb, nodec clusterx 上,設定 fence 節點資料:
    [root@nodea ~]# pcs stonith create fence_nodea_rht \
    > fence_rht port="nodea.example.com" \
    > pcmk_host_list="nodea.example.com" \
    > ipaddr="fencing.example.com"
    :
    (其他各 node ,作法相同!)
    
  10. 在 fencing 上,重新啟動fence_virtd 服務:
    [root@fencing ~]#systemctl restart fence_virtd
    
  11. 查看 clusterx 上,fencing 運作情形:
    [root@nodea ~]# pcs stonith show
    
  12. 利用 fence 功能,可讓某一個 node ,重開機:
    [root@nodea ~]# pcs stonith fence nodeb.example.com
    
  • 使用 pcs status 時,發生 “WARNING: no stonith devices and stonith-enabled is not false” 時,可使用下列方式排除:
    [root@nodea ~]# crm_verify -L -V
    [root@nodea ~]#pcs property set stonith-enabled=false
    
  • 每個節點上,需要注意防火牆設定,以及 SELinux 設定:
    [root@fencing ~]#firewall-cmd --permanent --add-port=1229/tcp
    [root@fencing ~]#firewall-cmd --permanent --add-port=1229/udp
    [root@fencing ~]#firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -m pkttype --pkt-type multicast -j ACCEPT
    [root@fencing ~]#firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -m pkttype --pkt-type multicast -j ACCEPT
    [root@fencing ~]#firewall-cmd --reload
    [root@fencing ~]#setsebool -P fenced_can_network_connect on
    [root@fencing ~]#setsebool -P fenced_can_ssh on