iT邦幫忙

0

請問一下,為什麼DNS修改總是要12~24小時呢

因為我有一個web server 想要作備援
所以就是web server A 掛掉的時候,把網址指向 web server B
可是發現每次DNS修改總是要12~24小時
可能就有1~2天的空窗期,USER會連不到那個網址
請問有沒有什麼更好的作法?
謝謝大家了疑惑

4
goodnight
iT邦研究生 4 級 ‧ 2011-12-01 20:27:41
最佳解答

這是你做法的問題

以hinet 來說, 它們供直接指向

www.aaa.com.tw 220.120.111.48
www.aaa.com.tw 220.120.111.49

如果你的備援 server 不是 onlone , 那麼當你要 online 時, 應該還是設定為 220.120.111.48, 內部 ip 是指向問題

dns 自管或代管

dns.aaa.com.tw 220.120.111.48
dns.aaa.com.tw 220.120.111.49
這時你要在你的公司內部架設一個 dns server
然後在 dns server 設定所有的 server name及對應ip

當有人打 www.aaa.com.tw 時, 會先去詢問你的 dns.aaa.com.tw

所以你的做法將會影響你所發問的問題點

16
vino1
iT邦大師 1 級 ‧ 2011-11-30 12:20:56

照您的環境來看...
當 Web Server A 掛掉, 何不將 Web Server B 的 IP 改成一樣即可?!

DNS只是一個解析服務,它存儲DNS解析信息。世界上DNS server有n個,比方說您用的是Hinet的DNS,您改好了這個,DNS解析信息一步一步的同步到其他的DNS,全世界的DNS都慢慢同步到,要同步完全世界當然要花很長時間,所以一般會說24小時。

v大~

換ip這個方法感覺快又有效,可是我的兩台主機分別是,一台是外國的虛擬主機
一個是自已旁邊的電腦(台灣)

我這樣有辦法可以互換ip嗎?

CalvinKuo iT邦大師 7 級 ‧ 2011-11-30 16:06:15 檢舉

就算你自己架 DNS伺服器多少也會受DNS TTL時間影響...
舊標準是預設24小時..
詳細請看維基百科
http://en.wikipedia.org/wiki/Time\_to\_live
The units used are seconds. An older common TTL value for DNS was 86400 seconds, which is 24 hours. A TTL value of 86400 would mean that, if a DNS record was changed, DNS servers around the world could still be showing the old value from their cache for up to 24 hours after the change.

Newer DNS methods that are part of a DR (Disaster Recovery) system may have some records deliberately set extremely low on TTL. For example a 300 second TTL would help key records expire in 5 minutes to help ensure these records are flushed world wide quickly. This gives administrators the ability to edit and update records in a timely manner. TTL values are "per record" and setting this value on specific records is normally honored automatically by all standard DNS systems world-wide.

CalvinKuo iT邦大師 7 級 ‧ 2011-11-30 16:33:22 檢舉

設round-robin DNS可以解決一半問題。
因為將故障IP紀錄刪除前,還是有機會連到故障IP(2筆是50%機率)。
預算夠,可以看看下面討論中提到的3DNS。
http://social.technet.microsoft.com/forums/zh-TW/winserverzhcht/thread/d01b42e0-007c-46a6-9a1d-15a25cbdad21

28
zyman2008
iT邦大師 8 級 ‧ 2011-11-30 12:49:44

那是因為大多數的 DNS server 上面 DNS zone 的 TTL 預設值都沒去改.
所以就用 default TTL 86400 seconds (24 hours).

所以其他的 DNS server 的 cache 裡的 record 要 24 hours 後才會過期,
這時候有新的查詢才會來你的 DNS server 要到更新的 IP address.

樓上提到的改 Server IP 是一種方法, 另一種就是改你 DNS server A record
的 TTL 設定. 例如改成 10 分鐘.
600 web A X.X.X.X

上述都是手動的方式, 有預算的話. 可以規劃 server load balance 或
cluster 的架構, 盡量達到服務不中斷的目的.

6
koes
iT邦新手 5 級 ‧ 2011-11-30 13:31:31

hinet的好像是說24~48小時吧
上次更換ip好像不到12小時就可以連了

14
martinjc
iT邦新手 2 級 ‧ 2011-12-01 01:51:37

請問大大你的dns是自己的還是isp的?
要是自己的!只要修改zone中的TTL時間就可以了阿
改成30sec,就可以了!
因為domain申請那邊,會記錄ns記錄!指回dns server
每次修改後,30sec就生效了阿

16
dino9021
iT邦新手 4 級 ‧ 2011-12-01 07:10:29

申請一個 dyndns.org 網址比如 xxxx.dyndns.org
把你的 www 網址用 cname record 指向申請的那個 xxxx.dyndns.org
然後在兩台 Server 上都裝 dyndns.org 的 Client
主要機開啟 dyndns.org 的 Client 讓他持續更新 IP 對應資料
備援機不要開啟 dyndns.org 的 Client
發生事故要切換機的時候就把要服務機器的 dyndns.org 的 Client 打開讓他更新 IP 對應資料
這樣可以縮短收斂時間, 但也只是縮短一些而已
dyndns.org 的 ttl 比較短一點

4
pu88
iT邦新手 2 級 ‧ 2011-12-01 15:22:30

請依樓上 zyman2008 兄的說法即可, 把TTL改成幾秒或幾分鐘即可, 不然多線路備援怎麼辦? 目前所有 Inbond LoadBlance 設備都是如此做的 ,我家的TTL只有1秒....., 也就是一條線斷了, DNS馬上會把server ip改成另一條線的IP有

nikan iT邦新手 4 級 ‧ 2011-12-01 19:51:40 檢舉

記得提醒user將你的dns設為主要的dns,
才能那麼即時的反應ip更換.

pu88 iT邦新手 2 級 ‧ 2011-12-02 16:51:42 檢舉

這倒不必, NS會自己來問, root 查到的也是跟我們一樣, 所以在internet上任一家DNS Server問到的值都一樣...

目前只有一些學術網路,大概DNS Server太舊或是負載太重, 所以常會查不到我家的domain

4
pocadidi
iT邦新手 5 級 ‧ 2011-12-05 09:39:59

修改DNS內的記錄確實會有需要24小時後才能"全部生效"
注意是"全部生效"=>全球有你的家DomainName記錄的DNS Server才會生效。
Easy觀念如下
1.全球的User 使用的DNS Server 一定不是台灣的hinet。
2.DNS Server本身會有快取,而每次快取更新的時間大約會在上次更新完後的24小時再次更新。
3.每一台DNS Server更新的時間落點就不同,但平均會在24小時~48小時更新完成。

所以你要User連到全球任何一台DNS 或是 User公司內部架設的DNS,平均會在24小時生效。

請問pocadidi大的意思是
不論我們怎麼改TTL為多短,仍然只是改自已這裡的設定
別人的dns主機還是一樣的TTL時間.所以我們一樣是發覺DNS全部生效是要24~48小時囉!

pu88 iT邦新手 2 級 ‧ 2011-12-06 16:41:09 檢舉

講太多都沒用,我給你一個我客戶的例子, 你去ping www.bok.com.tw
每一次回傳的IP都會不同, 共有3組IP依權值輪流回應, 誰說改IP要24小時才能生效,
是設定的問題, 這家的IP只要1秒就生效, 你用任何一家DNS Server查詢都一樣。

fillano iT邦超人 1 級 ‧ 2011-12-06 17:01:44 檢舉

這樣講好像怪怪的,一個domain name本來就可以對應多組ip,這跟改dns沒直接關係吧?

2
ganymede
iT邦好手 1 級 ‧ 2011-12-06 17:01:23

各位,

請弄清楚 TTL 的定義及功用好嗎?
TTL 是指time to live 的縮寫,意思就是當這筆記錄被其他 DNS 伺服器查詢到後, 這個記錄會保持在對方 DNS 伺服器的快取中,保持多少秒鐘的意思.

你高興的話, 你也可以把 TTL 設為 0, 但是你家的 DNS 可能會忙得死去活來.

詳細資料可參考: http://linux.vbird.org/linux\_server/0350dns.php

我要發表回答

立即登入回答