日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

RocketMQ基于Kosmos實現(xiàn)AZ級高可用,你學會了嗎?

來源: 責編: 時間:2024-02-02 09:23:29 215觀看
導讀一、背景RocketMQ無論采用Master/Slave的主從模式,還是采用Dledger的多副本模式,均能保證RocketMQ集群的高可用性,但在一些極端場景下,例如機房斷電、機房火災、地震等不可抗拒因素使得該IDC可用區(qū)的RocketMQ集群無法正常

一、背景

RocketMQ無論采用Master/Slave的主從模式,還是采用Dledger的多副本模式,均能保證RocketMQ集群的高可用性,但在一些極端場景下,例如機房斷電、機房火災、地震等不可抗拒因素使得該IDC可用區(qū)的RocketMQ集群無法正常對外提供消息服務能力。因此,為了增強抗風險能力,消息隊列RocketMQ集群多活異地容災極為重要。Pqv28資訊網(wǎng)——每日最新資訊28at.com

二、物理部署異地容災方案

圖2-1 物理部署異地容災方案圖圖2-1 物理部署異地容災方案圖Pqv28資訊網(wǎng)——每日最新資訊28at.com

移動云部署的RocketMQ采用的Master/Slave的主從模式,其中物理部署異地容災的方案包括以下幾部分:Pqv28資訊網(wǎng)——每日最新資訊28at.com

(1) NameServer組件作為輕量級注冊中心,無狀態(tài),負責更新和發(fā)現(xiàn) Broker服務Namesrv之間相互沒有通信,單臺Namesrv宕機不影響其他Namesrv節(jié)點與集群的功能,兩臺Namesrv部署在不同的可用區(qū),當一個可用區(qū)故障,另外一個可用區(qū)的Namesrv依然能對外提供服務。Pqv28資訊網(wǎng)——每日最新資訊28at.com

(2) Broker組件作為消息中轉角色,負責存儲消息,轉發(fā)消息,采用Master/Slave部署模式,在兩個可用區(qū)上交叉部署(如broker-a的Master部署在可用區(qū)1上,Slave節(jié)點部署在可用區(qū)2上,broker-b的Master部署在可用區(qū)2上,Slave節(jié)點部署在可用區(qū)1上),消息發(fā)送到Master節(jié)點后會實時同步到Slave節(jié)點,保證每個可用區(qū)保存了全量的消息。當單個可用區(qū)故障也會對外提供消息的讀寫能力。Pqv28資訊網(wǎng)——每日最新資訊28at.com

三、云化版本異地容災單集群方案

針對物理機部署RocketMQ運維、遷移、擴縮容費時費力,操作復雜;業(yè)務增加以后,資源無法彈性,手動擴縮容實時性差;底層資源利用率不高,用戶資源隔離和流量的管控需要額外投入等問題。可以借助K8S Operator,Operator 的工作原理,實際上是利用了 Kubernetes 的自定義 API 資源(如使用CRD,CustomResourceDefinition),來描述想要部署的應用;然后在自定義控制器里,根據(jù)自定義 API 對象的變化,來完成具體的部署和運維工作,實現(xiàn)Operator主要關鍵是 CRD(自定義資源)和 Controller(控制器)的設計。Pqv28資訊網(wǎng)——每日最新資訊28at.com

圖3-1 Operator原理圖圖3-1 Operator原理圖Pqv28資訊網(wǎng)——每日最新資訊28at.com

自研了RocketMQ Operator實現(xiàn)集群的秒級部署,擴縮容,規(guī)格變更等一些列常見的運維操作,進而解決在物理部署所帶來的難題。下圖是RocketMQ Operator設計實現(xiàn):Pqv28資訊網(wǎng)——每日最新資訊28at.com

圖3-2 RocketMQ Operator架構圖圖3-2 RocketMQ Operator架構圖Pqv28資訊網(wǎng)——每日最新資訊28at.com

該方案使用三個異地可用區(qū)部署一個K8S集群,每個可用區(qū)部署一個master節(jié)點,圖中的Broker是兩主兩從高可用方案,采用交叉部署,namesrv每個可用區(qū)部署一個實例。Pqv28資訊網(wǎng)——每日最新資訊28at.com

圖3-3 云化異地容災單集群方案圖3-3 云化異地容災單集群方案Pqv28資訊網(wǎng)——每日最新資訊28at.com

這個方案存在幾個問題:大規(guī)模單K8S集群出現(xiàn)故障時可能會對整個集群產(chǎn)生影響,且組件升級難、風險大;隨著業(yè)務增加,核心組件壓力增大,性能下降;單一集群的建設可能受限于特定的地理位置和前期規(guī)劃,缺乏靈活性。Pqv28資訊網(wǎng)——每日最新資訊28at.com

四、云化版本異地容災集群聯(lián)邦方案

針對上述方案的缺點,消息隊列RocketMQ云化版本多可用區(qū)的現(xiàn)階段優(yōu)化為如下方案:Pqv28資訊網(wǎng)——每日最新資訊28at.com

圖4-1 云化異地容災多聯(lián)邦集群方案圖4-1 云化異地容災多聯(lián)邦集群方案Pqv28資訊網(wǎng)——每日最新資訊28at.com

K8S集群采用云原生Kosmos進行多個集群聯(lián)邦,不在單純依賴單個K8S集群,RocketMQ服務資源通過Kosmos CluterTree同步聯(lián)邦集群間的svc,pod等資源 ,聯(lián)邦集群間的網(wǎng)絡由Kosmos ClusterLink打通。Pqv28資訊網(wǎng)——每日最新資訊28at.com

五、Kosmos簡介

Kosmos是移動云的分布式云原生聯(lián)邦集群技術集合,于2023年8月開源,項目地址:https://github.com/kosmos-io/kosmos。Kosmos包含多集群網(wǎng)絡工具ClusterLink、跨集群編排工具ClusterTree等:Pqv28資訊網(wǎng)——每日最新資訊28at.com

圖5-1 Kosmos模塊和組件圖5-1 Kosmos模塊和組件Pqv28資訊網(wǎng)——每日最新資訊28at.com

ClusterLink的作用是打通多個Kubernetes集群之間的網(wǎng)絡,在CNI上層實現(xiàn),用戶無需卸載或重啟已經(jīng)安裝的CNI插件,且不會對正在運行的pod產(chǎn)生影響。ClusterLink的主要功能如下:Pqv28資訊網(wǎng)——每日最新資訊28at.com

? 提供跨集群PodIP、ServiceIP互訪能力  ? 提供P2P、Gateway多種網(wǎng)絡模式  ? 支持全局IP分配  ? 支持IPv4、IPv6雙棧

ClusterTree的作用是實現(xiàn)Kubernetes的樹形擴展和應用的跨集群編排。ClusterTree本質是一組控制器,用戶可以像使用單集群那樣直接與控制面kube-apiserver進行交互,不需要額外的代碼改造。目前,ClusterTree包含的主要功能如下:Pqv28資訊網(wǎng)——每日最新資訊28at.com

?提供創(chuàng)建跨集群應用能力  ?兼容k8s api,用戶零改造  ?支持有狀態(tài)應用  ?支持k8s-native(需要訪問kube-apiserver的)應用

除此之外,Kosmos還提供一些輔助工具,其中,kosmos-operator簡化了Kosmos部署。Kosmosctl是一款命令行工具,為用戶提供網(wǎng)絡連通性測試、集群納管、Kosmos部署安裝等功能。Pqv28資訊網(wǎng)——每日最新資訊28at.com

六、Kosmos多集群網(wǎng)絡ClusterLink

(一)ClusterLink工作流程和原理

ClusterLink基于linux隧道技術打通跨集群網(wǎng)絡,隧道類型是可配置的,例如:VxLAN或IPSec。ClusterLink包含Network-Manager、Agent等多個組件,如下圖所示淺藍色部分。各個組件相互協(xié)作完成隧道、路由表、fdb等網(wǎng)絡配置。Pqv28資訊網(wǎng)——每日最新資訊28at.com

圖 6-1 ClusterLink架構圖 6-1 ClusterLink架構Pqv28資訊網(wǎng)——每日最新資訊28at.com

其工作流程如下:Pqv28資訊網(wǎng)——每日最新資訊28at.com

  • 首先,位于各個子集群的Controller-Manager組件負責收集集群信息,如:podCIDR、serviceCIDR、node信息等,這些信息在不同的CNI插件下會保存在不同位置,因此Controller-Manager包含一些插件來適配CNI。收集的集群信息會保存在兩個自定義資源:Cluster、ClusterNode中。
  • 然后,Network-Manager組件監(jiān)聽到這兩個CR的變化,實時計算各個節(jié)點所需的網(wǎng)絡配置,如:網(wǎng)卡信息、路由表、iptables、arp等等。對應節(jié)點的網(wǎng)絡配置信息保存在NodeConfig自定義資源對象中。
  • 接下來,作為網(wǎng)絡配置的具體實施者,agent,一個daemonset,負責讀取對應節(jié)點的網(wǎng)絡配置,進行底層網(wǎng)絡配置。待網(wǎng)絡配置完成后,pod即可通過podIP、serviceIP進行跨集群訪問。

(二)ClusterLink網(wǎng)絡模式介紹

圖 6-2 ClusterLink網(wǎng)絡模式圖 6-2 ClusterLink網(wǎng)絡模式Pqv28資訊網(wǎng)——每日最新資訊28at.com

目前,ClusterLink包含兩種網(wǎng)絡模式:Gateway和P2P。在Gateway模式中,數(shù)據(jù)包由左側pod發(fā)出后,先經(jīng)由集群內(nèi)隧道vx-local到達該集群gateway節(jié)點。然后再走跨集群隧道到達對端集群。數(shù)據(jù)包到達對端集群后,交由CNI處理,走單集群網(wǎng)絡到達目標pod。該模式有利有弊,其優(yōu)勢在于每個集群只需要1個節(jié)點(考慮HA時需要2個)提供對外訪問即可,適用于跨云混合云場景。缺點是因為網(wǎng)絡路徑較長,有一定的性能損耗。針對此問題,ClusterLink提供P2P模式,對網(wǎng)絡性能要求較高的場景可以使用此模式。在該模式下,數(shù)據(jù)包的控制粒度更細,會直接發(fā)往對端pod所在節(jié)點。此外,P2P和Gateway兩種模式支持混合使用。Pqv28資訊網(wǎng)——每日最新資訊28at.com

七、Kosmos跨集群編排ClusterTree

(一)ClusterTree 組件和原理介紹

ClusterTree實現(xiàn)了Kubernetes的樹形擴展和應用的跨集群編排,用戶可以像使用單集群那樣訪問root kube-apiserver。Leaf集群作為節(jié)點添加在root集群中,用戶可以使用k8s原生的方式控制pod分布,例如:labelSelector、親和/反親和、污點和容忍、拓撲分布約束等。Pqv28資訊網(wǎng)——每日最新資訊28at.com

圖 7-1 ClusterTree 架構圖 7-1 ClusterTree 架構Pqv28資訊網(wǎng)——每日最新資訊28at.com

ClusterTree其本質是一組控制器,各個控制器的作用如下:Pqv28資訊網(wǎng)——每日最新資訊28at.com

  • node-controller:節(jié)點資源計算;節(jié)點狀態(tài)維護;節(jié)點lease更新
  • pod-controller:監(jiān)聽root集群pod創(chuàng)建,調用leaf集群kube-apiserver進行pod創(chuàng)建;維護pod狀態(tài);環(huán)境變量轉換;權限注入
  • storagecopy-controller:pv/pvc資源同步和狀態(tài)管理
  • mcs-controller:service資源同步和狀態(tài)管理

(二)ClusterTree 高可用介紹

當出現(xiàn)AZ級故障,或者AZ之間網(wǎng)絡中斷,確保用戶正常訪問RocketMQ集群實例是非常重要的。如上圖所示,為了應對A處網(wǎng)絡斷開或者控制面故障,ClusterTree實現(xiàn)了service和endpoint資源的同步,讓用戶訪問流量直接從子集群走,解耦了管理和業(yè)務,也縮短了網(wǎng)絡路徑。RocketMQ的nameserver pod是跨集群分布,當B處網(wǎng)絡斷開或者某個AZ故障,會導致用戶有50%概率訪問失敗的nsv pod。針對此問題,ClusterTree的eps-probe插件會周期對跨集群ep進行探測,并移除失效endpoint。Pqv28資訊網(wǎng)——每日最新資訊28at.com

圖 7-2 RocketMQ跨AZ高可用圖 7-2 RocketMQ跨AZ高可用Pqv28資訊網(wǎng)——每日最新資訊28at.com

八、Kosmos 集群負載和網(wǎng)絡性能測試

ClusterTree能管理多少節(jié)點和pod?ClusterLink較單集群網(wǎng)絡的性能如何?這些都是用戶非常關注的問題,對此我們也做了相應的測試。Pqv28資訊網(wǎng)——每日最新資訊28at.com

(一)集群負載測試

  1. 測試標準
    Kubernetes官方給出3條SLIs(Service Level Indicator,服務水平指標),并給出對應的SLOs(Service Level Objective,服務水平目標)值。SLIs包括:讀寫延遲、無狀態(tài)pod啟動時間(不含鏡像拉取和init容器啟動),文檔地址:https://github.com/kubernetes/community/blob/master/sig-scalability/slos/slos.md
  2. 測試工具
  • ClusterLoader2
    ClusterLoader2 能夠針對Kubernetes 定義的SLIs/SLOs 指標進行測試,檢驗集群是否符合各項服務質量標準。ClusterLoader2 最終會輸出一份Kubernetes集群性能報告,展示一系列性能指標測試結果。https://github.com/kubernetes/perf-tests/tree/master/clusterloader2
  • Kwok
    道客開源項目,用于快速模擬大規(guī)模集群。https://github.com/kubernetes-sigs/kwok
  1. 測試方法

圖 8-1 集群負載測試-測試方法圖 8-1 集群負載測試-測試方法Pqv28資訊網(wǎng)——每日最新資訊28at.com

如圖所示,我們首先通過kwok創(chuàng)建了20個大規(guī)模集群,每個集群包含5000個節(jié)點,我們將這些集群使用Kosmos進行納管。接下來,使用clusterloader2 連接控制面kube-apiserver進行集群負載測試,其關鍵測試參數(shù)如圖所示。Pqv28資訊網(wǎng)——每日最新資訊28at.com

  1. 測試結果

圖 8-2 集群負載測試-測試結果圖 8-2 集群負載測試-測試結果Pqv28資訊網(wǎng)——每日最新資訊28at.com

使用kosmos管理k8s集群聯(lián)邦,在 100,000 節(jié)點和 200,000 pod場景下,達到官方SLOs標準,并且該規(guī)模并未達到kosmos上限。Pqv28資訊網(wǎng)——每日最新資訊28at.com

(二)網(wǎng)絡性能測試

  1. 測試工具
    iperf3
  2. 評估標準
    我們使用RTT(Round-Trip Time)時延來評估性能優(yōu)劣。RTT即:往返時延,表示發(fā)送端從發(fā)送數(shù)據(jù)開始,到發(fā)送端收到來自接收端的確認(接收端收到數(shù)據(jù)后即發(fā)送確認),總共經(jīng)歷的時延。
  3. 測試方法
    比對單集群網(wǎng)絡和跨集群網(wǎng)絡的RTT時延,如下圖所示1、2部分:

圖 8-3 網(wǎng)絡性能測試-測試方法圖 8-3 網(wǎng)絡性能測試-測試方法Pqv28資訊網(wǎng)——每日最新資訊28at.com

  1. 測試結果
    跨集群相對于單集群,RTT時延增加6%左右。

圖片圖片Pqv28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-71458-0.htmlRocketMQ基于Kosmos實現(xiàn)AZ級高可用,你學會了嗎?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: FPGA設計中的挑戰(zhàn)和可靠解決方案

下一篇: 我們聊聊單核可以實現(xiàn)多線程嗎?

標簽:
  • 熱門焦點
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協(xié)調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現(xiàn)手段有以下幾種方式:Object 類下
  • 掘力計劃第 20 期:Flutter 混合開發(fā)的混亂之治

    在掘力計劃系列活動第20場,《Flutter 開發(fā)實戰(zhàn)詳解》作者,掘金優(yōu)秀作者,Github GSY 系列目負責人戀貓的小郭分享了Flutter 混合開發(fā)的混亂之治。Flutter 基于自研的 Skia 引擎
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數(shù)據(jù)從主存儲加載到KV緩存中,加速后續(xù)的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • Java NIO內(nèi)存映射文件:提高文件讀寫效率的優(yōu)秀實踐!

    Java的NIO庫提供了內(nèi)存映射文件的支持,它可以將文件映射到內(nèi)存中,從而可以更快地讀取和寫入文件數(shù)據(jù)。本文將對Java內(nèi)存映射文件進行詳細的介紹和演示。內(nèi)存映射文件概述內(nèi)存
  • JVM優(yōu)化:實戰(zhàn)OutOfMemoryError異常

    一、Java堆溢出堆內(nèi)存中主要存放對象、數(shù)組等,只要不斷地創(chuàng)建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內(nèi)上線了“本地生活”入口,位置較深,位于首頁的“充值中心”內(nèi),目前主要售賣美食相關的
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元“人在職場,應該選擇什么樣的著裝?”近日,在網(wǎng)絡上,一個與著裝相關的帖子引發(fā)關注,在該帖子里,一位在高級寫字樓亞洲金
  • 信通院:小米、華為等11家應用商店基本完成APP簽名及驗簽工作

    中國信通院表示,目前,小米、華為、OPPO、vivo、360手機助手、百度手機助手、應用寶、豌豆莢和努比亞等9家應用商店,以及抖音和快手2家新型應用分發(fā)平
  • 世界人工智能大會國際日開幕式活動在世博展覽館開啟

    30日上午,世界人工智能大會國際日開幕式活動在世博展覽館開啟,聚集國際城市代表、重量級院士專家、國際創(chuàng)新企業(yè)代表,共同打造人工智能交流平臺。上海市副市
Top 主站蜘蛛池模板: 汝城县| 威宁| 永嘉县| 乌审旗| 扎兰屯市| 泸水县| 东乡族自治县| 乃东县| 慈利县| 恩施市| 阜宁县| 会宁县| 家居| 高平市| 错那县| 长丰县| 徐州市| 合山市| 和平区| 嘉鱼县| 阳城县| 博野县| 策勒县| 榆社县| 台山市| 启东市| 古交市| 上林县| 绥化市| 林口县| 藁城市| 湟源县| 陇川县| 晋宁县| 封丘县| 玛纳斯县| 定兴县| 洪雅县| 分宜县| 上林县| 都匀市|