自從 Synology 於 CeBIT 2012 發表 High-Availability (HA) 技術後, 小弟就一直關注這項技術的發展, 當時是以 RS3412xs XS 系列高階 NAS demo, 總算等到 DSM 4.2 beta, 原廠將此項功能免費的附加在 2012 年以後銷售的所有 x86 Dual GbE NAS.
High-Availability 高可用性
在儲存媒體上, 企業一直追求的是維持 Server 的正常運作, 為了怕因為各種意外造成檔案流失, 所以運用了各種備份媒體及方法, 將重要資料保持多個備份, 另外擔心硬碟的損壞造成資料毀損, 所以有了 RAID (1/5/6...)技術, 但當設備損壞, 網路斷線及各種無法即時修復的狀況下, 如何儘速恢復原 Server 所提供的服務, 減少停機的時間, 這就是本文 HA 所要討論的.
Synology HA solution
所謂 HA 高可用性, 指的是運用多台 Server (NAS) 組成的 Cluster, 當主要提供服務的 NAS 失效時, 當時所提供的服務, 如何即時的移轉至備用的 NAS, 而 Synology HA Solution, 現所提供的做法為運用兩台同機型的 NAS (現限制為 2012 年仍在銷售的 x86 Dual GbE 機種, 有關支援的機型詳見官網). 有關 HA 可以很簡單的將它視為兩台 NAS 做 RAID1 (mirror) 的技術, 當將資料寫入 Active NAS 時, 系統將會同步去更新 Passive NAS.
這裡我們使用了兩台 Synology DS412+ 4Bay NAS 測試, 每台 NAS 配備 500GB HD*2 (RAID1), 並更新至最新的 DSM 4.2Beta. (這裡特別在 Active NAS 上貼個 Label 識別)
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-55269a4a553a951b809ee534a56513bb.jpg)
由於兩台 NAS 必須隨時取得同步, 所以兩台 NAS 之間必須以一條 LAN Cable 連接, 此稱之為 HeartBeat, 做為資料同步及互相偵測對方是否 '停止心跳' 掛點了, 並做必要的處置. 下圖是以 DS412+ LAN2 互相串接. 而另外一個 Gigabit LAN Port 則連接至 Switch 上.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-69c62fb77e189452e53bc58aef2d6d39.jpg)
demo 的兩台 DS412+ 規格皆相同, 以 500GB HD*2 建 RAID1
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-019f10f790319985fa635ab0f0781544.jpg)
安裝上非常容易, 兩台 NAS 安裝 DSM 4.2Beta, 並安裝 Python & High Availability 套件.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-edfaf2a9abd5b70ee02025321d59d2d2.jpg)
做為 HA 主機的 NAS, 都必須配置 LAN 固定 IP.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-1b7209ffb190cc0964eb02d636145854.jpg)
這裡兩台 NAS 各自配置的固定 IP 為 192.168.38.14(NAS1) & 192.168.38.15(NAS2)
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-e4942cb293d1f83010fad0c873ba6862.jpg)
進入 NAS1 HA Manager, 點選 "建立 HA Cluster"
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-eb4be63f1bb3b992e92602b6d7e393f4.jpg)
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-2ee0537ab8b8ba533e0b351c20e30df5.jpg)
輸入第二台 NAS 的 IP 及帳號密碼
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-e209b31397d16c491e265e2f8c24f8fa.jpg)
我們是以 LAN2 做為 HA Heartbeat 連線用. 這裡有特別提到, Heartbeat 連線儘可能直接以 LAN cable 串接, 不要透過 Switch.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-7bee4b419eb01cda70635f4bc04a82ef.jpg)
出現警告訊息, 告知 LAN2 不可設為 DHCP? 原本以為 HA Manager 會自己處理, 看來這裡要手動設定, 回到 DSM 控制台, 將 NAS1 LAN2 設為 10.0.0.1, NAS2 LAN2 設為 10.0.0.2 (基本上這裡隨意設定就可以了,並不影響 HA 運作, 容後補述)
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-e2a86cc9724d1e72d72581397661d543.jpg)
設定 Cluster IP, 這裡指定為 192.168.38.16, 在 HA 環境下, Client 端的電腦是對 Cluster IP 做存取, 並非直接指向 NAS1 or NAS2 IP.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-b7689db238dea16759ec26cfec6d033f.jpg)
所有 HA 的參數.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-97e32ba1481e5d03bd7edc0a73454b53.jpg)
完成設定後, 系統此時進行 NAS1 & NAS2 同步, 主要是將 NAS1(Active) 的資料全部複制到 NAS2, 原本 NAS2 上面的資料會被全數刪除, 這個過程視 Active NAS 上的資料量而定, 可能要幾個小時到數天都有可能, 在同步的期間 NAS 還是可以正常使用的.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-615bd29e288dc61066712a35874234ef.jpg)
看看其他 HA Manager 的功能, 此處列出兩台 NAS 的網路設定 (DSM 控制台>網路 設定的功能由此處取代)
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-f209dec429569e232fda5e79b9fec361.jpg)
Active NAS
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-8bd2babefe66b6ea278d45a9fcd81e7b.jpg)
Passive NAS, 此處顯示為 "無法存取的原始IP位址", 當做為備用 NAS 時,就無法再登入該台的 DSM 設定界面了. 因該台的資料都是由 Active NAS 同步而來, 已無設定的必要.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-abb85273c9caa1df7365df01c7f33a5b.jpg)
預設 HA Cluster 僅提供 Windows CIFS 服務, 若需其他服務就自行勾選. 大致上這些已經包括了大多數 NAS 所提供的 service 了, 不管是運用在 VM 環境及 Mac 下都有支援.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-e08298c21094c743facb2e8dec677674.jpg)
資料同步中.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-34818ed0ef747d3d0770d305b95f602f.jpg)
檢視兩台 NAS 的硬碟狀態.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-c8c3b90343fb1cd35bfc66551aca7357.jpg)
Synology HA solution 使用的是 DRBD open source 的技術, 這裡看到同步還需要約 1H:50M 完成.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-325c543f2b08a856bec028ac9a6dc7d2.jpg)
經歷了二個小時多, 終於同步完成了, 這裡可以看到 Active NAS & Passive NAS 都已上線.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-3cd8bfffc86c54ae056cef74f8ade34b.jpg)
HA 測試
先在 Windows 7 下測試看看讀寫的效率. 單檔 5GB 寫入約 30MB/Sec, 這個速度明顯較 DS412+ 單機可達 100MB/Sec 慢了許多(正常情況下在小弟的環境約可達 80MB/Sec), 寫入的速度為何要慢這麼多是日後還要再多加驗證的.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-940621c5ba0adb4531b3ad022ebd6f27.jpg)
讀取的速度就比較理想了, 可以達到 90MB/Sec 左右.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-ef2efd211334dfa1e1bdccd29242ca87.jpg)
接下來試試看 Active NAS(NAS1) '失效' 時, Passive NAS 是否可以馬上 '接手' 所提供的服務, 這裡用最簡單的測試, 於 windows 7 下開三個視窗同時去 ping cluster IP(192.168.38.16), NAS1 IP(192.168.38.14) & NAS2 IP(192.168.38.15), 直接將 NAS1 LAN1 網路線拔掉, 看看 NAS2 有沒有接手? 啊! 怎麼 ping 掉線了, 一直沒有恢復呢?
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-7003b4577a286db29d8fdf56f2eac216.jpg)
Google 了一下 DRBD 相關資料, 原來不是只有小弟遇到這個問題, 看來 HA 不能這樣玩, 再把網路線插回去, 這次把 NAS1 電源拔掉. 過了一下子, 看到又連線了!
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-ef3781086c0dcf47541dfe8ce20b384e.jpg)
重新登入 NAS HA Manager, 看到 Active NAS 切換為 NAS2 了. 所有的服務確實都只是中斷了幾秒鐘而已. 大致 check 了一下, 原本共用資料夾裡面的資料沒有遺失.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-36fb2b4038df29c379dc1271eaab6284.jpg)
重新再把 NAS1 開機, 因為在這段期間 Active NAS 上面的資料已經異動過了, 此時系統會自動將資料再同步回 NAS1, 當同步完成 NAS1 就會進入 standby 狀態.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-62f1d390f6f5b287a799737561b1dc9e.jpg)
接著測試當 Active NAS or Passive NAS 發生 RAID degrade 時要如何處置, 將 Passive NAS 其中一顆硬碟拔出, 此時 HA Manager 顯示 Passive NAS RAID degrade, 並發出 beep, 可以透過管理功能將 beep 關閉, 並換上新的硬碟後, 於 [磁碟空間狀態] 下進行 [修復] 的動作.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-ca5d76ddfe17374391a0f321aa171125.jpg)
如何移除 HA Cluster? 直接由 [管理 HA Cluster] 就可以將 HA Cluster 解除, 解除後的兩台 NAS 會保有完全相同的資料, 視為兩台獨立的 NAS.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-8b3bf73a78d11b518e917e492fa803ac.jpg)
HA 也包含其他的 service?
除了前面所提的 CIFS, iSCSI, AFP, FTP & NFS 可以達到故障立刻移轉外, 那麼網站? MySQL 等服務呢? 原廠的文件並沒有提到這些, 小弟在 NAS1 上重新啟用了 Web & MySQL Server 並安裝 phpBB forum 套件測試, 發覺網頁及 MySQL DB 的資料也會一併同步, 當 Active NAS fail 時, 切換至 Passive NAS 仍然可以提供原來的網站內容及資料庫. (此部份僅是小弟的測試, 有關網頁及 MySQL DB 是否是完全同步, 一切以官方公佈的資料為準)
如何開關機?
總是會遇到年度維護或是預告停電的狀況, 那麼要如何關機呢? 如下, 於 "管理 HA Cluster" 即可 shutdown NAS.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-7083c3e78b0ddf11b3d355f81e569937.jpg)
那麼要如何開機? 如果 Passive NAS 開機的速度比 Active NAS 快, 它會不會自動接管所有的服務? 小弟測試的結果是: 先開那一台 NAS 都無所謂, 因為只要開其中一台, 都會自動再透過 WOL (wake-on-LAN) 自動將另一台 NAS 再喚醒.
另外前面提到做為 Heartbeat 連線的 LAN Port 必須設定為固定 IP(不可為DHCP), 且 IP 可以隨意指定, 因為小弟發覺實際上在 HA Manager 建置時, 系統會自行指定其兩端點的 IP address, 既然如此在安裝時系統為何不自行設定為固定 IP 呢? 這倒是蠻奇怪的.
結論
在以前中小企業要建議 HA Cluster 不管在軟硬體上都是相當大的花費, 而即使透過 Open Source 的軟體要建置也是相當耗費人力的, 工程師本身要有非常深的功力, 另外在管理上通常都只能透過 command line 的操作為之, 在維護上是相當不容易的, 透過 Synology HA Manager 套件, 在軟硬體成本上節省相當多, 從最初階的 DS713+ 2Bay NAS 就可以輕鬆建置 HA Cluster, 管理上也不需要專職的網管人員, 而較大型企業可以選擇 XS 系列, 對於有興趣建置高可用性運作環境的企業算是一個很好的解決方案.
其他相關資源
Synology HA 官方說明文件
Synology HA 於 youtube 上影片
Synology blog - HA 介紹
動動腦
1.於 Synology HA 環境下, 當 Active NAS & Passive NAS 都在 shutdown 的情況下, 假設 Active NAS 無法開機, 那麼只開 Passive NAS 會是什麼結果? 它會接手所有的服務嗎?
*******************************************************************************
2013/01/29 更新:
寫入效能問題解決: 前面提到使用 5GB 單檔從 PC 複製到 NAS 的效能明顯偏低, 原廠立刻寄來一個 patch file, 主要是小弟測試的是 DSM 4.2Beta, 此問題已解決, 於正式版會修正.
於修正前的寫入速度.
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-4d408cd69eefb1ff55bcb882751184f8.jpg)
服用修正檔後的寫入速度, 這個數據就相當合理了. (因為使用的是WD綠標, 相信換上效能更高的硬碟應該有更突出的表現)
![[分享] Synology NAS High-Availability (HA) 實作 (1/29更新)](http://attach.mobile01.com/attach/201301/mobile01-ed34edc2dfc8cd8426360a75b2248c22.jpg)
*******************************************************************************
2013/01/29 更新:
前面提到, 在正常運作的情況下, Active NAS 如果掛點, Passive NAS 會馬上接手所有的服務, 但如果都是在關機狀況下, Active NAS 掛點了(或很賽被幹走

原廠也考慮到這種狀況了, 回覆如下:
只剩 passive server 的話有兩條路:
a. 等30分鐘 passive server 會自動解開(因為PASSIVE SERVER是不能連線的 所以要解開才能連線)
b. 按下passive server的reset 這樣也會解開 同時需要進行IP跟ADMIN密碼設定 但資料會保持住