业务迁移
本文主要介绍将自建Kafka集群迁移到专享版 消息服务 for Kafka集群的相关操作。
迁移前提
- 存在一个可用的专享版 消息服务 for Kafka。
- 为专享版 消息服务 for Kafka创建主题。
集群准备
1. 购买专享版消息服务for Kafka集群
开通消息服务 for Kafka服务后,在控制台页面点击『创建集群』,即可进行购买。
2. 为购买的集群创建主题
在控制台页面点击集群名称,进入集群详情页面。
在左侧的边栏中点击『主题管理』,进入主题管理页面。
在主题管理页面点击『创建主题』,进行主题的创建。
开通消息服务 for Kafka服务后,在控制台页面点击『创建集群』,即可进行购买。
迁移方案
方案一:先迁生产,后迁消费
先将生产消息的业务迁移到专享版 消息服务 for Kafka集群,这样原Kafka集群不会有新的消息生产。
待原有Kafka集群的消息全部消费完成后,再将消费消息业务迁移到专享版 消息服务 for Kafka集群,开始消费消息。
适用场景
本方案为业界通用的迁移方案,操作步骤简单,迁移过程由业务侧自主控制,整个过程中消息不会存在乱序问题,适用于对消息顺序有要求的场景。但是该方案中需要等待消费者业务直至消费完毕,存在一个时间差的问题,部分数据可能存在较大的端到端时延。
迁移步骤
- 专享版 消息服务 for Kafka集群,在集群中创建好 topic 等资源,具体操作见『集群准备』。
- 切换生产者写入地址:
-
- 将生产客户端的Kafka连接地址修改为专享版 消息服务 for Kafka集群所提供的接入点地址。接入点查看请参考:查看集群接入点
- 重启生产业务,使得生产者将新的消息发送到专享版 消息服务 for Kafka集群中。
- 观察各消费组在原Kafka的消费进度,直到原Kafka中数据都已经被消费完毕。
- 切换消费者
-
- 将消费客户端的Kafka连接地址修改为专享版 消息服务 for Kafka集群所提供的接入点地址。接入点查看请参考:查看集群接入点
- 重启消费业务,使得消费者从专享版 消息服务 for Kafka集群中消费消息。
- 观察消费者是否能正常从专享版 消息服务 for Kafka集群中获取数据。
- 迁移结束。
方案二:同时消费,后迁生产
指消费者业务启用多个消费客户端,分别向原Kafka集群和专享版 消息服务 for Kafka集群消费消息,然后将生产业务切到专享版 消息服务 for Kafka集群,这样能确保所有消息都被及时消费。
适用场景
迁移过程由业务自主控制。本方案中消费业务会在一段时间内同时消费原Kafka集群和专享版 消息服务 for Kafka集群。由于在迁移生产业务之前,已经有消费业务运行在专享版 消息服务 for Kafka集群上,因此不会存在端到端时延的问题。但在迁移生产的开始阶段,同时消费原Kafka集群与专享版 消息服务 for Kafka集群,会导致部分消息之间的生产顺序无法保证,存在消息乱序的问题。此场景适用于对端到端时延有要求,却对消息顺序不敏感的业务。
迁移步骤
- 专享版 消息服务 for Kafka集群,在集群中创建好 topic 等资源,具体操作见『集群准备』。
- 启动新的消费客户端,配置Kafka连接地址为修改为专享版 消息服务 for Kafka集群所提供的接入点地址。消费专享版 消息服务 for Kafka集群中的数据。(原有消费客户端需继续运行,消费业务同时消费原Kafka集群与专享版 消息服务 for Kafka集群中的消息。)
- 切换生产者写入地址:
-
- 修改生产客户端,Kafka连接地址改为专享版 消息服务 for Kafka集群所提供的接入点地址。接入点查看请参考:查看集群接入点
- 重启生产客户端,将生产业务迁移到专享版 消息服务 for Kafka集群中。
- 生产业务迁移后,观察连接专享版 消息服务 for Kafka集群的消费业务是否正常。
- 等待原Kafka集群中数据消费完毕,关闭原有消费业务客户端。
- 迁移结束。
使用MirrorMaker迁移
概述
MirrorMaker为Kafka自带的数据迁移工具,可以利用此种方式直接进行kafka集群之间的数据迁移;减少中间组件的使用。
具体介绍请参考Kakfa官方网站:MirrorMaker
迁移原理
通过Consumer从旧的Kafka集群中消费数据,然后通过Producer将数据生产在目标kafka集群中,来实现数据同步备份。
环境准备
准备一台与专享版 消息服务 for Kafka集群网络相通的服务器,例如:云服务器BCC。
可通过如下链接下载迁移工具:迁移工具,并将其上传到BCC中进行解压。
BCC中进行如下配置操作:
# 1. 安装JDK 1.8
yum install java
# 2. 下载并解压kafka_2.12-2.7.2.tgz文件
tar -zxvf kafka_2.12-2.7.2.tgz
迁移步骤
- 进入kafka_2.12-2.7.2/config路径下,找到connect-mirror-maker.properties文件,并进行如下配置:
# Licensed to the Apache Software Foundation (ASF) under A or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# see org.apache.kafka.clients.consumer.ConsumerConfig for more details
# Sample MirrorMaker 2.0 top-level configuration file
# Run with ./bin/connect-mirror-maker.sh connect-mirror-maker.properties
# 指定任意数量的集群别名
clusters = A, B
# 配置新旧集群的地址
# 例如A配置为原Kakfa集群的地址,B则配置为专享版 消息服务 for Kafka提供的接入点地址
A.bootstrap.servers = A_host1:port, A_host2:port, A_host3:port
B.bootstrap.servers = B_host1:port, B_host2:port, B_host3:port
# 指定数据同步的方向(单向同步、相互同步)
A->B.enabled = true
# 指定需要同步的主题,默认全部同步
A->B.topics = .*
# 下面两行配置表示两个集群相互同步
B->A.enabled = true
B->A.topics = .*
# 设置副本数
replication.factor=1
############################# Internal Topic Settings #############################
# The replication factor for mm2 internal topics "heartbeats", "B.checkpoints.internal" and
# "mm2-offset-syncs.B.internal"
# 下面的配置在测试环境中可以设置为1,生产环境中建议设置大于1的值,例如:3
checkpoints.topic.replication.factor=1
heartbeats.topic.replication.factor=1
offset-syncs.topic.replication.factor=1
# The replication factor for connect internal topics "mm2-configs.B.internal", "mm2-offsets.B.internal" and
# "mm2-status.B.internal"
# 下面的配置在测试环境中可以设置为1,生产环境中建议设置大于1的值,例如:3
offset.storage.replication.factor=1
status.storage.replication.factor=1
config.storage.replication.factor=1
# 有需要可以自行配置
# replication.policy.separator = _
# sync.topic.acls.enabled = false
# emit.heartbeats.interval.seconds = 5
- 进入kafka_2.12-2.7.2/bin路径下,启动MirrorMaker脚本工具,执行如下命令:
./bin/connect-mirror-maker.sh config/connect-mirror-maker.properties
- 等待数据迁移。
迁移结果查看
- 在原集群生产并消费消息。
- 在专享版 消息服务 for Kafka的集群监控中查看数据同步情况。
监控查看步骤如下:
(1)在专享版消息服务 for Kafka的控制台页面找到需要连接的集群,点击集群名称进入集群详情页面。
(2)页面跳转后,进入左侧边中的集群详情页面。
(3)点击左侧边栏中的集群监控,进入集群监控页面。
(4)通过查看集群监控页面,提供的不同纬度的监控信息(集群监控、节点监控、主题监控、消费组监控),即可获知集群的生产和消费情况。
集群监控的具体使用请参考:集群监控