Domain-Name-System

更改伺服器 - 重定向到新 IP = 沒有停機時間?

  • December 16, 2016

我正在更改我網站的伺服器。舊伺服器的 IP 無法移動到新伺服器。為了沒有停機時間,我計劃執行以下操作,請有人確認它會起作用:

  1. 設置新伺服器並監聽新 IP
  2. 舊伺服器將所有流量重定向到新 IP
  3. 更改 DNS 記錄以指向新 IP

我的邏輯告訴我,當我從舊盒子重定向到新 IP 時,使用者不會在瀏覽器中看到域名,但會看到新 IP。有沒有辦法重定向到新 IP 並與它一起發送 HOSTNAME 以便使用者將在瀏覽器中看到域名?

我這樣做是因為該站點一直在使用中,並且僅僅更改 DNS 設置是行不通的,因為在傳播過程中數據庫不會在新舊伺服器之間同步。

這是對我有用的方法:

  1. 將文件和數據庫與新伺服器同步。
  2. 在截止前執行重新同步。
  3. 更改 DNS 以指向新伺服器。
  4. 將來自舊 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 伺服器連接來自客戶端電腦,它會認為它們來自舊伺服器。

您可能還想對數據庫和電子郵件伺服器埠重複此操作。

引用自:https://serverfault.com/questions/371833