• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 博客專欄

    EEPW首頁 > 博客 > 服務網格自動故障檢測及流量切換方案

    服務網格自動故障檢測及流量切換方案

    發布人:天翼云開發者 時間:2024-06-17 來源:工程師 發布文章

    本文分享自天翼云開發者社區《服務網格自動故障檢測及流量切換方案》,作者:s****n

    隨著云原生技術的發展,越來越多的應用采用容器,微服務技術,以istio為代表的服務網格就是其中最廣泛使用的一種。它在業務容器創建時,自動向業務服務的pod中注入proxy容器邊車,將流入和流出業務容器的網絡流量全部劫持到proxy容器,經由proxy容器處理后再進行下一步轉發。

    Proxy容器的處理規則通過istiod控制面下發,主要分為流量控制、安全、可觀測性三大類。以可觀測性為例的大量規則都僅對流經的數據進行統計,監控,鏈路追蹤等附加操作,不影響和改變業務本身的請求。但是當proxy容器自身或其依賴的服務出現問題時,因其流量劫持動作,往往會造成整個服務不可用。

    目前處理此類問題的方法,以人工干預為主,當服務不可用時,通過告警通知運維人員,運維人員進行現場問題定位及處理。在有proxy邊車的場景下,若proxy問題不能快速解決,運維人員也經常需要手動去除proxy容器邊車,先恢復業務流量再做細致排查。如果能自動化檢測proxy故障并進行及時處理,會大大提供微服務框架下的服務可用性,減少故障帶來的損失及人力排查成本

    實現方案如下:

    整體結構: 

    image.png

     

    具體方法:

    1.在istio控制面加入故障檢測及流量阻斷模塊‘hot-switch’.

    2.在istio的邊車代理proxy內部加入故障檢測命令,并與控制面故障檢查模塊通信,具體檢測命令例如:

    a.Watch相關pod的proxy容器狀態,當容器狀態為fail時,表示proxy容易已經不再存活;

    b.通過檢查proxy容器的15021 health端口,若返回值false,則proxy存活但不健康等等;

    3.自動檢測確認代理proxy問題后,hot-switch通過進入pod執行iptables相關命令,停止proxy的流量劫持,將流量模式由proxy控制管理,改為直通業務容器

    a.在pod啟動前,proxy進行流量劫持的過程:首先運行 Init 容器,Init 容器用于設置 iptables 將進入 pod 的流量劫持到 Envoy sidecar proxy。

    具體命令類似 :Istio-iptables -p 15001 -z 15006 -u 1337 -m REDIRECT -i '*' -x "" -b * -d "15090,15201,15020"

    envoy sidecar proxy 啟動之后從pilot獲得動態的規則,來對進出流量進行控制,流量劫持后的鏈路如下

    image.png

    b.檢測確認proxy問題后,通過iptables的反向命令,清除流量劫持規則,可用命令為 istio-clean-iptables

    該方案無需人工參與,可自動檢測問題,快速處理,在網格邊車出現故障的時候也能通過一定程度的服務降級,最大程度保障服務的基本可用性

    *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。




    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 丰台区| 安义县| 龙游县| 涿鹿县| 无锡市| 清远市| 惠来县| 锡林浩特市| 成安县| 汕头市| 鹤庆县| 镇宁| 陇南市| 岗巴县| 吉隆县| 万宁市| 阜宁县| 潼南县| 上饶县| 岫岩| 昔阳县| 泗洪县| 张家港市| 阳东县| 贵定县| 芒康县| 棋牌| 浦县| 夏津县| 汝阳县| 石屏县| 石门县| 张家港市| 塔城市| 木里| 阿拉善右旗| 南涧| 石门县| 永定县| 太谷县| 南召县|