混合云场景下的消息同步实践

艾客
  • 收获赞:90
  • 擅长领域:擅长领域:混合云、中间件技术

本文主要介绍在混合云线下输出的场景下,借助于现有的多机房网络并网和MQ的消息复制功能,实现跨云、跨region的消息同步,从而帮助有此需求的客户可以轻量化、安全、经济的实现消息实时同步,甚至借助同步功能实现多活。

目标读者

希望通过极简的配置与无代码侵入的方式,实现秒级消息延时实现跨云、跨region消息传输,以满足消息多中心同步或者灾备需求。

适用场景

场景1: 跨云消息同步

需要把消息实时从一朵云同步到另外一朵云的场景。比如某邮政系统存在内网云和外网云两朵独立的云,两朵云的账号、资源和数据均不存在共享,但是有些业务数据需要从外网云实时传输到内网云供数据审核,在此场景下就可以将某些特征的数据打上标签并配置跨云同步任务实现实时传输。

image.png

场景2: 跨region消息同步

需要把消息从一个region同步到另一个region的场景。比如某电网公司的一朵云存在多个不同区域的region,各个region都存在实例存储消息,需要跨region把北京region的业务数据同步到杭州region进行异地同步,在此场景下就可以将数据通过跨云配置进行消息多region的同步。

image.png

场景3: 多活场景

对于用户的核心系统,提供多个节点或者地区的服务对业务的高可用至关重要。采用消息同步保证即使当前业务节点异常,也可以提供连续的服务。比如某银行系统存在灾备中心,在核心机房异常的情况下,多活的备节点也能对外提供服务。

image.png

相关概念

  • 云内Inner-DNS:平台测域名解析系统。

  • AZ:云内可用区。

  • MQ:消息队列RocketMQ版。是阿里云基于开源Apache RocketMQ构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。

  • ASCM:混合云Apsara Uni-manager运营平台。通过一体化的管控入口,提供精细化资源治理、智能化数据分析和个性化功能扩展等能力,降低企业的云管理成本。

  • ASO:混合云Apsara Uni-manager运维控制台,通过自动化的运维流程,提供主动式监控告警、根源问题定位和故障自动修复等能力,降低云环境的运维成本,保障云环境安全稳定运行。

  • Tianji:分布式数据中心管理系统,能够管理包含多台机器的集群上的应用,并提供部署、升级、扩缩容、变更配置等基础功能。

  • RAM:权限访问控制系统。

方案架构

方案架构图

image.png

流程说明

image.png

方案优势

  • 成本低廉。

  • 安全可靠。

  • 易用性强。

  • 实时传输,性能高。

方案实施

前提条件

  1. 购买线下专有云服务,且版本至少为企业版V3.16及以上版本。

  2. 两朵云均部署MQ组建,且服务部署到终态。

  3. 两朵云均部署ASCM即专有云输出云管控制台,部署到终态。

  4. 两朵云均开通组织账号并具备登录权限,获取组织账号的UID、名称和RAM鉴权AKSK。

image.png

操作步骤

步骤一:获取两朵云的基础信息

  1. 获取对端环境opsdns地址。

在对端环境ops1上查看cat /etc/resolv.conf

image.png
  1. 获取MQ服务的两朵云的服务VIP

登录运维控制台天基,顶部菜单栏单击运维;左侧菜单选择Project运维搜索mq,选择BasicCluster集群进入dashboard页面;下拉页面进入集群资源,过滤Type为vip,查看mq-console和mq-cai对应的Result中vip_ip字段即为vip地址。

image.pngimage.png
  1. 获取MQ服务的两朵云的服务DNS

登录运维控制台天基,顶部菜单栏单击运维;左侧菜单选择Project运维搜索mq,选择BasicCluster集群进入dashboard页面;下拉页面进入集群资源,筛选Type字段dns,查看mq_console。

image.pngimage.png
  1. 获取MQ实例的基本信息

    1. 154E登录ASCM控制台,顶部菜单栏选择产品,弹出层选择中间件-MQ进入MQ控制台。

    2. 左侧菜单栏选择实例详情,点击创建MQ实例。创建结束,通过实例详情-网络管理,获取实例的TCP内网接入点。

image.png

iii. 左侧菜单选择Topic管理,点击创建Topic,创建普通消息、顺序消息、定时消息、事物消息四种消息类型的Topic。

image.png

iv. 左侧菜单选择Group 管理,点击创建Group ID,创建GID。

v. 同理登录224E的ASCM控制台,创建instance实例、Topic和GID。

步骤二:两朵云实现并网

  1. 经典网络打通

    • 确保两朵云/机房之间有物理链路可以连通,若无则需要进行施工连线。

    • 分别在两朵云的出口网络设备(如交换机、路由器、防火墙)上配置路由或规则放通对端机房的MQ地址访问。

  2. 配置opsdns转发

    1. 进入Tianji控制台,选择tianji集群,获取对端环境的zone信息。进入对端环境某集群中的kv.conf配置文件里面,获取"intranet-domain"、"internet-domain"的值,即为zone。

image.png

ii. 将上述信息添加至本端环境的tianji集群配置文件“services/ops/user/dns_zone.conf.jj2”中。

image.png

iii. 提交修改后登录本端环境ops1和ops2的dnsslave容器中分别执行: python/root/opsbuild/deploy.py

iv. 在另一朵云中的配置类似。

  1. 网络检查

    1. 登录154E环境的云内物理服务器如OPS1,执行curl 224E端的mq endpoint,确认网络可达且域名可解析。

image.png

ii. 同理,登录224E环境的云内物理服务器,执行curl 154E端的mq endpoint,确认网络可达且域名可解析。

image.png

步骤三:配置两朵云的基础信息

  1. 配置两朵云的云信息

    • 云名称:填入方便理解的字符串即可。

    • 云ID:后台系统自动生成一朵云的唯一ID。

    • AccessKey:账号的唯一登录AK。

    • SecretKey:账号的唯一密钥SK。

    • 地域:当前环境的region信息。

    • MQ实例endpoint:MQ初始化的云接入点信息,可以从天基注册变量获取。

    • MQ API:MQ初始化的API域名,可以从天基注册变量获取。

image.png
  1. 配置结束,两朵云的信息注册成功。

image.png

步骤四:配置消息同步任务

  1. 从消息的接收端配置同步任务,从消息同步云224配置,设置消息同步云154-> 消息同步云224的同步消息,并开启同步任务保证任务状态为同步中

image.png

  1. 配置普通消息的过滤规则,所有标记有tagA的普通消息才允许从消息同步云154到消息同步云224的同步。

image.png
  1. 同步骤1和2,配置其它三种类型顺序消息、定时消息、事物消息的消息同步任务。

方案验证

开启消息流量

  1. 模拟154E发生消息端业务系统。

    1. 拷贝程序perftools.tar.gz到154E业务系统环境,执行程序包解压缩。

    2. 进入perftools/bin目录,执行sh run_ons_producer1.sh [topic] [GID] [instance_endpoint] [ak] [sk] 1 100 128 600。此处各个参数均为154E的MQ的信息。1为消息发送。

image.png

iii. 同理,开启顺序消息、定时消息、事物消息的流量。

  1. 模拟224E接收端业务流量

    1. 同步骤1,模拟程序部署到224E环境。

    2. 进入perftools/bin目录,执行sh run_ons_producer1.sh [topic] [GID] [instance_endpoint] [ak] [sk] 0 100 128 600。此处各个参数均为224E的MQ的信息。0为消息接收监听。

任务验证和流量观察

  1. MQ控制台普通消息的同步任务,观察流量数据。

image.png

  1. MQ控制台顺序消息的同步任务,观察流量数据。

image.png

  1. MQ控制台定时/延时消息的同步任务,观察流量数据。

image.png
  1. MQ控制台事物消息的同步任务,观察流量数据。

image.png

常见问题

  1. 接收端无法消费到消息。

    • 检查两边并网和DNS配置,检查确认网络正常。

    • 检查MQ的实例信息,确认业务生产和消费的接入点、Topic、GID、AKSK信息正确。可以借助MQ资源报表和同步任务流量排查。

  2. MQ资源报表和同步任务图标无数据。

登录ASO控制台,选择产品运维,进入TLog控制台。查看分组为metaq的采集任务,确认采集任务正常。