Skip to main content

在 Linux 主机上以集群方式部署

本文将介绍在公共云环境中快速部署启动一个包含 3 个 CONTROLLER 节点和 2 个 BROKER 节点的 AutoMQ 集群,并测试 AutoMQ 的基本功能。

AutoMQ 支持在私有云部署,可以选择自建与 AWS EBS 和 AWS S3 兼容的存储系统,如 Ceph、CubeFS 或 MinIO。

前置条件

  • 准备 5 台主机用于部署 AutoMQ 集群。在公共云环境建议选择 2 核 16GB 内存的网络优化型 Linux amd64 主机,并确保系统盘存储空间不低于 10GB,数据卷磁盘空间不低于 10GB。测试环境可以适当降低配置。示例如下:

    角色
    IP
    Node ID
    系统卷
    数据卷
    CONTROLLER
    192.168.0.1
    0
    EBS 20GB
    EBS 20GB
    CONTROLLER
    192.168.0.2
    1
    EBS 20GB
    EBS 20GB
    CONTROLLER
    192.168.0.3
    2
    EBS 20GB
    EBS 20GB
    BROKER
    192.168.0.4
    1000
    EBS 20GB
    EBS 20GB
    BROKER
    192.168.0.5
    1001
    EBS 20GB
    EBS 20GB

    建议在购买计算资源时指定与本示例相同的网段和 IP 地址,这样可以方便直接复制操作命令。

  • 下载二进制安装包,用于安装 AutoMQ。参考 软件制品▸

  • 创建两个自定义命名的对象存储桶,例如 automq-data 和 automq-ops。

  • 创建一个 IAM 用户并为其生成 Access Key 和 Secret Key。然后,确保该 IAM 用户具有对之前创建的对象存储桶完整的读写权限。

建议查阅官方网站以获取更多详细信息。


{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:AbortMultipartUpload",
"s3:DeleteObject"
],
"Resource": [
"arn:aws-cn:s3:::automq-data/*",
"arn:aws-cn:s3:::automq-ops/*"
]
}
]
}

安装并启动 AutoMQ 集群

第 1 步:创建集群部署工程

AutoMQ 提供了 automq-cli.sh 工具,用于 AutoMQ 集群运维。 automq-cli.sh cluster create \[project\] 命令会自动在当前目录下创建集群配置模版 clusters/\[project\]/topo.yaml


bin/automq-cli.sh cluster create poc

执行结果示例如下:


Success create AutoMQ cluster project: poc
========================================================
Please follow the steps to deploy AutoMQ cluster:
1. Modify the cluster topology config clusters/poc/topo.yaml to fit your needs
2. Run ./bin/automq-cli.sh cluster deploy --dry-run clusters/poc , to deploy the AutoMQ cluster

第 2 步:编辑集群配置模版

编辑集群第 1 步生成的配置模版,配置模版示例如下:


global:
clusterId: ''
# bucket URI pattern: 0@s3://$bucket?region=$region&endpoint=$endpoint
# bucket URI example:
# AWS : 0@s3://xxx_bucket?region=us-east-1
# AWS-CN: 0@s3://xxx_bucket?region=cn-northwest-1&endpoint=https://s3.amazonaws.com.cn
# ALIYUN: 0@s3://xxx_bucket?region=oss-cn-shanghai&endpoint=https://oss-cn-shanghai.aliyuncs.com
# TENCENT: 0@s3://xxx_bucket?region=ap-beijing&endpoint=https://cos.ap-beijing.myqcloud.com
# OCI: 0@s3://xxx_bucket?region=us-ashburn-1&endpoint=https://xxx_namespace.compat.objectstorage.us-ashburn-1.oraclecloud.com&pathStyle=true
config: |
s3.data.buckets=0@s3://xxx_bucket?region=us-east-1
s3.ops.buckets=1@s3://xxx_bucket?region=us-east-1
envs:
- name: KAFKA_S3_ACCESS_KEY
value: 'xxxxx'
- name: KAFKA_S3_SECRET_KEY
value: 'xxxxx'
controllers:
# The controllers default are combined nodes which roles are controller and broker.
# The default controller port is 9093 and the default broker port is 9092
- host: 192.168.0.1
nodeId: 0
- host: 192.168.0.2
nodeId: 1
- host: 192.168.0.3
nodeId: 2
brokers:
- host: 192.168.0.5
nodeId: 1000
- host: 192.168.0.6
nodeId: 1001

  • global.clusterId :随机生成的唯一 ID,无需修改;

  • global.config :集群所有节点的自定义增量配置,此处必须将 s3.data.bucketss3.ops.buckets 修改成实际的值。可额外在后面换行添加新的配置项;

  • global.envs :节点的环境变量,此处必须将 KAFKA_S3_ACCESS_KEYKAFKA_S3_SECRET_KEY 的 value 替换成实际的值;

  • controllers :Controller 节点列表,需替换成实际的值;

  • brokers :Broker 节点列表,需替换成实际的值;

数据卷路径

AutoMQ 存储元数据和 WAL 数据的默认位置是在 /tmp 目录下。为了更适合生产或正式测试环境,建议在集群配置模版里面添加全局配置,将元数据目录 log.dirs 和 WAL 数据目录 s3.wal.path 的路径设置到可持久化存储的位置,配置参考如下:


global:
...
configs: |
s3.data.buckets=0@s3://xxx_bucket?region=us-east-1
s3.ops.buckets=1@s3://xxx_bucket?region=us-east-1
log.dirs=/root/kraft-logs
s3.wal.path=/root/kraft-logs/s3wal

...

第 3 步:启动 AutoMQ

执行集群部署命令:


bin/automq-cli.sh cluster deploy --dry-run clusters/poc

该命令首先会检查 S3 配置的正确性,确认 S3 能成功访问,最后输出各个节点的启动命令,输出示例如下:


Host: 192.168.0.1
KAFKA_S3_ACCESS_KEY=xxxx KAFKA_S3_SECRET_KEY=xxxx ./bin/kafka-server-start.sh -daemon config/kraft/server.properties --override cluster.id=JN1cUcdPSeGVnzGyNwF1Rg --override node.id=0 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override advertised.listener=192.168.0.1:9092 --override s3.data.buckets='0@s3://xxx_bucket?region=us-east-1' --override s3.ops.buckets='1@s3://xxx_bucket?region=us-east-1'

...

要启动集群,请在预先指定的 CONTROLLER 或 BROKER 主机上依次执行上一步命令中的命令列表。例如,在 192.168.0.1 上启动第一个 CONTROLLER 进程,执行生成的启动命令列表中对应 Host 的命令


KAFKA_S3_ACCESS_KEY=xxxx KAFKA_S3_SECRET_KEY=xxxx ./bin/kafka-server-start.sh -daemon config/kraft/server.properties --override cluster.id=JN1cUcdPSeGVnzGyNwF1Rg --override node.id=0 --override controller.quorum.voters=0@192.168.0.1:9093,1@192.168.0.2:9093,2@192.168.0.3:9093 --override advertised.listeners=PLAINTEXT://192.168.0.1:9092 --override s3.data.buckets='0@s3://xxx_bucket?region=us-east-1' --override s3.ops.buckets='1@s3://xxx_bucket?region=us-east-1'

运行示例程序

在启动 AutoMQ 集群后,可以运行以下示例程序来验证其功能。

  1. 示例:验证收发消息功能▸

  2. 示例:简易性能压测▸

  3. 示例:验证秒级分区迁移▸

  4. 示例:集群节点变化触发分区自平衡▸

  5. 示例:持续数据自平衡▸

停止并卸载 AutoMQ 集群

在完成测试后,可以参考以下步骤停止并卸载 AutoMQ 集群。

  1. 在每台节点上执行如下命令停止进程。

bin/kafka-server-stop.sh

  1. 你可以通过配置对象存储的生命周期规则来自动清空 s3-data-bucket 和 s3-ops-bucket 中的数据,然后再删除这些存储桶。

  2. 删除创建的计算实例及其对应的系统卷和数据卷。

  3. 删除测试用户及其关联的 AccessKey 和 SecretKey。

相关内容

通过云市场试用 AutoMQ Cloud▸