2017年3月4日 星期六

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

學習目標:
  • Corosync 的記錄設定檔:/etc/corosync/corosync.conf
  • Pacemaker 的記錄設定檔:/etc/sysconfig/pacemaker
  • Cluster 不喜歡星期一,因為要用 Email 通知不用上班的節點!
  • 練習:
    • 查看記錄檔內容
    • 更改設定後,如何同歩與重新啟動!
    • 設定系統通知與報告!
操作流程:練習(一)
  1. 在 nodea 上,查看記錄檔內容:
    [root@nodea cluster]# less /var/log/pacemaker.log
    [root@nodea cluster]# less /var/log/messages
    [root@nodea ~]# journalctl -u pacemaker.service -u corosync.service
    
  2. 在 nodea 上,修改記錄檔內容:
    [root@nodea ~]# vim /etc/corosync/corosync.conf
    logging {
        to_syslog: yes
        to_logfile: yes
        logfile: /var/log/cluster.log
        debug: on
    }
    
  3. 在 nodea 上,同歩 cluster 內的所有節點:
    [root@nodea ~]# pcs cluster sync
    
  4. 在 nodea 上,更新 pacemaker 設定檔內容,並同歩 cluster 內的所有節點:
    [root@nodea ~]# vim /etc/sysconfig/pacemaker
    PCMK_debug=yes
    :
    :
    (存檔後,複製設定檔到其它節點上!)
    [root@nodea ~]# scp /etc/sysconfig/pacemaker nodeb:/etc/sysconfig
    [root@nodea ~]# scp /etc/sysconfig/pacemaker nodec:/etc/sysconfig
    [root@nodea ~]# scp /etc/sysconfig/pacemaker noded:/etc/sysconfig
    
  5. 在 nodea 上,更新 logrotate 設定檔,並且同歩 cluster 內的所有節點:
    [root@nodea ~]# cp /etc/logrotate.d/pacemaker /etc/logrotate.d/cluster
    [root@nodea ~]# sed -i 's/pacemaker/cluster/' /etc/logrotate.d/cluster 
    [root@nodea ~]# scp /etc/logrotate.d/cluster nodeb:/etc/logrotate.d/
    [root@nodea ~]# scp /etc/logrotate.d/cluster nodec:/etc/logrotate.d/
    [root@nodea ~]# scp /etc/logrotate.d/cluster noded:/etc/logrotate.d/
    
  6. 在 nodea 上,動新啟動 cluster 的運作:
    [root@nodea ~]# pcs cluster stop --all
    [root@nodea ~]# pcs cluster start --all
    
  7. 在 nodea 上,觀察所有活動記錄:
    [root@nodea ~]# tail -f /var/log/cluster.log
    
  8. 在 nodeb 上,移動資源測試所觀察到的活動記錄:
    [root@nodeb ~]# pcs resource move firsrweb
    
  9. 按照上述流程,回復原設定值!
操作流程:練習(二)
  1. 在 nodea 上,增加 Email 資源至 firstweb 群組:
    [root@nodea ~]# pcs resource create webmail MailTo \
    > email=test@example.com \
    > subject="Cluster Notification" \
    > --group firstweb
    
  2. 觀察所收下來的信件內容:
    [root@nodea ~]# mutt
    
  3. 寫一個小型的 scripts:
    [root@nodea ~]# vim /usr/local/bin/myagent.sh
    #!/bin/bash
    MAILTO=${CRM_notify_recipient:-root@localhost}
    mutt -s "Cluster event from node ${CRM_notify_node}" ${MAILTO} << EOF
    
    A cluster event was triggered by ${CRM_notify_rsc}
    on ${CRM_notify_node}. This event was triggered
    by a ${CRM_notify_task} event.
    
    --
    This mail has been generated automatically
    EOF
    
  4. 新增 ClusterMon 資源,並可带入上述部驟的 scripts 檔案:
    [root@nodea ~]# pcs resource create mailme ClusterMon \
    > extra_options="-e test@example.com \
    > -E /usr/local/bin/myagent.sh" \
    > --clone
    
  5. 觀察所收下來的信件內容:
    [root@nodea ~]# mutt
    
  6. 進行 Cluster 異動,並觀察所收下來的信件內容:
    [root@nodea ~]# pcs resource move firstweb
    [root@nodea ~]# firewall-cmd --remove-service=high-availability