记Pulsar集群数据迁移流程

记Pulsar集群数据迁移流程

背景

公司业务调整,需要将一批运行在云上的Pulsar集群迁移到自建机房中。于是折腾了Pulsar迁移的流程,这里记录下主要操作。
Pulsar集群迁移主要有两种方式:
1、基于geo-replication跨机房复制的方式迁移;
2、通过节点扩缩容的方式替换节点完成集群迁移。

基于geo-replication迁移

基于跨机房复制的方案,基本架构就是将pulsar内部维护一个消费者将数据发送到副本集群。通过开启复制订阅,将消费者消费信息同步到副本集群,实现跨机房消费无缝切换(默认复制间隔为1s,消费切换时可能存在1s的重复消费)
这种方式适用于,集群Topic较少,只迁移部分数据的迁移场景。

操作流程:

  1. 搭建新集群B
  2. 在新集群B上按需创建需要复制的tenant、namespace,以及partitioned-Topic。(普通Topic会自动创新,分区Topic需要手动创建并指定分区数,否则会以普通Topic的形式自动创建各个分区的Topic)
  3. 把新集群B添加到旧集群A中:

bin/pulsar-admin clusters create --broker-url pulsar://gz-idc-pulsar-metric-split.company.info:6650 --url http://gz-idc-pulsar-metric-split.company.info:8080 pulsar-gz-idc-metric-split-cluster

  1. 在A集群上,将B集群更新到需要复制的tenant、namespace中

bin/pulsar-admin tenants update neo -c pulsar-gz-txcloud-cluster,pulsar-gz-idc-metric-split-cluster
bin/pulsar-admin namespaces set-clusters neo/metrics -c pulsar-gz-txcloud-cluster,pulsar-gz-idc-metric-split-cluster

  1. 更新Topic消费端,启动复制订阅
  2. 验证消费订阅是否启动,验证Topic数据复制

bin/pulsar-admin topics partitioned-stats-internal persistent://neo/metrics/neo-metrics

  • 在A集群执行可看到同步数据的游标已经创建
    记Pulsar集群数据迁移流程_第1张图片

  • 在A集群可看到消费程序开启订阅复制
    记Pulsar集群数据迁移流程_第2张图片

  1. 切换消费者和生产者程序到集群B的serviceURL

基于扩缩容迁移

  1. 先将迁移的目标节点加入集群,在新节点上部署Broker、bookeeper服务。具体操作可参照:官方文档 pulsar裸机部署 部署完需确认Broker、Bookie服务已注册到zk上。

  2. 下线旧机房的Broker服务。Broker兼容自适应扩缩容,确定机器负载没问题后,逐台下线即可。客户端的连接会自动重连到剩余可用Broker服务上。

  3. 下线Bookie。

    1. 确保剩余Bookie数量 >= Write Quorum >= Ack Quorum
    2. 开启自动拷贝: bookkeeper shell autorecovery -enable; 设置bookie为只读模式:修改conf/bk_server.conf readOnlyModeEnabled=trueforceReadOnlyBookie=true
    3. bookkeeper shell listunderreplicated 确定没有待复制的bookie列表
    4. 等待无数据流入后下线Bookie服务 bin/bookkeeper-daemon.sh stop bookie

你可能感兴趣的:(mq,java,big,data,中间件)