Apache-2.2
以最少的停機時間更改網路伺服器
我有一個生產中的網路伺服器。它的 IP 是 111.111.111.111,稱為 ServerA。除了儲存腳本文件外,伺服器還儲存使用者上傳的文件並擁有一個數據庫。該應用程序使用萬用字元子域,其中 foo.example.com、bar.example.com 等轉到一個公共虛擬主機,並且伺服器程式碼根據子域名稱進行響應。我的域名註冊商指向 IP 111.111.111.111,並且還設置為支持萬用字元。
我需要將網路伺服器更改為 IP 為 222.222.222.222 的新伺服器,稱為 ServerB。
應採取哪些步驟以最少的停機時間遷移伺服器?
以下是我的初步想法。如果不正確或我缺少步驟,請發表評論。
- 在 ServerA 上發布通知,系統將停機進行維護。
- 在 ServerB 上設置 Apache,類似於在 ServerA 上的設置,並在 ServerB 上添加另一個虛擬主機,ServerName 為 222.222.222.222,(稍後會詳細介紹)。
- 在 ServerA 上設置 Apache 以顯示停機維護頁面,而不是訪問應用程序腳本。
- 將腳本文件、上傳的使用者文件和數據庫從 ServerA 複製到 ServerB。
- 將域名註冊商更改為指向 IP 222.222.222.222。
- 在 ServerA 上設置 Apache 以將所有請求重定向到 IP 222.222.222.222。這將如何處理子域要求?
- 等待域名更改傳播。我會在這段時間下來嗎?
- ServerB全面測試後,取消ServerA的服務計劃。
零停機遷移怎麼樣?
這是我對此類遷移的總體計劃:
- 在舊伺服器和新伺服器之間建立一個 ad hoc VPN(例如使用 OpenVPN)。
- 將整個應用程序從舊伺服器複製到新伺服器。
- 在舊伺服器和新伺服器之間建立數據庫複製,舊伺服器作為主伺服器,新伺服器作為從伺服器,通過 VPN。
- 等待複製所有數據庫。可能還要等一下。
- 複製完成後,直接連接到新伺服器(使用 /etc/hosts 技巧)並驗證應用程序是否正常工作、Web 伺服器配置正確等。
- 打破主從關係,將舊伺服器上的應用程序配置為通過 VPN 與新伺服器上的數據庫通信。
- 更改 DNS 記錄。在等待 TTL 過期時,一些使用者會訪問舊伺服器,有些使用者會訪問新伺服器,但兩者都將使用新伺服器上的數據庫。
- 當 TTL 過期並且舊伺服器不再接收流量時,將其停用。關閉臨時 VPN。