MSE產品包含以下模塊:微服務注冊配置中心、微服務治理、云原生網關。您在構建自己的微服務體系時,既可單獨使用某個模塊,也可搭配使用以便獲得微服務生態的最佳實踐。本文介紹如何搭配使用MSE三個模塊。
概覽
簡介
本教程覆蓋微服務引擎MSE的核心能力,幫助您快速上手并理解MSE產品,預計體驗時長20分鐘。主要分為如下四個步驟,建議您按照順序進行體驗:
在容器(ACK或ACK Serverless集群)部署示例的微服務應用,并將服務注冊到Nacos。
通過注冊配置中心實現統一配置管理。
利用云原生網關將服務暴露到公網。
通過服務治理實現全鏈路灰度發布。
適用對象
本教程適用于Spring Cloud&Dubbo等微服務框架的開發者、IT基礎架構師、管理員和DevOps人員等計劃在阿里云上實現或擴展云原生架構的相關人員。
整體架構
注冊配置中心:支持注冊和配置中心全托管(兼容Nacos/ZooKeeper/Eureka),可實現對服務節點和配置信息的維護和統一管理,具備豐富完善的監控報警、控制臺運維操作和引擎類型。相比開源組件,具有更高性能、SLA保障和配置能力。
云原生網關:提供安全高效的符合K8s Ingress標準的下一代網關,將Ingress流量網關、微服務、安全網關三合一。
微服務治理:無侵入增強主流Spring Cloud、Apache Dubbo等開源微服務框架,提供豐富的服務治理和流量防護功能,將中間件與業務解耦。可實現熔斷限流降級、無損上下線、全鏈路灰度等多種治理能力,提升開發效率和線上穩定性。
注意事項
為了簡化操作步驟,本教程約束了一些產品能力,并提供了配置建議。該限制條件和建議僅針對本教程,關于MSE的更多功能,請參見功能特性。
注意項 | 約束和建議內容 | 備注 |
部署集群 | 僅支持ACK集群/ACK Serverless集群,不支持ECS部署。 說明 容器集群運行Demo的最低要求:
| 容器服務提供了ACK Serverless集群的一個月免費試用,您可以點擊領取。 |
注冊配置中心 | 僅支持MSE Nacos引擎類型,并且為必選項,不限版本和付費方式。 說明 最低配置要求:
| MSE提供了注冊配置中心的一個月免費試用,您可以點擊領取。 |
云原生網關 | 建議您使用1.2.13及以上版本。 說明 最低配置要求:
| MSE提供了云原生網關的一個月免費試用權限,您可以點擊領取。 |
微服務治理 | 僅體驗全鏈路灰度能力,更多能力請參考功能特性。 說明 最低版本需要為專業版。 | MSE提供了微服務治理的一個月免費試用,您可以點擊領取。 |
VPC | 要求部署集群、注冊配置中心實例、云原生網關實例處于同一個VPC下。 | 需要實現網絡打通。 |
交換機 | 若您選擇自動部署應用,需要您指定的地域和可用區下存在交換機。 | 手動部署應用無需關注此限制項。 |
Demo應用 | 提供2個Demo應用:consumer和provider,包括基線版本和灰度版本。 | 您可前往GitHub查看Demo應用。 |
步驟一:部署微服務應用
待部署的微服務應用基于Spring Cloud和Dubbo同時實現,其中consumer調用provider,您可前往GitHub查看,基于您實際的開發框架進行對比。
您無需下載此源碼,Demo已被生成鏡像并上傳至公共鏡像庫。
視頻教程
部署微服務應用
登錄MSE控制臺快速入門。
在部署微服務應用區域進行相關配置。
ACK/ACK Serverless集群:單擊ACK/ACK Serverless集群下拉框列表,若您無集群,您可以單擊去創建。關于如何創建集群,請參見創建Kubernetes托管版集群。
說明集群類型需為ACK/ACK Serverless集群,帶寬峰值無限制。
地域和專有網絡需與Nacos實例地域和專有網絡一致。
MSE Nacos注冊配置中心:單擊MSE Nacos注冊配置中心下拉框列表。若您無注冊配置中心實例,您可以單擊去創建。關于如何創建Nacos,請參見創建Nacos引擎。
說明引擎類型需為Nacos類型。
網絡類型為專有網絡,注意此專有網絡需與部署集群專有網絡一致。
其他配置項如產品版本、引擎規格、集群節點數無限制。
部署應用:單擊部署應用右側的去部署按鈕。
自動部署支持的地域以及可用區:
所在地域
Region ID
可用區
亞太-中國
華東1(杭州)
cn-hangzhou
k,j,i
華東2(上海)
cn-shanghai
b,g
華北1(青島)
cn-qingdao
b,c
華北2(北京)
cn-beijing
g,h
華北3(張家口)
cn-zhangjiakou
a,b,c
華北5(呼和浩特)
cn-huhehaote
a,b
華北6(烏蘭察布)
cn-wulanchabu
a,b
華南1(深圳)
cn-shenzhen
e,d
華南3(廣州)
cn-guangzhou
a,b
西南1(成都)
cn-chengdu
a,b
亞太-其他
新加坡
ap-southeast-1
b
歐洲與美洲
德國(法蘭克福)
eu-central-1
a,b
若選擇自動部署,單擊確認完成部署。
說明若自動部署按鈕置灰,則表示您的地域和可用區尚未支持自動部署。
自動部署需要您提供指定可用區下的交換機且同意使用私網連接服務,我們會為您創建一些臨時資源,您無需付費。
若選擇手動部署,按照控制臺提示完成操作。完成所有操作后,單擊我已完成部署。
復制Demo中的YAML文件,再粘貼至創建頁面。單擊復制YAML到剪貼板。
進入集群工作負載-無狀態應用頁面,單擊使用YAML創建資源。
將環境變量中所有的nacos-server字段替換成您MSE Nacos的內網地址。
說明YAML文件中一共有5處nacos-server字段需要替換。
單擊創建,完成部署應用。
檢查部署狀態。
若狀態顯示部署成功,單擊下一步。
若狀態顯示部署中,請耐心等待。
若狀態顯示部署失敗,表示在3分鐘時間內未查詢到對應服務,請參見Pod異常問題排查。
操作結果
狀態部署成功,表明您已在ACK/ACK Serverless集群上成功部署2個Demo應用,并將其服務注冊到注冊配置中心。
步驟二:微服務查詢與配置
體驗Nacos服務查詢:provider首先會去注冊配置中心注冊實例信息,consumer查詢注冊中心發現服務,得到服務實例列表,最后選擇其中某個實例發起服務調用。
體驗Nacos配置管理:SpringCloud配置動態刷新基于事件監聽機制,當前consumer代碼中添加了監聽配置的功能,consumer會不斷監聽DataID為consumer.properties的配置文件,并不斷將配置內容中name的值打印到日志中。
視頻教程
微服務查詢與配置
進入微服務查詢與配置區域。
查詢服務:
單擊查詢服務右側的服務管理-服務列表鏈接。
在新跳轉的服務列表頁面,可以查詢到如下4個服務:
兩個SpringCloud服務:consumer和provider
兩個Dubbo服務:providers:com.alibabacloud.mse.demo.service.HelloServiceB:1.0.0:和consumers:com.alibabacloud.mse.demo.service.HelloServiceB:1.0.0:
發布配置:
單擊配置管理-配置列表-創建配置鏈接,在創建配置面板進行配置。
輸入Data ID為consumer.properties,Group為DEFAULT_GROUP。
選擇配置格式為Properties。
輸入配置內容為name=demo。
說明name的值可以自由設置,例如 name=helloworld。
consumer會不斷監聽該配置并打印name的值到日志中。
單擊發布。
監聽查詢:
單擊監聽查詢右側的配置管理-監聽查詢鏈接。
在新跳轉的監聽查詢頁面,輸入DataID、Group值,然后單擊查詢。
查詢結果會顯示IP以及推送狀態。
說明若推送狀態為推送成功,表示該配置已經生效。
若查詢為空,請多次點擊查詢按鈕或刷新頁面后重試。
操作結果
至此,您已在Nacos實例上查詢到注冊成功的服務,發布了一份配置和查詢配置推送情況。
步驟三:對外暴露服務
MSE云原生網關是安全高效符合K8s Ingress標準的下一代網關,將Ingress流量網關、微服務網關、安全網關三合一。本步驟將引導您通過云原生網關將服務暴露到公網,并進行路由調試。網關收到一條請求后將做如下處理:
云原生網關通過匹配路由自動識別服務名。
向注冊配置中心查詢后端服務實例節點。
注冊配置中心返回實例節點后,云原生網關調用后端服務。
后端服務將結果返回給云原生網關,云原生網關再返回給客戶。
視頻教程
對外暴露服務
在3.1 基礎配置區域,進行基礎配置。
選擇網關:單擊下拉框列表選擇網關。 若無云原生網關實例,單擊去創建。關于如何創建云原生網關,請參見創建MSE云原生網關。
說明網絡類型為專有網絡,注意此專有網絡需與部署集群專有網絡一致。
其他配置項如引擎規格、集群節點數、交換機、公網帶寬、集群監控無限制。
服務來源:單擊服務來源右側的服務管理-來源管理-創建來源鏈接。
在新打開的來源管理面板,選擇來源類型為MSE Nacos。
集群名稱選擇步驟一:部署微服務應用選擇的Nacos集群。注冊類型和注冊地址將會自動填充,無需修改。
單擊確定,完成創建。
添加服務:單擊添加服務右側的服務管理-服務列表-創建服務鏈接。
在新打開的創建服務面板,選擇服務來源為MSE Nacos。
選擇命名空間為public。
在服務列表區域,將左側consumer服務添加到右側。
說明只需將consumer添加進網關即可,consumer再自發調用provider。
若添加服務查詢不到請稍等1分鐘后重試。
單擊確定,完成創建。
關聯域名:單擊關聯域名右側的域名管理-創建域名鏈接。
在關聯域名面板,輸入域名為example.com,選擇協議類型為HTTP協議。
說明該域名僅作為測試流量的訪問入口,并未配置DNS解析。
在實際生產中,您需要自行配置域名和網關SLB之間的DNS映射。
單擊確定,完成創建。
在3.2 路由配置區域,進行路由配置。
創建路由:單擊創建路由右側的路由管理-路由配置-創建路由鏈接。
在創建路由面板,進行請求信息配置,然后單擊下一步。
配置項
配置內容
說明
路由名稱
輸入路由名稱。
推薦結合業務場景命名,例如user-default、user-gray等。
關聯域名
選擇上一步創建的域名example.com。
表示流量來源于http://example.com。
匹配規則
設置匹配條件為精確匹配,路徑為/a。
精確匹配即完全匹配,因為consumer代碼中添加了路徑/a,故此處選擇精準匹配/a即可。
方法
無需輸入。
該字段用于設置匹配HTTP請求中的Method參數,不填表示匹配所有參數。
請求頭
無需輸入。
該字段用于設置匹配HTTP請求中的Header參數,本練習中無需填寫。
請求參數
無需輸入。
該字段用于設置匹配HTTP請求中的Query參數,本練習中無需填寫。
在下一步面板,進行目標服務配置。
配置項
配置內容
說明
目標服務
選擇單服務。
單服務表示將請求轉發到后端某個具體的服務。
服務
下拉選擇consumer。
該步驟關聯后端服務為consumer。
端口
自動填充,無需更新。
網關可自動獲取服務的端口。
協議
自動填充,無需更新。
網關可自動獲取服務的協議。
設置fallback服務
無需勾選。
若勾選則表示當路由選中的目標服務沒有可用節點時,原請求會訪問設置的fallback服務。
單擊保存并上線,完成創建。
路由調試:單擊路由調試右側的路由管理-路由調試鏈接。
在新跳轉的路由調試頁面,選擇example.com,輸入路徑/a,單擊發送。
在頁面右側Body區域顯示A->B,表明路由調試成功。
說明本操作模擬來自http://example.com/a的GET請求。
操作結果
至此,您已完成將來源自Nacos的服務添加進云原生網關,并進行路由配置和路由調試,結果顯示網關可將來自外部的請求路由至consumer服務。
步驟四:體驗全鏈路灰度
練習通過微服務治理實現全鏈路灰度。在微服務場景中,應用間的調用是隨機的,當您部署灰度版本的應用時,可能會出現流量亂竄的情況(如左圖)。全鏈路流量控制功能將應用的相關版本隔離成一個獨立的運行環境(即分流泳道如右圖),通過設置泳道規則,將滿足規則(如name=gray)的請求流量路由到目標版本應用。
視頻教程
體驗全鏈路灰度
在4.1 基礎配置區域,進行基礎配置。
開通服務治理:單擊開通服務治理右側的去開通鏈接。
ACK應用接入:單擊ACK應用接入右側的ACK應用接入鏈接。在新跳轉的應用治理頁面,單擊ACK應用接入。
說明如果您尚未授權容器服務調用微服務引擎,請先完成授權后再進行ACK應用接入。
具體接入流程請按照彈窗中的操作引導完成,請參見ACK微服務應用接入MSE治理中心。
請注意需手動重啟已部署的應用,重啟后可在應用治理查詢到consumer和provider。
重新部署:單擊右側的重新部署鏈接。
編輯路由:單擊編輯路由右側的路由管理-路由配置-編輯鏈接。
在路由配置頁面,選擇在Step 3.2 路由配置區域中創建的路由規則,單擊操作列下方的編輯。
在編輯路由面板,點擊下一步,切換目標服務為標簽路由。
服務選擇consumer并且選擇版本為base,然后單擊保存并上線。
說明在版本被打標為gray的灰度應用部署后,所有/a的請求將直接流向base版本的應用,而非gray版本的應用。
實際生產中,您部署灰度應用之前,也需要檢查您的基線路由規則是否已設置為標簽路由,避免部署后流量直接流入灰度應用。
部署灰度應用:單擊部署灰度應用右側的去部署鏈接。具體操作可參見第一步:部署微服務應用。
說明在灰度應用的YAML中,
alicloud.service.tag: gray
表示將該應用打標為gray;msePilotCreateAppName: consumer
表示將灰度應用接入服務治理的應用名稱為consumer;msePilotAutoEnable: 'on'
表示將應用接入服務治理。
在4.2 全鏈路灰度區域,進行全鏈路灰度配置。
創建泳道組:單擊創建泳道組鏈接。
在新跳轉的全鏈路灰度頁面,單擊創建泳道組及泳道。
在創建泳道組面板,自定義泳道組名稱,選擇入口類型為MSE 云原生網關。
選擇泳道組流量入口為步驟三:對外暴露服務中的云原生網關實例。
選擇泳道組涉及應用為provider和consumer,然后單擊確定。
創建分流泳道:單擊創建分流泳道鏈接。
在全鏈路灰度頁面,選擇上一步創建好的泳道組,下滑至底部。
單擊創建第一個分流泳道,在創建泳道彈窗中,進行創建泳道配置。
配置項
配置內容
說明
添加應用
選擇泳道標簽為gray。
該字段來源于灰度應用的alicloud.service.tag的值。
路由規則
將左側類型為標簽路由的路由規則移動到右側。
此處僅展示并可選擇類型為標簽路由的路由規則。
條件列表
點擊添加新的條件規則,參數類型選擇Header,參數填寫name,條件選擇精確匹配,內容填寫gray。
表示當請求Header中name的值等于gray時,流量走向灰度應用。
路由調試:單擊路由管理-路由調試鏈接。
在新跳轉的路由調試頁面,選擇example.com,輸入路徑/a。
單擊Header頁簽,然后單擊添加參數。
輸入Key為name,Value為gray,單擊發送。
說明本操作模擬來自http://example.com/a ,Header中name值為gray的GET請求。
若路徑為Agray->Bgray表示全鏈路灰度生效,觀察到流量僅路由至灰度應用。
操作結果
至此,您已完成MSE入門全部操作,您可單擊完成快速入門按鈕,并為我們的產品進行評價,感謝您的支持!
步驟五:清理資源
建議您每次完成快速入門后均手動清理資源。請按照操作步驟清理資源,若更改清理順序可能導致資源刪除失敗。只有完成前4步的清理操作之后,方可點擊重新體驗。
登錄MSE治理中心控制臺。
刪除微服務治理相關資源。
在左側導航欄,選擇治理中心 > 全鏈路灰度。
選擇您所創建的泳道組,下滑鼠標至底部。
在分流泳道區域,單擊操作列下的刪除。
在刪除提示對話框中,單擊確定。
上滑鼠標至頂部,單擊創建泳道組旁邊的配置圖標。
在泳道組列表處,單擊您所需刪除泳道組旁的圖標
在刪除提示對話框中,單擊確定。
刪除云原生網關相關資源。
在左側導航欄,選擇云原生網關 > 網關列表,并在頂部菜單欄選擇地域。
在網關列表頁面,單擊目標網關實例名稱,進入實例詳情。
下線云原生網關路由規則,再將其刪除。
在左側導航欄,單擊路由管理 > 路由。
在當前頁面,單擊操作列下方的,然后單擊下線,在下線對話框中單擊確定。
單擊已下線路由對應操作列下方的,然后單擊刪除,在刪除對話框中單擊確定。
刪除云原生網關的服務。
在左側導航欄,單擊路由管理 > 服務。
在當前頁面,單擊需要刪除的服務對應操作列下方的,然后單擊刪除,在刪除對話框中單擊確定。
刪除云原生網關的服務來源。
在左側導航欄,單擊路由管理 > 來源。
在當前頁面,單擊需要刪除的服務來源對應操作列下的刪除。
在刪除對話框中單擊確定。
刪除云原生網關的域名。
在左側導航欄,單擊路由管理 > 域名。
在當前頁面,單擊需要刪除的域名對應操作列下的刪除。
在刪除對話框中單擊確定。
刪除注冊配置中心相關資源。
在左側導航欄,選擇注冊配置中心 > 實例列表,并在頂部菜單欄選擇地域。
在實例列表頁面,單擊目標實例名稱。
在左側導航欄,選擇配置管理 > 配置列表。
在配置列表頁面,單擊目標配置的操作列下的刪除。
在刪除配置對話框,單擊確定。
刪除應用
登錄容器服務管理控制臺。
在集群列表頁面,單擊目標集群名稱。
在左側導航欄,選擇工作負載 > 無狀態。
在工作負載列表,批量勾選部署的應用,單擊批量刪除。
在確認對話框,單擊確定。
釋放實例(可選):請參見注冊配置中心退款說明和云原生網關退款說明。