通過兩級網關設計來路由服務網格流量

ce79dcfeb55a10fed49bd70e2926d4dc.gif

9e0054a2f100991c9e7021de9941ac10.png

編者的話

本文是來自筆者的公司?Tetrate[1]?工程師 Petr McAllister 的分享,Tetrate 的拳頭產品是?Tetrate Service Bridge[2](下文簡稱 TSB),它是在開源的 Istio 和 Envoy 基礎上構建的,但為其增加了管理平面。

簡介

Tetrate 的應用連接平臺 Tetrate Service Bridge(TSB)提供兩種網關類型,分別為一級網關(Tier-1)和二級網關(Tier-2),它們都基于 Envoy 構建,但是目的有所不同。本文將探討這兩種類型網關的功能,以及何時選用哪種網關。

關于兩級網關的簡要介紹:

  • ??一級網關(下文簡稱 T1)位于應用邊緣,用于多集群環境。同一應用會同時托管在不同的集群上,T1 網關將對該應用的請求流量在這些集群之間路由。

  • ??二級網關(下文簡稱 T2)位于一個的集群邊緣,用于將流量路由到該集群內由服務網格管理的服務。

兩級網關釋義

托管在 TSB 管理的集群中的應用部署的設計與開源的 Istio 模型非常相似。它們的結構相同,使用入口網關來路由傳入的流量。T2 網關相當于 Istio 的入口網關(Ingress Gateway),在邏輯上與 Istio 開源模型相同,如圖 1 所示。

1642a08819b018c79028651ade095b14.png

圖 1:Istio 網關對比 Tetrate T2 網關

Tetrate Service Bridge 使用 Istio 和 Envoy 構建的服務網格管理集群的控制平面和數據平面,其本身不存在于應用數據路徑中。比較開源 Istio 管理的集群和 TSB 管理的集群之間的數據包路徑,你會發現兩者之間沒有區別。TSB 的配置清單(manifest)被 Istio 消費和使用。通過這種方式,TSB 的作用類似于 CI/CD 自動化邏輯,其中部署過程會影響應用程序的行為,但不會影響應用程序邏輯本身。

TSB 在開源 Istio 的增加了一些組件,以管理每組應用程序網關范圍的安裝和配置,以加快開發和運維人員的工作進度,將基礎設施和應用程序之間的職責分離,將錯誤配置網關的影響與其他應用程序 / 業務組隔離。

何時使用 T1 網關?

當你有兩個或更多的 Kubernetes 集群為同一個應用服務時,為了增加容量、藍綠部署、故障轉移等,問題總是出現:入站流量如何在這些集群之間分配?在每個集群邊緣的 T2 網關允許直接訪問應用程序 —— 例如,集群 A 將監聽?service1A.example.com,集群 X 將監聽?service1X.example.com。反過來,T2 網關提供跨集群的全局負載均衡。跨集群的流量路由分配基于 1 到 100 之間的權重值,指定發送到特定集群的流量的百分比。

下面是一個簡單的 T1 網關配置的例子。這個例子表示了一個完整的 T1 網關清單,以證明該解決方案的簡單性。關于具體設置的細節,請參考?Tetrate API 文檔?[3]

apiVersion:?gateway.tsb.tetrate.io/v2
kind:?Tier1Gateway
metadata:name:?service1-tier1group:?demo-gw-grouporganization:?demo-orgtenant:?demo-tenantworkspace:?demo-ws
spec:workloadSelector:namespace:?service1-tier1labels:app:?tsb-gateway-service1-tier1istio:?ingressgatewayexternalServers:-?name:?service1hostname:?service1.cx.example.comport:?80tls:?{}clusters:-?name:?site-1-gcpweight:?75-?name:?site-2-awsweight:?25

在這個例子中,到?service1.cx.example.com?的 75% 用戶請求被轉發到 GCP 中的?site-1,其余的轉發到 AWS 中的?site-2。這個例子中的流量到達明文端口 80,之后 T1 網關和應用集群之間的所有通信都經過 mTLS 加密。

127ddfa047c340aa47a93ef19e026151.png

圖 2:T1 和 T2 網關網絡路徑圖

云供應網關整合

Istio 用戶通常按應用模型實施入口網關。這種方法保證了對一個應用程序及其工件的安全、獨立管理。

這里注意到的最常見的痛點 —— 每個應用都需要使用云供應商的負載均衡器。這樣做使得用戶需要維護位于 Envoy 入口網關 Pod 前大量的負載均衡器,這帶來資金開銷和管理成本。

TSB 允許通過 NodePort 服務類型而不是 LoadBalancer 進行服務發現和通信,這意味著不再需要云供應商的負載均衡器;TSB 集群內的服務可以通過 NodePort 直接到達。T1 網關允許我們將云供應商負載均衡器的使用壓縮到一個單一的入口點。

1570d86376e5be812d00abd37113e6da.png

圖 3:云供應商網關整合

圖 3 展示了通過將集群內的服務連接轉移到 TSB,而不使用云供應商的負載均衡器來簡化云設置。在沒有 TSB 的情況下,要實現上述設置,需要使用外部負載均衡器。TSB 還維護 Kubernetes 節點的列表。

資源要求

就 T2 網關所需的資源而言,開源 Istio 和 TSB 的要求沒有什么不同。事實上,實現方式是一樣的 —— Gateway 和 VirtualService 清單可以手動創建,也可以通過開源的自動化工具創建。在 Tetrate 的用例中,TSB 為 Istio 創建清單。

T1 網關確實需要一個專門的控制平面,這意味著網格管理的應用程序和 T1 網關不能在同一個集群中運行,盡管承載 T1 網關的 Kubernetes 集群也可以承載服務網格以外的應用程序。不過,Tetrate 的有些客戶將 T1 網關放在與 TSB 管理平面相同的集群上。

架構考慮因素

隨著應用環境的發展和成熟,出現新的需求是很常見的。T1 網關可以作為初始服務網格架構實施的一部分進行規劃和實施,也可以在以后添加。增加一級網關只影響入口點的入站流量,但不需要對現有集群做任何改變。

圖 4 展示了一個沒有 T1 網關的部署配置。

8ad24f9dcaf9991f2a2ed1692e65adbd.png

圖 4:沒有 T1 網關的部署配置

當引入 T1 網關時(圖 5),必須更新 DNS 記錄以指向一級網關,而不需要對應用集群的設置進行修改。

6a031e7d08857fc681b2d6610b6416f6.png

圖 5:帶有一級網關的多集群部署實例

注意:TSB 不是 DNS 管理工具,DNS 記錄的更改是在 TSB 之外進行的(有多種自動化工具和技術可用于該操作)。

然而,在添加 T2 網關時,從使用 LoadBalancer 切換到 NodePort 架構,確實需要對應用集群進行輕微的改變。

雖然 T1 網關作為應用邊緣傳入流量的前端,但它可以部署在一個高可用性的配置中(圖 6)。

4861be644447d4fe07419c57af3345cb.png

圖 6:高可用性配置中的 T1 網關

在高可用性方面,可以使用 T1 網關的數量沒有限制。這種靈活的架構允許用戶建立強大的設計以滿足廣泛的要求。

總結

本文涵蓋了服務網格架構師在企業環境中設計 TSB 部署時最常見的架構問題。以下是最重要的收獲:

  • ? TSB T1 和 T2 網關使用 Istio 入口網關 Pod 和服務。這里沒有引入額外的專有組件。

  • ? TSB 支持開源 Istio 中的網關模式。僅僅是名稱上的改變,如 TSB 的入口網關被稱為 T2 網關。

  • ??單一的網關可以用于所有的應用,也可以采用按應用劃分的網關模式。

  • ? TSB 可以通過利用 Kubernetes NodePort 而不是 LoadBalancer 進行集群內通信,減少使用的云廠商負載均衡器的數量,從而降低云計算成本。

  • ? TSB T1 網關提供跨集群負載均衡功能。

  • ??由于在實施的早期階段可能不需要跨集群負載均衡,因此 T1 網關不需要成為初始部署的一部分,可以在以后添加,對現有的應用程序沒有重大影響。

  • ??多個 T1 網關可以部署在同一個應用程序前面,以實現高可用性。

引用鏈接

[1]?Tetrate:?https://tetrate.io/
[2]?Tetrate Service Bridge:?https://tetrate.io/tetrate-service-bridge
[3]?Tetrate API 文檔:?https://docs.tetrate.io/service-bridge/1.4.x/en-us/refs/tsb/gateway/v2/tier1_gateway#tier1gateway

獲取更多云原生社區資訊,加入微信群,請加入云原生社區,點擊閱讀原文了解更多。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285400.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285400.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285400.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

各個線程順序循環執行

問題描述:A任務執行完之后執行B任務,B任務執行之后再執行C任務,C任務執行完之后A再執行任務,以此循環下去 Task 1 package com.ydd.work.concurrent;2 3 import java.util.concurrent.atomic.AtomicInteger;4 /**5 * 6 * author…

python類相關

class A:def bar(self):print("BAR")self.f1() class B(A):def f1(self):print("B") class C:def f1(self):print("C") class D(C,B):pass obj D() obj.bar() # 創建了類A、B、C、D; # D繼承了C和B,B繼承了A,…

Python File 介紹

Open() 方法 Python open() 方法用于打開一個文件,并返回文件對象,在對文件進行處理過程都需要使用到這個函數,如果該文件無法被打開,會拋出 OSError。 注意:使用 open() 方法一定要保證關閉文件對象,即調用…

H5開發中常用的js方法

2019獨角獸企業重金招聘Python工程師標準>>> h5和app之間的webview交互 這是常用的交互方法之一,iOS可以使用WKWebView,安卓可以使用JsBridge,完成常見的交互效果。function webViewHandler(iosCallback, adrCallback) {if (getMobileOperatingSystem() …

【前端優化】

如何進行前端優化 (1) 減少http 請求次數:css spirit(多張小圖放一個大圖上,用定位選擇不同小圖),data uri(壓縮圖片大小), 圖片大小控制合適;網頁Gzip&#…

GPS RTK(銀河1)基準站架設、移動站設置完整操作流程

本文講解GPS RTK(銀河1)基站架設完整操作流程,包括相對坐標、點校正等操作。 文章目錄 一、架設基準站二、啟動基準站三、架設移動站四、設置移動站一、架設基準站 基準站一定要架設在視野比較開闊,周圍環境比較空曠的地方,地勢比較高的地方;避免架在高壓輸變電設備附近…

在.NET 6.0上使用Kestrel配置和自定義HTTPS

本章是《定制ASP NET 6.0框架系列文章》的第四篇。在本章,我們將學習ASP.NET Core的Kestrel配置和自定義HTTPS,好我們開始正文。在ASP.NET Core中,默認情況下HTTPS處于打開狀態,這個不是問題,我們無需禁用它。因為如果…

dom4j-2.1.1 jaxen-1.1.6 讀取xml數據源

<?xml version"1.0" encoding"UTF-8"?> <data><row><id>1</id><name>JackieChen</name></row><row><id>2</id><name>TomLee</name></row> </data> package…

Virtualbox安裝增強工具失敗

在安裝Virtualbox增強工具安裝時出現unable to find the sources of your current Linux kernel&#xff0c;安裝失敗&#xff0c;導致主機與虛擬機之間不能共享文件夾&#xff0c;不能復制粘貼&#xff0c;鼠標也不能直接移動到物理機&#xff0c;需要按快捷鍵才行。 解決辦法…

C語言試題118之求1到20的每個數的階層之和

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:求 1+2!+3!+…+20!的和 分析:此程序只是把累加變成了累乘。 2 、溫馨提示 想獲取更多…

吐血整理:C#順序、選擇、循環結構用法與案例,這一篇就夠了!

C#語言中用于結構化程序設計的三種基本結構是:順序結構、選擇結構、循環結構。本文詳細整理了以上三種結構的用法,案例。 文章目錄 4.1 順序結構4.1.1 賦值語句4.1.2 輸入語句4.1.3 輸出語句4.1.4 復合語句4.1.5 應用實例4.2 選擇結構4.2.1 if條件語句4.2.2 switch結構4.3 循…

java.lang.NoSuchFieldError: EMPTY_ORDERED_ITERATOR起因及解決辦法

java.lang.NoSuchFieldError: EMPTY_ORDERED_ITERATOR 最近這個錯誤遇到了好多次&#xff0c;不過都很輕松的解決了&#xff0c;問題的起因是多了一個collection包&#xff0c;如下圖 看到了&#xff0c;只要把其中的一個刪除掉&#xff0c;更新啟動Tomcat就行了。 本文轉自suc…

由ASP.NET Core根據路徑下載文件異常引發的探究

前言最近在開發新的項目&#xff0c;使用的是ASP.NET Core6.0版本的框架。由于項目中存在文件下載功能&#xff0c;沒有使用類似MinIO或OSS之類的分布式文件系統&#xff0c;而是下載本地文件&#xff0c;也就是根據本地文件路徑進行下載。這其中遇到了一個問題&#xff0c;是關…

[轉]EL函數、自定義EL函數、自定義標簽

EL函數 1、EL函數的作用&#xff1a;操作字符串 2、在JSP頁面中要引入EL函數庫 <% taglib prefix"fn" uri"http://java.sun.com/jsp/jstl/functions" %> 3、語法 ${ fn:方法名(參數) } 4、實例 <% page language"java" contentTyp…

XidianOJ 1019 自然數的秘密

題目描述 題意&#xff1a; 已知&#xff1a;N&#xff01;N*(N-1)*...*2*1 找到最小自然數 N, 使N!末尾有連續 M個零. 例如, 5! 的結尾包含1個零. 輸入 第一行輸入一個整數T,表示有T組測試數據。 對于每組測試數據&#xff0c;輸入一個整數M&#xff0c;表示包含M個零。&#…

C語言試題119之利用遞歸方法求 5的階層

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:利用遞歸方法求 5的階層 分析:遞歸公式:fn=fn_1*4的階層 2 、溫馨提示 想獲取更多C…

深入學習http協議(轉)

http://www.blogjava.net/zjusuyong/articles/304788.html轉載來的&#xff0c;沒看到原文地址。http協議學習系列1. 基礎概念篇1.1 介紹HTTP是Hyper Text Transfer Protocol&#xff08;超文本傳輸協議&#xff09;的縮寫。它的發展是萬維網協會&#xff08;World Wide Web Co…

【ArcGIS風暴】ArcGIS+CASS點云(.las)數據生成等高線方法案例精解

本文講解基于點云LAS數據,在ArcGIS+CASS平臺上生成等高線的方法。 擴展閱讀: 什么是點云?什么是Las數據集?一篇文章告訴你點云數據的奧秘 ArcGIS+CASS點云(.las)數據生成等高線方法案例精解 ArcGIS平臺上點云(.las)數據生成等高線方法案例精解 文章目錄 一、LAS轉多點二、…

CSS浮動屬性Float到底什么怎么回事,下面詳細解釋一下

float 是 css 的定位屬性。在傳統的印刷布局中&#xff0c;文本可以按照需要圍繞圖片。一般把這種方式稱為“文本環繞”。在網頁設計中&#xff0c;應用了CSS的float屬性的頁面元素就像在印刷布局里面的被文字包圍的圖片一樣。浮動的元素仍然是網頁流的一部分。這與使用絕對 定…

MAUI Developer Day in GCR

點擊藍字關注我們編輯&#xff1a;Alan Wang排版&#xff1a;Rani Sun活動介紹作為一個支持在單一代碼庫中開發能夠運行在 Android、iOS、macOS 和 Windows 等多平臺的應用程序的跨平臺框架&#xff0c;.NET MAUI &#xff08;多平臺應用程序用戶界面&#xff09;還在預覽版時就…