成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Istio組件Envoy的流量管理

網(wǎng)絡 網(wǎng)絡管理
Envoy的核心工作內容在于對業(yè)務透明的請求攔截,將所有進出流量進行管理。對攔截的請求進行一定的規(guī)則進行安全訪問控制、接入控制、流量控制等諸多方面處理后,發(fā)送給應用程序。

背景介紹

微服務架構帶來的開發(fā)便捷性使業(yè)務功能的開發(fā)周期明顯縮短,通過對于云計算平臺架構的原生優(yōu)化,讓業(yè)務功能的持續(xù)集成與交付更為敏捷。但同時微服務架構也引入了服務治理的諸多問題:一個應用由多個服務組成,每個服務有數(shù)個實例,每個實例的運行狀態(tài)又在實時變化,這些催生了服務間通訊層的出現(xiàn)。通訊層既不與應用程序代碼耦合,又能捕獲到底層環(huán)境的動態(tài)變化并作出適當?shù)恼{整,避免業(yè)務出現(xiàn)單點故障。

1.ServiceMesh簡介

1.1服務網(wǎng)格(Service Mesh)簡介

服務網(wǎng)絡是一個基礎設施層,用于處理服務間通信。云原生應用有著復雜的服務拓撲,服務網(wǎng)格負責在這些拓撲中實現(xiàn)請求的可靠傳遞。在實踐中,服務網(wǎng)格通常實現(xiàn)為一組輕量級網(wǎng)絡代理,它們與應用程序一起部署,但對應用程序透明。

從局部看,服務網(wǎng)格技術就是在應用節(jié)點上部署代理,應用將請求發(fā)給代理,由代理完成點對點的路由轉發(fā)。

在上面的圖中,如果把左邊圖中的應用程序去掉,只呈現(xiàn)出來代理和它們之間的調用關系(即右圖)。這時Service Mesh的概念就會清晰:代理和調用關系形成完整的網(wǎng)絡,代表服務間復雜的調用關系,承載著系統(tǒng)內的所有應用。

1.2服務網(wǎng)絡架構特點及優(yōu)勢

1)點對點通訊:沒有中心瓶頸。

2對應用無入侵:可以支持異構技術產(chǎn)品的集成。同時對應用透明,應用開發(fā)不再需要關心復雜的網(wǎng)絡通訊實現(xiàn),可以專注業(yè)務邏輯的實現(xiàn)。

2.Istio及Envoy簡介

Istio是一個由Google,IBM和Lyft團隊合作開發(fā)的開源Service Mesh框架。目前已成為ServiceMesh的事實技術標準,被廣泛應用于各個行業(yè)的IT架構。

Envoy 是用 C++語言開發(fā)的高性能代理,其內置服務發(fā)現(xiàn)、負載均衡、TLS終止、HTTP/2、GRPC代理、熔斷器、健康檢查,基于百分比流量拆分的灰度發(fā)布、故障注入等功能,用于協(xié)調服務網(wǎng)格中所有服務的入站和出站流量。

3.Envoy流量管理的原理

3.1Iptables介紹

Istio調用Linux中的iptables進行流量管理。iptables是一個運行在用戶空間的應用軟件,它通過控制Linux內核netfilter模塊,來管理網(wǎng)絡數(shù)據(jù)包的流動與轉送,實際上netfilter才是防火墻真正的安全框架。netfilter是Linux網(wǎng)絡安全大廈的基石,它提供了一整套鉤子(Hook)函數(shù)機制,IP層的5個鉤子點對應了iptables的5個內置鏈條:

  • PREROUTING:在此DNAT。
  • POSTROUTING:在此SNAT。
  • INPUT:處理輸入給本地進程的封包。
  • OUTPUT:處理本地進程輸出的封包。
  • FORWARD:處理轉發(fā)給其他機器、其他網(wǎng)絡命名空間的封包。

3.2關于網(wǎng)絡入站的IP封包

從網(wǎng)絡入站的IP封包,先入TREOUTING鏈,而后進行路由判斷:

1)如果封包路由目的地是本機:則進入INPUT鏈,然后發(fā)給本地進程。

2如果封包路由目的地不是本機,并且啟用了IP轉發(fā),則進入FORWARD鏈,然后通過POSTROUTING鏈,最后經(jīng)過網(wǎng)網(wǎng)絡接口發(fā)走。

3對于本地進程發(fā)往協(xié)議棧的封包,則首先通過OUTPUT鏈,然后通過POSTROUTING鏈,最后經(jīng)過網(wǎng)絡接口發(fā)走。

3.3關于自定義鏈

除此以外,我們還可以自定義鏈,但自定義鏈只能被某個默認的鏈當做動作去調用才能起作用。

在Kubernetes中Istio通過Admission webhook的機制將Envoy Sidecar自動注入,與應用容器運行于同一個Pod中,這種情況下它們將共享網(wǎng)絡名稱空間,因此也使用同一個網(wǎng)絡協(xié)議棧。

Istio 給應用 Pod 注入的配置主要包括:

1)Init 容器 istio-init:用于Pod中設置iptables端口轉發(fā)。

2) Sidecar 容器 istio-proxy:運行Envoy Sidecar代理。

3.4Iptables配置規(guī)則

在容器初始化后,我們進入Sidecar容器切換為root用戶,查看配置的iptables規(guī)則。

iptables -t nat -S

ISTIO_INBOUND 鏈:對所有進入Pod但非指定端口(如22)的流量全部重定向至15006端口(Envoy入口流量端口)進行攔截處理。

ISTIO_OUTPUT 鏈:將由 istio-proxy 用戶空間發(fā)出且目的地不為localhost的Pod流出流量全部重定向至15001端口(envoy出口流量端口)。其他流量全部直接放行至下一個POSTROUTING鏈,不用被Envoy攔截處理。

整體流量流向示意圖如下圖所示:

1)進入Pod的Inbound流量首先被PREROUTING鏈攔截并處理。

2當TCP請求進入PREROUTING鏈時全部交給ISTIO_INBOUND處理。

-A PREROUTING -p tcp -j ISTIO_INBOUND

3請求目標端口非15008/22/15090/15021/15020的TCP請求全部交給ISTIO_IN_REDIRECT處理。

-A ISTIO_INBOUND -p tcp -j ISTIO_IN_REDIRECT

4將發(fā)送到此的TCP請求全部重定向至15006端口(Envoy入口流量端口)

-A ISTIO_IN_REDIRECT -p tcp -j REDIRECT --to-ports 15006

5)在Envoy內部處理后,決定將數(shù)據(jù)包轉發(fā)到應用,這一步對Envoy來說屬于出口流量,會被netfilter攔截轉發(fā)至出口流量OUTPUT鏈。

6出站請求,當TCP請求進入OUTPUT鏈時全部交給ISTIO_OUTPUT處理。

-A OUTPUT -p tcp -j ISTIO_OUTPUT

7匹配出站請求對應規(guī)則,請求本地服務,出口為lo網(wǎng)卡同時來自istio-proxy用戶空間,流量返回到它的調用點中的下一條鏈執(zhí)行,即POSTROUTING鏈 。

-A ISTIO_OUTPUT -m owner --uid-owner 1337 -j RETURN -A ISTIO_OUTPUT -m owner 
--gid-owner 1337 -j RETURN

8Sidecar發(fā)出的請求到達目標應用。

9目標應用處理完業(yè)務邏輯后響應Sidecar,這一步對應用來說屬于出口流量,再次被netfilter攔截轉發(fā)至出口流量OUTPUT鏈。

10 出站請求,當TCP請求進入OUTPUT鏈時全部交給ISTIO_OUTPUT處理。

-A OUTPUT -p tcp -j ISTIO_OUTPUT

11請求下一個服務/響應請求,即請求非本地服務同時不來自istio-proxy用戶空間,流量被轉發(fā)至ISTIO_REDIRECT鏈。

-A ISTIO_OUTPUT -j ISTIO_REDIRECT

12將重定向于此的TCP協(xié)議請求流量全部重定向至15001端口(Envoy出口流量端口)。

-A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001

13在Envoy內部處理后,決定將數(shù)據(jù)包對外轉發(fā),這一步對Envoy來說屬于出口流量,會被netfilter攔截轉發(fā)至出口流量OUTPUT鏈。

14出站請求,當TCP請求進入OUTPUT鏈時全部交給ISTIO_OUTPUT處理。

-A OUTPUT -p tcp -j ISTIO_OUTPUT

15請求非本地的服務,出口不為lo網(wǎng)卡同時來自istio-proxy用戶空間則跳過了ISTIO_REDIREC處理,直接RETURN到下一個鏈,即POSTROUTING鏈

-A ISTIO_OUTPUT -m owner --uid-owner 1337 -j RETURN -A ISTIO_OUTPUT -m owner 
--gid-owner 1337 -j RETURN

16POSTROUTING鏈處理完成后,根據(jù)路由表選擇合適的網(wǎng)卡發(fā)送Outbound流量。

4.總結

Envoy的核心工作內容在于對業(yè)務透明的請求攔截,將所有進出流量進行管理。對攔截的請求進行一定的規(guī)則進行安全訪問控制、接入控制、流量控制等諸多方面處理后,發(fā)送給應用程序。通過使用Envoy,可以使開發(fā)者專注于應用功能的開發(fā),不用考慮復雜的網(wǎng)絡通訊。

責任編輯:武曉燕 來源: 匠心獨運維妙維效
相關推薦

2023-11-09 07:23:57

Istio路由分析

2023-12-25 07:46:35

GatewayAPI開源

2021-07-28 06:26:33

Istio 流量管理微服務

2023-11-07 07:46:02

GatewayKubernetes

2009-07-15 11:02:32

Swing組件

2021-11-01 08:16:26

模型Istio服務

2023-12-05 07:21:17

IstioEnvoy

2023-12-12 07:30:54

IstioWasm前端

2010-10-08 14:31:00

網(wǎng)絡流量監(jiān)測

2024-04-28 08:24:27

分布式架構Istio

2021-07-27 06:51:53

Istio 微服務Service Mes

2009-09-22 16:14:41

ViewBox組件

2011-12-29 15:35:39

Web

2010-06-07 14:23:40

Linux流量監(jiān)控

2021-03-17 21:34:44

Linux內存管理

2009-08-05 16:53:14

ASP.NET組件設計

2009-08-03 16:27:17

2025-03-27 05:25:00

2009-09-23 10:19:08

Hibernate分頁

2011-03-21 09:26:47

上網(wǎng)行為管理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲综合国产 | 超碰免费在线 | 香蕉婷婷| 蜜桃视频在线观看免费视频网站www | 国产一区二区三区在线看 | 日韩一区不卡 | 欧美精品在欧美一区二区 | 麻豆av在线免费观看 | 久久久久网站 | 国产aⅴ爽av久久久久久久 | 日韩欧美中文 | 中文字幕一区二区三区乱码在线 | 97精品超碰一区二区三区 | 久久精品中文字幕 | 国产成人免费网站 | 日韩视频一区在线观看 | www久久爱 | 久久久久国产精品免费免费搜索 | 自拍偷拍亚洲视频 | 国产免国产免费 | 91视频进入 | 亚洲精品一区二区网址 | 国产精品成人一区 | 日韩在线视频精品 | 国产999精品久久久影片官网 | 日本一区二区不卡 | 亚洲精品国产成人 | 一区二区av| 久久久久国产精品一区二区 | 欧美精品国产一区二区 | 二区三区视频 | 国产精品一区二区三区99 | 国产aaaaav久久久一区二区 | 性一交一乱一伦视频免费观看 | wwww.xxxx免费| 亚洲一区二区 | 国产精品久久久久久久粉嫩 | 中文在线视频观看 | 国产超碰人人爽人人做人人爱 | 欧美一区二区三区在线观看视频 | 成年男女免费视频网站 |