Asterisk HA Solution - Rsync

    版本為 14:30, 26 Dec 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    使用 rsync 實現兩部完全一樣的 Asterisk 主機的 HA 方案。

    設定開始

    系統環境
    • Master Box (平日主要營運的主機)
      • hostnem = pbx-master
      • master ip = 192.168.7.62
    • Slave Box (離線備份的主機,當 Master 故障時,可接手營運)
      • hostnem = pbx-slave
      • slave ip = 192.168.7.70
    • Virtual IP (這又稱為 floating IP,作為主機對外服務的 IP)
      • float ip = 192.168.7.71
    設定 SSH 免密碼的連接

    On Master Box,同步方式:Master ---(push)---> Slave)
    建立公鑰及私鑰證書

    # cd /root/.ssh
    # ssh-keygen -d 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): <確認路徑無誤,按 Enter>
    Enter passphrase (empty for no passphrase): <不可輸入密碼>
    Enter same passphrase again: <按 Enter>
    Your identification has been saved in /root/.ssh/id_rsa. <這是私鑰>
    Your public key has been saved in /root/.ssh/id_rsa.pub. <這是公鑰>
    The key fingerprint is:
    42:e6:6b:21:07:74:33:95:2c:b8:17:25:a2:53:0e:f8 root@pbx-master.local
    

     將公鑰檔傳送到 Slave Box 的 /root/.ssh/authorized_keys (注意:檔名不可變更)

    SSH 連接測試

    ssh pbx-slave
    

    不用輸入密碼即可登入 pbx-slave。

    資料同步測試指令

    rsync -avl /tmp/rsync.test -e ssh pbx-slave:/tmp/rsync.test
    

    On Slave Box,同步方式:Slave ---(push)---> Master)

    同以上方法完成。

    兩主機資料同步的 script

    檔名:ast-ha-rsync.sh

    重點說明:

    • Master & Slave 使用同一個 script。
    • -s:更新目前主機的 ast-ha-rsync.sh 檔案至另一台主機。
    • -r:釋放目前主機的 virtual IP。
    • -v:將log 寫入紀錄檔(/var/log/xxx.log)。
    • -b (v2):同步資料到 Slave node,不作服務 IP 的更動 (Note: 這只能在 Master node 有效)。
    • Slave node 機器如果有重新啟動,在 5 分鐘內,不會啟動服務 IP,這是因為在這期間要留給 Master 作啟動服務。
    • Master & Slave 是透過任一方服務 IP 的啟動,來決定哪一台是工作的 Asterisk。
    • 任一方主機必須在 Asterisk 有啟動狀態下,才會進行啟動/關閉服務 IP 以及資料的同步。
       

    操作情境說明:

    日常模式的開機及關機(歲修或計畫停機之類)

    1. 開機:先開啟 Master node > 手動/自動啟動 Asterisk(Master) 服務 > 由 script 啟動服務 IP > 開啟 Slave node > 手動/自動啟動 Asterisk(Slave) 服務
    2. 關機:停止Asterisk(Slave) 服務 > 關閉 Slave node > 停止Asterisk(Master) 服務 > 由 script 關閉服務 IP > 關閉 Master node

    Master node 進行軟/硬體維修前 (Master -> Slave)

    1. 確認 Slave node 的網路正常以及 Asterisk 服務運行中。
    2. 在 Master node 使用以下任一方式,將服務 IP 切換到 Slave node
      • 手動停止 Asterisk 服務
      • 執行 ast-ha-rsync.sh -r
    3. 在 Slave node 執行 ifconfig 檢查是否已接手服務 IP。

    Master node 軟/硬體維修後 (Slave -> Master)

    1. 確認 Master node 的網路正常以及 Asterisk 服務運行中。
    2. 在 Slave node 使用以下任一方式,將服務 IP 切換到 Master node
      • 手動停止 Asterisk 服務
      • 執行 ast-ha-rsync.sh -r
    3. 在 Master node 執行 ifconfig 檢查是否已接手服務 IP。
    Powered by MindTouch Core