问题描述

关于Event Hub(事件中心)的灾备方案,大多数就是新建另外一个备用的Event Hub,当主Event Hub出现不可用的情况时,就需要切换到备Event Hub上。 而在切换的过程中,难点在于如何让客户端应用无感知的切换到备份Event Hub,以前的方案有两种:

1:在自己DNS服务器中,配置DNS别名。然后在应用代码中,需要先根据DNS别名查询到正确的Event Hub域名。实现方式:https://docs.azure.cn/zh-cn/event-hubs/event-hubs-federation-patterns#dns-based-failover-configuration

2:在应用的配置文件中,修改Event Hub的链接字符串。

第一种方式需要自己配置DNS服务,并且在应用程序代码中需要加入根据DNS别名查找Event Hub域名的操作,操作复杂。 第二种方式,需要在修改应用配置文件,导致应用需要重启,或者是修改很多配置文件。

现在,Event Hub主动推出了异地灾难恢复( Geo-Disaster Recovery)功能,它旨在让用户能够更轻松地从如此大规模的灾难中恢复,且无需更改应用程序配置。关键内容见下图红色区域。

所以,本文主要的操作就是根据此文档,启用Geo-Disaster Recovery功能。并通过手动执行Failover来验证 主备 Event Hub能顺利的接收消息。

验证步骤

第一步: 根据文档,启用Geo-Disaster Recovery 功能

这一步的操作步骤, 执行简单,根据页面指引,一步一步完成即可。官网步骤:https://docs.azure.cn/zh-cn/event-hubs/event-hubs-geo-dr?tabs=portal#setup

  1. 如下图,进入Geo-Recovery页面,点击 Initiate Pairing
  2. 在右侧出现的配置页面中,选择与当前Event Hub不同的区域,如 China North 3
  3. 然后选择新建一个Event Hub Namespace, 如 lbdiagnostictest02
  4. 最后,设置别名。这一步非常重要,因为当应用在使用Event Hub服务的连接字符串时,不在是使用服务原本的名称,而是此处设置的别名。 如 lbeventhubertest

创建成功后,页面下显示内容为:

第二步:在主Event Hub中添加新的消费组,同步查看次Event Hub中,验证是否已经同步配置信息。同时反向验证,先修改次Event Hub,查看主Event Hub是否同步信息

首先,在本实验中,主Event Hub为 lbdiagnostictest01, 次Event Hub为 lbdiagnostictest02,对比两个Event Hub元数据。

然后,在 主Event Hub 中添加一个 testdr 消费组,检查 次Event Hub 中是否自动添加。【答案是会自动添加】

最后,在 次Event Hub 中添加一个 testdr2 消费组,再次检查 主Event Hub 中是否自动田间。【答案是不会自动添加】

第三步:使用 Azure Service Bus Explorer 和Event Hub 的Alias Primary Connection String 的连接字符串,开始发送万条数据

Azure Service Bus Explorer 工具的下载地址:https://github.com/paolosalvatori/ServiceBusExplorer/releases/download/5.0.7/ServiceBusExplorer-5.0.7.zip

演示动画:

第四步:在Event Hub Geo-Disaster Recover页面,执行Failover操作

在执行前,可以通过在线Dig工具,查看当前的Alias域名(lbeventhubertest.servicebus.chinacloudapi.cn)解析出来的Host指向的为 lbdiagnostictest01

开始执行Failover操作 (只需要在 Event Hub的页面中通过 点击Failover 案例即可)

在执行完成Failover操作后,再次通过Dig工具,查看Alias域名(lbeventhubertest.servicebus.chinacloudapi.cn)解析出来的Host为:lbdiagnostictest02

第五步:验证发送的消息是否从主的EventHub 转移发送到次的Event Hub, 此处,通过 Azure Event Hub页面上的Metrics图表进行判断

分别在主/从 Event Hub页面中进入Metrics页面,查看Incoming Message的曲线

特别注意:按照设计,事件中心异地灾难恢复不会复制数据,因此,无法在辅助事件中心重复使用主事件中心的旧偏移值。建议通过以下方法之一重启事件接收器:

  • EventPosition.FromStart() - 如果想要读取辅助事件中心上的所有数据。
  • EventPosition.FromStart - 如果想要读取自连接到辅助事件中心开始算起的所有新数据。
  • EventPosition.FromEnqueuedTime(dateTime) - 如果想要读取自给定的日期和时间开始算起辅助事件中心收到的所有数据。

[END]

参考文档

ServiceBusExplorer https://github.com/paolosalvatori/ServiceBusExplorer/releases

Azure 事件中心 - 异地灾难恢复: https://docs.azure.cn/zh-cn/event-hubs/event-hubs-geo-dr?tabs=portal

Azure 事件中心故障转移: https://docs.azure.cn/zh-cn/event-hubs/event-hubs-federation-patterns#failover

 
 

【Azure 事件中心】Azure Event Hub 新功能尝试 -- 异地灾难恢复 (Geo-Disaster Recovery)的更多相关文章

  1. 【Azure 事件中心】Event Hub 无法连接,出现 Did not observe any item or terminal signal within 60000ms in 'flatMapMany' 的错误消息

    问题描述 使用Java SDK连接Azure Event Hub,一直出现 java.util.concurrent.TimeoutException 异常, 消息为:java.util.concur ...

  2. 【事件中心 Azure Event Hub】在Linux环境中(Ubuntu)安装Logstash的简易步骤及配置连接到Event Hub

    在文章([事件中心 Azure Event Hub]使用Logstash消费EventHub中的event时遇见的几种异常(TimeoutException, ReceiverDisconnected ...

  3. 【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position

    问题描述 当使用SDK连接到Azure Event Hub时,最常规的方式为使用连接字符串.这种做法参考官网文档就可成功完成代码:https://docs.azure.cn/zh-cn/event-h ...

  4. 【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存

    问题描述 在使用Azure Event Hub的SDK时候,常规情况下,发现示例代码中并没有SDK内部的日志输出.因为在Java项目中,没有添加 SLF4J 依赖,已致于在启动时候有如下提示: SLF ...

  5. 【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)

    问题描述 事件中心提供 Kafka 终结点,现有的基于 Kafka 的应用程序可将该终结点用作运行你自己的 Kafka 群集的替代方案. 事件中心可与许多现有 Kafka 应用程序配合使用.在Azur ...

  6. 【Azure 事件中心】EPH (EventProcessorHost) 消费端观察到多次Shutdown,LeaseLost的error信息,这是什么情况呢?

    问题详情 使用EPH获取Event Hub数据时,多次出现连接shutdown和LeaseLost的error  ,截取某一次的error log如: Time:2021-03-10 08:43:48 ...

  7. 【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心

    问题描述 在Application Gateway中,开启WAF(Web application firewall)后,现在需要把访问的日志输出到第三方分析代码中进行分析,如何来获取WAF的诊断日志呢 ...

  8. 【事件中心 Azure Event Hub】使用Logstash消费EventHub中的event时遇见的几种异常(TimeoutException, ReceiverDisconnectedException)

    问题描述 使用EFK(Elasticsearch, Fluentd and Kibana)在收集日志的解决方案中, 可以先把日志发送到EventHub中,然后通过Logstash消费EventHub中 ...

  9. 【事件中心 Azure Event Hub】Event Hub日志种发现的错误信息解读

    问题描述 使用Event Hub消费事件时,出现的各种客户端错误的解读.(再后期遇见新的错误信息,会持续添加进此说明) 一:再Linux中运行Event Hub消费端程序,出现Too many ope ...

随机推荐

  1. CentOS 7 执行 yum 命令失败问题的排查方法

    一个执着于技术的公众号 简介 本文主要为大家讲解 CentOS 7系统中执行yum命令失败等常见问题的排查方法. 1.执行yum命令报404错误 1)检查yum仓库是否配置正确,可以到阿里云下载rep ...

  2. 推荐一款数据mock框架,无需任何依赖,贼牛逼

    fox-mock 是基于Java Agent实现的自测,联调Mock利器.能解决你的这些问题: 开发过程中,依赖了下游多个接口,想跑个单测都必须得等下游把服务部署好 联调过程中,下游某个接口出问题,阻 ...

  3. Blazor和Vue对比学习(基础1.7):传递UI片断,slot和RenderFragment

    组件开发模式,带来了复用.灵活.性能等优势,但也增加了组件之间数据传递的繁杂.不像传统的页面开发模式,一个ViewModel搞定整个页面数据. 组件之间的数据传递,是学习组件开发,必须要攻克的难关.这 ...

  4. Spring Boot 2.7.0发布,2.5停止维护,节奏太快了吧

    这几天是Spring版本日,很多Spring工件都发布了新版本, Spring Framework 6.0.0 发布了第 4 个里程碑版本,此版本包含所有针对 5.3.20 的修复补丁,以及特定于 6 ...

  5. OAuth2.0之OLTU实现举例

    一.场景 三个角色:用户(user),web应用(client),资源服务器和授权服务器合为服务器(server) 用户登录登录后可查看自己的信息 二.准备 2.1 数据库 schema drop t ...

  6. 【Unity Shader学习笔记】Unity基础纹理-法线贴图

    1 高度纹理 使用一张纹理改变物体表面法线,为模型提供更多细节. 有两种主要方法: 1.高度映射:使用一张高度纹理(height map)来模拟表面位移(displacement).得到一个修改后的法 ...

  7. MOS管实现的STC自动下载电路

    目录 MOSFET, MOS管基础和电路 MOS管实现的STC自动下载电路 三极管配合 PMOS 管控制电路开关 STC MCU在烧录时, 需要断电重置后才能进入烧录状态, 通常是用手按开关比较繁琐. ...

  8. DML数据操作语言

    DML数据操作语言 用来对数据库中表的数据记录进行更新.(增删改) 插入insert -- insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...):向表中 ...

  9. GraphX 图计算实践之模式匹配抽取特定子图

    本文首发于 Nebula Graph Community 公众号 前言 Nebula Graph 本身提供了高性能的 OLTP 查询可以较好地实现各种实时的查询场景,同时它也提供了基于 Spark G ...

  10. 隐式转换导致的cpu负载近100%

    1.背景:从昨天晚上通过钉钉和邮箱一直接收到频繁报cpu负载超过90%,刚好BI同事晚上.凌晨在线上配合审计频繁DML数据库(备注:BI有一个同事有个库的DML权限,后面等审计完会收回)加上我线上线下 ...