iT邦幫忙

0

網域名稱更換IP,網站有沒有辦法不要停止服務?

目前手邊有個網站,網域名稱需要更換IP。因為DNS生效通常需要24hr,想要請問一下,有什麼辦法可以讓網站可以不受DNS生效的影響,持續提供服務嗎?

brianc iT邦研究生 1 級 ‧ 2012-01-18 19:19:57 檢舉
Layer 4 switch
14
raytracy
iT邦大神 1 級 ‧ 2012-01-19 10:39:15
最佳解答

親愛的樓主, 如果您要將網站更換到另外一個地點的話, 以上的方法沒有一個可行.

因為 DNS 的變更是漸進的, 並不是全世界說好一個時間就一瞬間換掉, 所以在更換期間, 全球勢必會有些人連到新的, 有些連到舊的去. 你仍然必須維持一個舊的網站, 繼續平行運作, 直到全球的 DNS 都更新完畢為止.

但為了避免你的資料產生不一致的現象, 有一個變通的辦法:
* 新網站開始上線運作
* 設定新的 DNS:

www IN A 新的IP
wwww IN CNAME www

* 設定舊的網站, 一進入任何頁面就立刻導向到 wwww (四個w), 不讓用戶進入任何舊網頁

這樣的結果就會變成:

  1. DNS 已經更新到新 IP 的用戶, 會直接進入新網站
  2. DNS 尚未更新的新 IP 的用戶, 會進入舊網站, 但馬上會被導向到新網站去
    這樣可以確保 DNS 無論是否更新, 都會跑到新網站去.

等到 24hr 或更久之後, 確定全球的 DNS 都更新完畢了, 再把舊網站撤掉, 並且把 wwww (四個w) 名稱也撤掉.

4
門神JanusLin
iT邦超人 1 級 ‧ 2012-01-18 19:12:12

新舊同時Service
等24~48小時後再移除舊的IP

看更多先前的回應...收起先前的回應...

不過我們的情況是把往網站從A Server移到B Server,DB也是一起搬,如果兩個同時服務的話,資料就會有不同步的問題

Try it
DNS Name Server
web.abc.com.tw cname www.abc.com.tw
web.abc.com.tw -->web-ip
Change cname web-ip

謝謝大大提供這個方法,不過還想請問一下,這和更改A記錄的差別在呢?

Ray大不愧是我的前老闆 XD
寫的很詳細
不再補充

2
chiounan
iT邦研究生 1 級 ‧ 2012-01-19 10:05:32

可以利用NAT來達成。
將service的IP固定在NAT上對外進行服務,而server與db皆在NAT之內。
如此service即不受內部server migration的影響。
簡單來說是這樣的。

4
jameshsieh
iT邦新手 5 級 ‧ 2012-01-19 10:40:52

一般人在租用虛擬主機之後,大多會採用isp所提供的dns,但這樣做就會產生你說的問題,每次更改dns都要花超過一小時到 24 小時的時間,網站會變成有得人看得到有的人看到舊的ip(各個isp不同)

所以網址放在像是 http://name.080.net 的好處就是他有提供可以隨時更改 IP 指向的介面,免費dns托管,我使用他的dns之後,換主機,換ip 我都還是使用他的dns,不更改dns的情況下,只更改 IP 這樣只需要五分鐘,就搞定!

0
slime
iT邦大師 1 級 ‧ 2012-01-20 21:21:59

個人認為邏輯上:

  1. 應該從根本的 DNS 設定著手.
  2. 應該預定服務的中斷時間.
    (以您的案例, 表示之前並沒有備援的準備, 如果以後還有更動的可能或負載較重, 建議規劃有備援機制)

實作上:

  1. DNS 設定可以調整每筆記錄的保留時間, 比如設定只保留 1 小時, 目前記錄指向主機_1
  2. 主機_1 與 主機_2 準備好基本的資料庫複製
  3. 預約停機維護時間, 例如 1/21 上午 2 點
  4. 1/21 上午 2 點, 主機_1 網頁顯示"維護中", 停止 DB Server 等
  5. 主機_2 也準備好, 顯示"維護中"
  6. 修改 DNS 設定, 將記錄指向主機_2
  7. 將主機_1 的 DB 資料, 以差異備份到主機_2 還原.
  8. 檢測主機_2 資料完整性.
  9. 主機_2 啟動服務.
    (如果還在 1 小時內, 原用戶會看到主機_1 的維護中, 新用戶已經可以提供服務)
  10. 再觀察主機_1 記錄, 沒問題的話, 只剩少數 proxy 主機還會連到主機_1 .
  11. 把主機_1 除役.

我要發表回答

立即登入回答