上週小編在公司不是因為新服務上線遇到了 AWS ELB STICKY SESSIONS 的問題嗎?
結果在最近測試系統又遇到了問題了 QQ … (這服務上線怎麼這麼坎坷 …)
先來跟大家說說遇到了什麼問題,
首先是打開網頁的時候 “有機會” 出現如下畫面,
有時候又正常
如上圖,小編以一個一定錯誤的網站來舉例子。
這時候就覺得很奇怪,為什麼有時候正常有時候失敗,看系統的 Log 又沒有什麼異樣,就想到這個系統是使用客戶的 DNS Server,因此可能是 DNS Server 有問題,我的習慣我會先查詢一下 DNS 的狀態,以下以小編的 Blog 為例子 (現在應該是正常的拉!),模擬操作兩次卻拿到不依樣的結果,而且回應的 A 紀錄是空的:
clarence~: dig @8.8.8.8 blog.clarence.tw | |
; <<>> DiG 9.10.6 <<>> @8.8.8.8 blog.clarence.tw | |
; (1 server found) | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43396 | |
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 512 | |
;; QUESTION SECTION: | |
;blog.clarence.tw. IN A | |
;; ANSWER SECTION: | |
blog.clarence.tw. 299 IN A 104.31.80.250 | |
blog.clarence.tw. 299 IN A 104.31.81.250 | |
;; Query time: 35 msec | |
;; SERVER: 8.8.8.8#53(8.8.8.8) | |
;; WHEN: Sat Apr 20 00:00:00 CST 2019 | |
;; MSG SIZE rcvd: 77 | |
clarence~: dig @8.8.8.8 blog.clarence.tw | |
; <<>> DiG 9.10.6 <<>> @8.8.8.8 blog.clarence.tw | |
; (1 server found) | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 27880 | |
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 512 | |
;; QUESTION SECTION: | |
;error.clarence.tw. IN A | |
;; AUTHORITY SECTION: | |
clarence.tw. 1799 IN SOA graham.ns.cloudflare.com. dns.cloudflare.com. 2030628787 10000 2400 604800 3600 | |
;; Query time: 35 msec | |
;; SERVER: 8.8.8.8#53(8.8.8.8) | |
;; WHEN: Sat Apr 20 00:00:00 CST 2019 | |
;; MSG SIZE rcvd: 110 |
這時候小編就覺得這個地方有問題,就去找這個 Domain 的 NS Server 位置,查詢的方法如:
clarence~: dig @8.8.8.8 ns clarence.tw | |
; <<>> DiG 9.10.6 <<>> @8.8.8.8 ns clarence.tw | |
; (1 server found) | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32983 | |
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 512 | |
;; QUESTION SECTION: | |
;clarence.tw. IN NS | |
;; ANSWER SECTION: | |
clarence.tw. 86400 IN NS graham.ns.cloudflare.com. | |
clarence.tw. 86400 IN NS ulla.ns.cloudflare.com. | |
;; Query time: 32 msec | |
;; SERVER: 8.8.8.8#53(8.8.8.8) | |
;; WHEN: Sat Apr 1 00:00:00 CST 2019 | |
;; MSG SIZE rcvd: 97 |
由上可以看到小編的 NS Server 為:graham.ns.cloudflare.com 與 ulla.ns.cloudflare.com,通常來說都會有兩台以上的 NS Server,如果是自己架設的 DNS Server 可能就會是 ns1.domain.com 與 ns2.domain.com 是比較常見的架構,剛好小編遇到的客戶就是這種命名方法。
如 Google 的 DNS 位置就是以這種方法命名
clarence~: dig @8.8.8.8 ns google.com | |
; <<>> DiG 9.10.6 <<>> @8.8.8.8 ns google.com | |
; (1 server found) | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1239 | |
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 512 | |
;; QUESTION SECTION: | |
;google.com. IN NS | |
;; ANSWER SECTION: | |
google.com. 21599 IN NS ns2.google.com. | |
google.com. 21599 IN NS ns4.google.com. | |
google.com. 21599 IN NS ns1.google.com. | |
google.com. 21599 IN NS ns3.google.com. | |
;; Query time: 10 msec | |
;; SERVER: 8.8.8.8#53(8.8.8.8) | |
;; WHEN: Sat Apr 20 00:00:00 CST 2019 | |
;; MSG SIZE rcvd: 111 |
這時候我們拿到了 NS Server 的位置後就可以直接去問他的 DNS Server 我們剛剛查詢不正常的 Domain 是發生什麼事情了,分為對兩台 DNS Server 發送我們目標 Domain 的請求,如下為請求方法:
clarence~: dig @graham.ns.cloudflare.com blog.clarence.tw | |
; <<>> DiG 9.10.6 <<>> @graham.ns.cloudflare.com blog.clarence.tw | |
; (1 server found) | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5440 | |
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 | |
;; WARNING: recursion requested but not available | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 512 | |
;; QUESTION SECTION: | |
;blog.clarence.tw. IN A | |
;; ANSWER SECTION: | |
blog.clarence.tw. 300 IN A 104.31.81.250 | |
blog.clarence.tw. 300 IN A 104.31.80.250 | |
;; Query time: 7 msec | |
;; SERVER: 173.245.59.171#53(173.245.59.171) | |
;; WHEN: Sat Apr 20 21:18:10 CST 2019 | |
;; MSG SIZE rcvd: 77 | |
clarence~: dig @ulla.ns.cloudflare.com blog.clarence.tw | |
; <<>> DiG 9.10.6 <<>> @ulla.ns.cloudflare.com blog.clarence.tw | |
; (1 server found) | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 27880 | |
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 512 | |
;; QUESTION SECTION: | |
;error.clarence.tw. IN A | |
;; AUTHORITY SECTION: | |
clarence.tw. 1799 IN SOA graham.ns.cloudflare.com. dns.cloudflare.com. 2030628787 10000 2400 604800 3600 | |
;; Query time: 35 msec | |
;; SERVER: 8.8.8.8#53(8.8.8.8) | |
;; WHEN: Sat Apr 20 00:00:00 CST 2019 | |
;; MSG SIZE rcvd: 110 |
由上可以看出我們用它的第二台 NS Server 問到的結果不如預期,因此可以猜測問題可能是 NS Server 不同步所以造成網站時好時壞。
以上只是以小編在公司發生網站時好時壞,並且瀏覽器又出現 “找不到伺服器 IP 位址” 情況的一個例子,小編當時花了點時間尋找這個問題的原因,所以就寫一篇 Blog 紀錄一下拉 ~
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!