Domain-Name-System
更改伺服器 - 重定向到新 IP = 沒有停機時間?
我正在更改我網站的伺服器。舊伺服器的 IP 無法移動到新伺服器。為了沒有停機時間,我計劃執行以下操作,請有人確認它會起作用:
- 設置新伺服器並監聽新 IP
- 舊伺服器將所有流量重定向到新 IP
- 更改 DNS 記錄以指向新 IP
我的邏輯告訴我,當我從舊盒子重定向到新 IP 時,使用者不會在瀏覽器中看到域名,但會看到新 IP。有沒有辦法重定向到新 IP 並與它一起發送 HOSTNAME 以便使用者將在瀏覽器中看到域名?
我這樣做是因為該站點一直在使用中,並且僅僅更改 DNS 設置是行不通的,因為在傳播過程中數據庫不會在新舊伺服器之間同步。
這是對我有用的方法:
- 將文件和數據庫與新伺服器同步。
- 在截止前執行重新同步。
- 更改 DNS 以指向新伺服器。
- 將來自舊 ip 的請求轉發到新伺服器,直到 DNS 傳播完成。
以下是我將如何執行第 4 步:
我們將在 Linux 伺服器上配置 IPTables 以將來自埠 80(這是預設 Web 伺服器埠)的所有流量重定向到具有 IP 的伺服器
122.164.34.240
。第一步是設置您的 Linux 機器以允許發生這種轉發。打開終端視窗,以 root 使用者身份登錄並執行以下命令:# echo 1 >/proc/sys/net/ipv4/ip_forward
下一步是告訴 IPTables 將流量重定向到新伺服器:
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240
這就是 IPTables 魔法發生的地方。在第三步也是最後一步,我們告訴 IPTables 重寫到新伺服器埠 80 的連接來源,使其看起來來自舊伺服器。
# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE
最後一步是必需的,因為如果我們不告訴新伺服器的 Web 伺服器連接來自客戶端電腦,它會認為它們來自舊伺服器。
您可能還想對數據庫和電子郵件伺服器埠重複此操作。