云原生最佳实践系列2:基于 MSE 云原生网关同城多活

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 通过使用阿里云的云原生微服务引擎 MSE,可以实现注册中心的同城容灾多活微服务应用。MSE 提供了云原生网关和注册中心,支持机房级故障的秒级自动转移、非对等部署下的全局流量负载均衡以及流量精细化管控。

方案概述


分布在同城多个机房内的应用同时对外提供服务。同城机房物理距离较小,一般小于 50 公里。同城多活架构的难点有三个:


  • 当某机房出现故障,能不能做到机房级的快速切换?
  • 如何实现非对等部署下的全局的流量负载均衡?
  • 对流量的精细化管控?


常见的同城多活实现方式(如下图),在这个架构里。DNS 本身存在缓存,DNS 的域名是映射到机房的网关 IP,网关又是每个机房一个局部的。很难做到机房级故障的秒级自动转移和非对等状态下的全局负载均衡。如果两个机房的微服务应用如果共用一套注册中心,就没办法保证微服务调用单元内闭环。


02


应用场景


借助云原生微服务引擎 MSE 产品,配置注册中心的同城容灾多活微服务应用。提供一个经典微服务场景在云上实现同城容灾的步骤,通过云原生相关产品在用户应用上云时解决高可用,同城容灾,多活等需求。主要步骤:


1. 通过 CADT 快速完成应用环境部署;

2. 同城双 MSE 注册中心接入;

3. MSE 网关接入。

方案适合场景和优势


  • MSE 云原生网关

云原生网关默认双可用区部署,既使一个可用区的节点都挂了,另一个可用区的节点依旧可以正常工作。

  • MSE 注册中心

MSE 注册中心默认三可用区部署,即使两个可用区的节点都挂了依然不会影响业务。

  • 机房级故障的秒级自动转移

云原生网关对于关联服务的每个节点都建立了主动健康检查的机制,默认是 2 秒(也可以自己调整)。主动健康检查发现节点不健康,则会自动剔除,健康检查除了 TCP 的端口探测外,也支持 HTTP 的探测,通过健康检查机制,可以实现机房级故障的秒级自动转移。

  • 非对等部署状态下的全局流量负载均衡

云原生网关会把两个集群的同名服务进行合并,然后在合并后的节点数量的基础上实现多种负载均衡策略,通过这种方式可以很好的实现两个机房在非对等部署状态下的负载均衡,例如:两个机房的同应用各部署了 5 个节点,这个时候云原生网关会把两个机房的同名服务的节点进行合并,变成 10 个。然后云原生网关在这 10 个中实现轮询等负载均衡策略,假设机房 1 的节点挂了 4 个,还剩一个。那这时分配给机房 1 的流量会自动的从 50% 降到 10%,分配给机房 2 的流量会自动的从 50% 提升到 90%。

  • 流量的精细化管控

每个集群一套注册中心,应用启动的时候只像本可用区的注册中心注册。这样可以保证微服务调用在可用区内闭环。微服务调用可用区闭环以后,可以配合云原生网关的多种流量路由能力实现蓝绿和灰度等发布策略。


部署架构



架构说明


2 个 MSE 注册配置中心, 2 个 ACK 集群,1 个高可用 MSE 云原生网关。


  • 每个可用区的微服务只注册到本 AZ 的 MSE 注册配置中心,实现闭环调用。
  • 两个 AZ 共享 1 个 NAT 网关,用于容器节点拉取镜像。


产品介绍


专有网络 VPC(Virtual Private Cloud):是用户基于阿里云创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如 ECS、负载均衡、RDS 等。


容器服务 Kubernetes 版 ACK:容器服务 Kubernetes 版(简称 ACK)提供高性能且可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。在 2021 年,ACK 成为国内唯一连续三年入选 Gartner 公共云容器报告的产品,同时在 2022 年成为国内唯一进入 Forrester 领导者象限的产品。ACK 整合了阿里云的虚拟化、存储、网络和安全能力,助力企业高效运行云端 Kubernetes 容器化应用。


微服务引擎 MSE:微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持 Higress/Nginx/Envoy,遵循 Ingress 标准)、微服务治理和分布式任务调度能力(兼容开源 XXL-JOB/ElasticJob/K8s Job/Spring Schedule)。


云速搭 CADT(Cloud Architect Design Tools):是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供丰富的预制应用架构模板,同时也支持自助拖拽方式定义应用云上架构;支持较多阿里云服务的配置和管理。用户可以方便的对云上架构方案的成本、部署、运维、回收进行全生命周期的管理。


NAT 网关:阿里云 NAT 网关(NAT Gateway,简称 NAT)提供公网 NAT 和私网 NAT 两种功能。公网 NAT 网关通过自定义 SNAT、DNAT 规则可为云上服务器提供对外公网服务、及主动访问公网能力;私网 NAT 网关(也即 VPC NAT 网关)可使 VPC 内的 ECS 实例通过私网地址转换服务,实现 VPC 与 VPC 之间、及 VPC 与线下 IDC 互访能力。


弹性公网 IP:弹性公网 IP 是独立的公网 IP 资源,可与阿里云专有网络 VPC 类型的云服务器 ECS、NAT 网关、ENI 网卡、私网负载均衡 SLB 绑定,并可以动态解绑满足灵活管理的要求。弹性公网 IP 可为您在云上部署的网站提供 Internet 访问服务。


前置条件


在进行本文操作之前,您需要完成以下准备工作:


1)注册阿里云账号,并完成实名认证。您可以登录阿里云控制台,并前往实名认证页面https://account.console.aliyun.com/v2/#/authc/home查看是否完成实名认证。


2)购买按量付费资源,阿里云账户余额需要大于 100 元。考虑到部署后每小时会产生费用,建议账号内余额或者代金卷金额大于 200 元。您可以登录阿里云控制台,前往账户总览页面https://usercenter2.aliyun.com/home查看账户余额。


操作步骤


1. 基础环境搭建

2. 在 ACK 集群中部署 Demo 应用

2.1. 打开部署好的应用2.2. 获取 J 和 K 区 MSE 注册中心地址

3. 配置 MSE 网关及路由

3.1. 配置 MSE 网关

4. 多活场景验证

4.1. 通过云原生网关进行路由调试4.2. 多活验证4.3. 切流验证4.4. PTS 压测验证(可选)5. 一键释放资源


最佳实践全部内容,请点击此处查看。对方案和产品感兴趣的朋友,可以加入钉钉群交流(群号:31852400)。


往期文章:云原生最佳实践系列 1:借助云速搭 CADT 如何实现 Kafka 的性能压测?

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
25天前
|
存储 Cloud Native Serverless
云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理
阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。
|
25天前
|
负载均衡 Cloud Native 安全
云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权
本文档介绍了如何在 MSE(Microservices Engine)云原生网关中集成JWT进行全局认证鉴权。
|
26天前
|
消息中间件 NoSQL Kafka
云原生最佳实践系列 5:基于函数计算 FC 实现阿里云 Kafka 消息内容控制 MongoDB DML 操作
该方案描述了一个大数据ETL流程,其中阿里云Kafka消息根据内容触发函数计算(FC)函数,执行针对MongoDB的增、删、改操作。
|
1月前
|
消息中间件 Cloud Native 网络安全
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
该文档介绍了基于云原生应用的产品构建的微服务架构实践。
|
18天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
32 0
|
3月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
34 0
|
3月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
49 1
|
8天前
|
负载均衡 应用服务中间件 nginx
Nginx 负载均衡
Nginx 负载均衡
22 2
|
2月前
|
负载均衡 Java 应用服务中间件
|
2月前
|
负载均衡 监控 应用服务中间件
Nginx负载均衡:你的网站流量翻倍利器
Nginx负载均衡:你的网站流量翻倍利器
43 0

相关产品

  • 微服务引擎