中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IPVS下CoreDNS滾動更新解析失敗原理是什么

發布時間:2023-03-09 11:19:13 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

這篇文章主要介紹了IPVS下CoreDNS滾動更新解析失敗原理是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇IPVS下CoreDNS滾動更新解析失敗原理是什么文章都會有所收獲,下面我們一起來看看吧。

IPVS 模式下,當 coredns 滾動更新期間,集群監控日志出現大量的連接超時,由于日志異常的時間和 coredns 變更時間完全重疊,懷疑是 coredns 滾動更新造成,下面進行問題復現,并給出優化方案。

IPVS下CoreDNS滾動更新解析失敗原理是什么

實驗

  • 創建一個由 2 個 POD 作為后端的 coredns service

  • 通過創建大量 DNS 查詢來訪問此服務

  • 觸發滾動更新 coredns

順序查詢

while true;do time (dig +tries=1 -4 +short A <name> @<dns clusterIP> >> dig.log) >> dig.log 2>&1;done

IPVS下CoreDNS滾動更新解析失敗原理是什么

可以看到在 順序執行(非并發壓測)的情況下,已經出現較多DNS解析超時的情況

并發查詢

dnsperf是一個開源的DNS壓力測試工具,用戶可以用它來對DNS服務器或者Local DNS做壓力測試。dnsperf目前的實現是單進程模式,通過epoll非阻塞地處理網絡事件

$ echo "www.mervinwang.com A" > dnstest
$ dnsperf -d dnstest -s <DNS的IP> -c100000 -Q100000 -l60
數據\解析超時時間1000ms500ms
sent6742340925
completed6435834519
lost3065 (4.55%)6406 (15.65%)

優化

IPVS下CoreDNS滾動更新解析失敗原理是什么

通過查閱 issue 得知,這里可能與ipvs_udp_timeout有關,默認的設置的是300scoredns 滾動更新的時候 ipvs 中 udp 老鏈接會 300s 才刪除,如果在 300s 內客戶端有端口重用的話就會出現這個問題,并且這個時間和日志發生的時間也很類似,持續了5分鐘。

優化改動

kube-proxy 加了ipvs-udp-timeout=10s

    spec:
      containers:
      - args:
        - --kubeconfig=/var/lib/kube-proxy/config
        - --hostname-override=$(NODE_NAME)
        - --v=2
        - --proxy-mode=ipvs
        ...
        - --ipvs-udp-timeout=10s

等待5分鐘(關鍵!!)

coredns configmaphealth lameduck配置改成20s

Corefile: |-
    .:53 {
        errors
        health {
            lameduck 20s
        }
        ready
...
}

查看 coredns日志,等待 reload

IPVS下CoreDNS滾動更新解析失敗原理是什么

修改 coredns configmap 后,coredns 會自動 Reload,Relaod 過程中打印輸出的 lameduck 時間為 上次配置的時間

優化后結果

數據類型\解析超時時間1000ms500ms
sent8502780502
completed8493080423
lost97 (0.11%)79 (0.10%)

可以看到,效果還是很明顯的~

最后附上 dnspref 工具的常用參數:

Dnsperf 支持下面的這些命令行參數:
-s     用來指定DNS服務器的IP地址,默認值是127.0.0.1
-p     用來指定DNS服務器的端口,默認值是53
-d     用來指定DNS消息的內容文件,該文件中包含要探測的域名和資源記錄類型,見下文
-t     用來指定每個請求的超時時間,默認值是3000ms
-Q     用來指定本次壓測的最大請求數,默認值是1000
-c     用來指定并發探測數,默認值是100. dnsperf會從-d指定的文件中隨機選取100個座位探測域名來發送DNS請求.
-l     用來指定本次壓測的時間,默認值是無窮大。
-e     本選項通過EDNS0,在OPT資源記錄中運用edns-client-subnet來指定真實的client ip. 
-i     用來指定前后探測的時間間隔,因為dnsperf是一個壓測工具,所以本選項目前還不支持。
-P     指定用哪個傳輸層協議發送DNS請求,udp或者tcp。默認值是udp
-f     指定用什么地址類型發送DNS請求,inet或者inet6。默認值是inet
-v     除了標準的輸出外,還輸出每個相應碼的個數。
-h     打印幫助

關于“IPVS下CoreDNS滾動更新解析失敗原理是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“IPVS下CoreDNS滾動更新解析失敗原理是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹寨县| 双牌县| 炉霍县| 阿勒泰市| 佛坪县| 莱西市| 台南县| 炎陵县| 吕梁市| 平舆县| 安顺市| 惠水县| 桐梓县| 平泉县| 和林格尔县| 抚顺县| 卢氏县| 凯里市| 潮安县| 大新县| 绵阳市| 淅川县| 克东县| 呼伦贝尔市| 崇明县| 娱乐| 隆子县| 桃江县| 庆元县| 清苑县| 天峨县| 星座| 鄄城县| 西城区| 吉水县| 铁岭县| 灌阳县| 桃园市| 康平县| 钦州市| 昌宁县|