Skip to main content

注册 AutoMQ Cloud 免费体验

AutoMQ Cloud 基于云原生基础设施重新设计和实现了新一代 Kafka 服务。本文介绍如何在亚马逊云(中国)公有云环境上快速创建 AutoMQ for Kafka(简称 AutoMQ Kafka) 消息集群并体验集群的消息收发与动态弹性能力。

info

本文中提及 AutoMQ 产品服务方、AutoMQ 服务方、AutoMQ,均特指安托盟丘(杭州)科技有限公司。

本文中提及的 AWS 均特指亚马逊云(中国) 公共云服务。

前置条件

caution

本文档是以亚马逊云(中国) 公共云环境作为示例,AutoMQ Kafka 针对其他公共云的适配即将上线。如有需求,请扫描官网顶部二维码联系 AutoMQ 技术支持。

创建 AutoMQ Kafka 实例前需要满足如下前置条件:

  • 已经完成了 AutoMQ Cloud 账号注册,步骤一:注册用户开启免费试用▸
  • 已经创建了用于发起安装的 AWS 云账号,并且分配了相应的权限策略。安装 AutoMQ Kafka 需要的权限策略配置如下:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sns:*",
"cloudwatch:*",
"s3:*",
"ec2:*",
"autoscaling:*",
"pricing:DescribeServices",
"pricing:GetAttributeValues",
"pricing:GetProducts",
"pricing:GetPriceListFileUrl",
"pricing:ListPriceLists",
"iam:*Role*",
"iam:*RolePolic*",
"iam:*InstanceProfile*"
],
"Resource": "*"
}
]
}

进入默认订阅执行安装

系统会默认为新注册 AutoMQ Cloud 的用户创建第一个免费试用版订阅。在免费试用版订阅中可以完成 AutoMQ for Kafka 的安装。

前往订阅详情:

  1. 登录 AutoMQ Cloud 即可看到由 AutoMQ 提前帮创建好的免费订阅。点击 [查看详情] 进入订阅详情列表。
  2. 在订阅详情页点击 [ 安装 AutoMQ for Kafka ]
  3. 按照引导生成离线安装配置 kos-config.yaml 并且下载 AutoMQ for Kafka 安装器。
  4. 解压压缩包,执行安装器可执行文件。

### 解压安装器压缩包
tar -zxvf amq-installer_${OS}_${ARCH}.tar.gz

### MacOS 执行安装命令步骤 ####
## 1. 安装依赖文件到主目录的 ~/.amq 下
./amq-installer install-dependency
## 2. 加载配置文件启动安装
./amq-installer install-kos -f kos-config.yaml


#### Linux 执行安装命令步骤 ####
## 1. 安装依赖文件到主目录的 ~/.amq 下
sudo ./amq-installer install-dependency
## 2. 加载配置文件启动安装
sudo ./amq-installer install-kos -f kos-config.yaml


  1. 安装完毕后会看到 Congratulations!!! 的字样,在安装器所在目录可以查看消息集群的接入点信息。

## 保存私有网络地址的接入点信息
cat privateEndpoint.txt
## 保存公有网络地址的接入点信息 (需开启配置文件中 kos.ec2.enablePublic选项)
cat publicEndpoint.txt

体验Kafka集群的弹性能力

AutoMQ Kafka 结合 AWS Auto Scaling Group 和 CloudWatch 等云设施配合自身重新设计的云原生架构能够实现根据流量压力自动对 Broker 集群容量扩容、缩容并且完成秒级流量重平衡。

准备生产者实例

通过关键字“automq-kos”搜索社区 AMI 镜像,使用我们在 AWS 公共镜像市场的最新 AMI 镜像启动一个生产者计算实例,EC2 实例的规格使用 c6in.large 用以生产足以触发扩容的网络流量。

tip

默认情况下,amq-installer 会创建 2 台 r6i.large 机型的 AutoMQ Kafka Broker 实例。

当 Broker 集群网络进出流量打满总带宽的 80% 的时候会触发扩容。

当 Broker 集群网络进出流量小于总网络带宽的 50% 时会触发缩容。

为了模拟扩容的场景,针对 r6i.large 机型的2台 Broker,生产者生产数据的速率需要达到 160 MBps 以上,本示例中采用 c6in.large 规格的 EC2 作为生产者实例。c6in.large 的网络带宽上限为400MB,且是网络优化型的实例,较为适用于本次作为生成网络负载的生产者。

构造网络流量

在生产者机器上依次进行以下操作:

1) 创建包含8个 Partition的 Topic test-topic:


$KAFKA_HOME/kafka/bin/kafka-topics.sh --create --topic test-topic --partitions 8 --bootstrap-server ${BROKER_IP}:9092

2)利用 kafka-producer-perf-test.sh 脚本增大 AutoMQ Kafka 集群的网络流量:


## 启动2个producer进程,每个producer进程产生约200MBps的网络负载
$KAFKA_HOME/kafka/bin/kafka-producer-perf-test.sh --topic test-topic --num-records=6553600 --throughput 1600 --record-size 131072 --producer-props bootstrap.servers=${BROKER_IP}:9092 \> producer_1.log &
$KAFKA_HOME/kafka/bin/kafka-producer-perf-test.sh --topic test-topic --num-records=6553600 --throughput 1600 --record-size 131072 --producer-props bootstrap.servers=${BROKER_IP}:9092 \> producer_2.log &

## 停止压力测试
jps | grep ProducerPerformance
kill ${PID}

AWS Auto Scaling Group 默认配置的流量监测时间粒度是1分钟,你可以在 2 分钟后通过 AWS EC2 的控制台观察到新扩容的一台 Broker 实例。

tip

AWS EC2 默认开启详细监控,EC2 网络流量相关指标的粒度为1分钟。由于 AWS EC2 指标发布本身存在一些延迟,实际触发弹性的时间比监测粒度会更久一点。

tip

观察 kafka-producer-perf-test 脚本执行日志,可以看到日志中抛出了 NOT_LEADER_OR_FOLLOWER 的 WARN 信息,这是因为 AutoMQ Kafka 正在内部进行分区移动。得益于 AutoMQ Kafka 云原生架构的优势,通过日志我们可以看到整个分区移动过程在若干秒内即可完成分区移动,实现真正的“秒级分区移动”。

体验节点缩容

关闭所有 kafka-producer-perf-test.sh 的压力进程,使生产流量降为0。2分钟后,你可以通过 AWS EC2 的控制台观察到集群节点数再次变回2台:

此外,你也可以通过查看 AWS CloudWatch 的告警页面,观察上述扩缩容的过程:

使用 Spot 实例降低成本

AutoMQ Kafka 的 Broker 节点默认采用 spot 实例,相比 on-demand 实例,会带来大幅度的成本降低。得益于 AutoMQ Kafka 的“秒级分区移动”、“持续流量重平衡”能力,使得我们在云上使用 Spot 实例成为可能。当Spot实例被回收时,AutoMQ Kafka 会重新请求新的 spot 实例节点,极速完成分区移动与流量重平衡,以业务无感的方式完成spot实例的替换。

在 AWS EC2 控制台的 Spot 请求页面,查看 Spot 实例的定价历史记录,可以查看 AutoMQ Kafka 采用 spot实例相比 on-demand 实例节约的成本情况。

以 AWS EC2 r6i.large 规格在 cn-northwest-1b 可用区为例,2023年10月的历史记录来看,采用spot实例平均节省成本可达70%。

卸载安装

卸载安装到一半或者已经完全安装完毕的 AutoMQ Kafka 可以使用如下命令


#### MacOS 执行卸载命令步骤 ####
## 1. 删除云资源
./amq-installer uninstall-kos -f kos-config.yaml
## 2. 删除本地依赖
rm -r ~/.amq/*

#### Linux 执行卸载命令步骤 ####
## 1. 删除手动创建的云资源(例如子网下用于测试创建的生产者消费者EC2实例),以免卸载时由于资源依赖而无法卸载干净
## 2. 删除云资源
sudo ./amq-installer uninstall-kos -f kos-config.yaml
## 3. 删除本地依赖
sudo rm -r ~/.amq/*