問題背景:
業(yè)務(wù)架構(gòu)升級(jí),需對(duì)域名A進(jìn)行DNS切換,指向新服務(wù)器。但是調(diào)用方客戶A死活不生效,流量好幾天之后還在老服務(wù)器上。
問題排查
通過和調(diào)用方溝通,確認(rèn)了域名沒有問題,他們是使用Nginx作為反向代理服務(wù)器請(qǐng)求的,然后通過ping的方式也證明了服務(wù)器的DNS確實(shí)生效了。那么可以肯定的事Nginx有緩存,通過查資料發(fā)現(xiàn):
- Nginx 在啟動(dòng)/重載的時(shí)候回去解析轉(zhuǎn)發(fā)的域名
- 如果域名無法解析 Nginx 就無法啟動(dòng)
- 只有下次重啟/重載的時(shí)候才會(huì)重新去解析,啟動(dòng)后無視TTL
臨時(shí)解決方案是重啟Nginx解決。
至于說怎么解決Nginx的DNS緩存問題有很多辦法,簡(jiǎn)單掉就是增加resolver配置
總結(jié)
其實(shí)問題很簡(jiǎn)單,但是要定位到問題在哪里,需要一些知識(shí)的積累。