2017年2月28日 星期二

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

學習目標:
  • 在 clusterX 上,利用 quorum 工具管理所有節點的投票機制!
操作流程:
  1. 在 nodea 上,停止 cluster 功能:
    [root@nodea ~]# pcs cluster stop --all
    
  2. 在 nodea 上,修改 /etc/corosync/corosync.conf 設定:
    [root@nodea ~]# /etc/corosync/corosync.conf
    (修改內容如下:)
    quorum {
        provider: corosync_votequorum
        last_man_standing: 1
        wait_for_all: 1
    }
    
  3. 在 nodea 上,同歩其他節點上的 corosync.conf 檔案:
    [root@nodea ~]# pcs cluster sync
    
  4. 在 nodea 上,啟動所有節點:
    [root@nodea ~]# pcs cluster start --all
    
  5. 在 nodea 上,檢視投票機制運作即時情狀:
    [root@nodea ~]# watch -n1 corosync-quorumtool
    
  6. 在 nodec 上,關閉 nodec ,然後回到 nodea 檢視投票機制運作即時情狀:
    [root@nodec ~]#poweroff
    [root@nodea ~]# watch -n1 corosync-quorumtool
    
  7. 在 nodeb 上,再關閉 nodeb ,然後回到 nodea 檢視投票機制運作即時情狀:
    [root@nodeb ~]#poweroff
    [root@nodea ~]# watch -n1 corosync-quorumtool
    

2017年2月24日 星期五

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

學習目標:
  • 在 clusterX 上,建立與管理所有資源!
練習流程(一):
  1. 在節點上,查詢可以代管的資源:
    [root@nodea ~]# pcs resource list
    [root@nodea ~]# pcs resource describe Filesystem
    
  2. 在 nodea 節點上,新增一個 NFS 分享目錄資源:
    [root@nodea /]# pcs resource create wwwfs Filesystem \
    > device=fence.example.com:/exports/www \
    > directory=/mnt \
    > fstype=nfs \
    > options=ro
    
  3. 驗證該資源:
    [root@nodea /]# pcs status
    [root@nodeb ~]# watch -n1 pcs status
    [root@nodea /]# firewall-cmd --remove-service=high-availability
    (資源轉移至其它節點了)
    
練習流程(二):
  1. 在各節點上,安裝 httpd 套件:
    [root@nodea ~]# yum install -y httpd
    [root@nodea ~]# setsebool -P httpd_use_nfs 1
    
  2. 在 nodea 節點上,新增一個資源群組,放置各種資源:
    [root@nodea ~]# pcs resource create firstwebip IPaddr2 \
    > ip=172.24.0.80 \
    > cidr_netmask=24 \
    > --group=firstweb
    
    [root@nodea ~]# pcs resource create firstwebfs Filesystem \
    > device=fence.example.com:/exports/www \
    > directory=/var/www/html \
    > fstype=nfs \
    > options=ro \
    > --group=firstweb
    
    [root@nodea ~]# pcs resource create firstwebserver apache --group=firstweb
    
  3. 在各節點上,開啟 httpd 防火牆設定:
    [root@nodea ~]# firewall-cmd --permanent --add-service=http
    [root@nodea ~]# firewall-cmd --reload
    
  4. 驗證該資源:
    [root@nodea /]# pcs status
    [root@fence ~]# yum install -y elinks 
    [root@fence ~]# elinks -dump http://172.24.0.80
    [root@nodea /]# firewall-cmd --remove-service=high-availability
    (資源轉移至其它節點了)
    
練習流程(三):
  1. 在 nodea 節點上,取消 firstweb 資源群組:
    [root@nodea ~]# pcs resource disable firstweb
    [root@nodea ~]# pcs status
    [root@nodea ~]# pcs constraint list
    
  2. 在 nodea 節點上,啟動 firstweb 資源群組:
    [root@nodea ~]# pcs resource enable firstweb
    [root@nodea ~]# pcs resource move firstweb nodeb,example.com
    [root@nodea ~]# pcs constraint list
    
  3. 在 nodea 節點上,禁止某些節點使用 firstweb 部份資源:
    [root@nodea ~]# pcs resource ban firstweb nodeb.example.com
    [root@nodea ~]# pcs resource ban firstweb nodec.example.com
    [root@nodea ~]# pcs resource status
    [root@nodea ~]# pcs constraint list
    [root@nodea ~]# pcs resource clear firstweb
    
練習流程(四):
  • 在各節點上,新增 fear 資源群組,提供 vsftpd 服務!
  1. 在各節點上,新增 vsftpd 服務:
    [root@nodea ~]# yum -y install vsftpd 
    [root@nodea ~]# setsebool -P ftpd_use_nfs 1
    [root@nodea ~]# firewall-cmd --permanent --add-service=ftp
    [root@nodea ~]# firewall-cmd --reload
    
  2. 在 nodea 節點上,新增 IP 位置給 vsftpd 服務:
    [root@nodea ~]# pcc resource create fearip IPaddr2 \
    > ip=172.24.0.81 \
    > cidr_netmask=24 \
    > --group fear  
    
  3. 在 nodea 節點上,新增 nfs 掛載目錄給 vsftpd 服務:
    [root@nodea ~]# pcc resource create fearfs Filesystem \
    > device=fence.example.com:/exports/ftp \
    > directory=/var/ftp/pub \
    > fstype=nfs \
    > options=ro \
    > --group fear  
    
  4. 在 nodea 節點上,設定 vsftpd 服務資源:
    [root@nodea ~]# pcc resource create fearserver systemd:vsftpd --group fear
    
  5. PS:就別問要如何測試了....

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

學習目標:
  • 在 clusterX 上,管理所有節點!
操作流程:
  1. 在 noded 上,安裝與設定 cluster 相關套件:
    [root@noded ~]#firewall-cmd --permanent --add-service=high-availability
    #firewall-cmd --reload
    #yum install pcs fence-agents-all
    #systemctl enable pcsd
    #systemctl start pcsd
    #echo centos7 | passwd --stdin hacluster
    
    
  2. 在 nodea 上,將 noded 加入目前的 clusterX 清單內:
    [root@nodea ~]#pcs cluster auth -u hacluster -p centos7 noded.example.com
    #pcs cluster node add noded.example.com
    
  3. 在 noded 上,驗證其它節點的 hacluster 帳密:
    [root@noded ~]#pcs cluster auth -u hacluster -p centos7
    
  4. 在 noded 上,啟動 cluster 服務,並設定重開機後,也可以加入 clusterX 叢集:
    [root@noded ~]#pcs cluster enable
    #pcs cluster start
    #pcs status
    
  5. 在 nodea 上,設定 fencing 加入 noded ,並指定分享的資源名稱為 fence_noded :
    [root@nodea ~]#pcs stonith create fence_noded fence_rht \
    port="noded.example.com" \
    pcmk_host_list="noded.example.com" \
    ipaddr="fencing.example.com"
    #pcs stonith show
    
  6. 在 fencing 上,重新啟動fence_virtd 服務:
    [root@fencing ~]#systemctl restart fence_virtd
    
  7. 將 noded 重新啟動,查看是否運作正常:
    [root@noded ~]#reboot
    [root@nodea ~]#pcs status
    

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