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

2024-03-20 18:28

本文主要是介绍云原生最佳实践系列2:基于 MSE 云原生网关同城多活,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方案概述

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

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

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

图片

应用场景

借助云原生微服务引擎 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 的性能压测?

这篇关于云原生最佳实践系列2:基于 MSE 云原生网关同城多活的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/830361

相关文章

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1