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治理中心控制台。
删除微服务治理相关资源。
在左侧导航栏,选择治理中心 > 全链路灰度。
选择您所创建的泳道组,下滑鼠标至底部。
在分流泳道区域,单击操作列下的删除。
在删除提示对话框中,单击确定。
上滑鼠标至顶部,单击创建泳道组旁边的配置图标。
在泳道组列表处,单击您所需删除泳道组旁的图标
在删除提示对话框中,单击确定。
删除云原生网关相关资源。
在左侧导航栏,选择云原生网关 > 网关列表,并在顶部菜单栏选择地域。
在网关列表页面,单击目标网关实例名称,进入实例详情。
下线云原生网关路由规则,再将其删除。
在左侧导航栏,单击路由管理 > 路由。
在当前页面,单击操作列下方的,然后单击下线,在下线对话框中单击确定。
单击已下线路由对应操作列下方的,然后单击删除,在删除对话框中单击确定。
删除云原生网关的服务。
在左侧导航栏,单击路由管理 > 服务。
在当前页面,单击需要删除的服务对应操作列下方的,然后单击删除,在删除对话框中单击确定。
删除云原生网关的服务来源。
在左侧导航栏,单击路由管理 > 来源。
在当前页面,单击需要删除的服务来源对应操作列下的删除。
在删除对话框中单击确定。
删除云原生网关的域名。
在左侧导航栏,单击路由管理 > 域名。
在当前页面,单击需要删除的域名对应操作列下的删除。
在删除对话框中单击确定。
删除注册配置中心相关资源。
在左侧导航栏,选择注册配置中心 > 实例列表,并在顶部菜单栏选择地域。
在实例列表页面,单击目标实例名称。
在左侧导航栏,选择配置管理 > 配置列表。
在配置列表页面,单击目标配置的操作列下的删除。
在删除配置对话框,单击确定。
删除应用
登录容器服务管理控制台。
在集群列表页面,单击目标集群名称。
在左侧导航栏,选择工作负载 > 无状态。
在工作负载列表,批量勾选部署的应用,单击批量删除。
在确认对话框,单击确定。
释放实例(可选):请参见注册配置中心退款说明和云原生网关退款说明。