問題描述
在使用API Management來進行API管理時,當我們后端的API DNS IP地址發生改變或者是API的域名發生改變后,通過APIM請求訪問的還是是舊的域名或者IP地址,這是因APIM中對DNS的緩存導致問題。
問題分析
APIM本質也是部署在VM中的應用,對DNS的處理完全依照VM的機制,APIM本身並無特殊的緩存機制。如果DNS發生變化,其解析到新的變動取決於TTL的時間。默認情況下,TTL時間為3600,所以當后端API域名變動后,大約在60分鍾左右生效。
解決辦法
因為APIM中使用了HTTP Keep-Alive功能,所以如果APIM中持續訪問后端API,之前的訪問就會使用在修改DNS前建立的http連接,導致請求還是訪問的舊的服務。如是這樣的情況,可以通過停止舊的服務,讓HTTP Keep-alive的功能失效。這個時候請求會重新去解析DNS,得到新的信息(如IP地址),訪問就可以成功了。
TTL介紹鏈接:https://jaminzhang.github.io/dns/DNS-TTL-Understanding-and-Config/