写点什么

携手 AWS,零成本在 EKS 上体验 AutoMQ 企业版

作者:AutoMQ
  • 2025-02-08
    浙江
  • 本文字数:2973 字

    阅读完需:约 10 分钟

携手AWS,零成本在EKS上体验AutoMQ企业版

AutoMQ 是一款贯彻云优先理念来设计的 Kafka 替代产品。AutoMQ 创新地对 Apache Kafka 的存储层进行了基于云的重新设计,在 100% 兼容 Kafka 的基础上通过将持久性分离至 EBS 和 S3 带来了 10x 的成本降低以及 100x 的弹性能力提升,并且相比 Apache Kafka 拥有更佳的性能。


为了让广大开发者以及对 AutoMQ 感兴趣的朋友可以更好的体验 AutoMQ 企业版内核的能力,AutoMQ 与 AWS 合作为大家提供了一个免费试用 AutoMQ 的机会。无需用户提供任何云资源,支付任何费用,真正意义的完全免费。本文将给大家介绍,如何在几分钟内全自动地在 EKS 上部署起一套 AutoMQ 集群。

获取零成本试用专用链接

在 AutoMQ 官网填写试用表单,并且在 业务场景和规模 一栏额外标注【零成本试用】,我们在工作日时间一般会在 30 分钟以内与你取得联系,并且发送给你专用的免费试用访问链接以及 AutoMQ 企业版试用的 Helm Chart,然后即可按照如下方式操作登入免费试用的平台,获得免费 3 天的试用资格。





准备 AutoMQ 使用的云资源

前置条件

  • Terraform v1.3+

  • AWS CLI v2.7.0/v1.24.0+, 参考installedconfigured

  • kubectl v1.24.0+

  • AutoMQ 企业版 Helm Chart

  • 仅支持 AWS 上有 Amazon Managed Service for Prometheus 的区域

部署说明

  • 会部署一个 3 个 Controller(混合节点)、1 个 Broker 节点的 AutoMQ 集群。每台 Broker 的配置为 2c16g。

  • 集群默认开启 SASL_PLAIN 身份认证

  • 集群默认使用的 WAL 引擎是 S3WAL 。关于 AutoMQ 不同 WAL Storage 实现可以参考官方文档

获取和配置 AWS 身份凭证信息

从 Workshop 登入后的控制台获取身份凭证:



根据不同的环境拷贝对应的执行命令,导出环境变量。本教程以 macOS 系统为例。



在本地导出环境变量后可以通过以下命令确认身份凭证是否生效:


aws sts get-caller-identity
复制代码


下载 Terraform 配置文件并执行

我们已经为你准备好了默认直接可以使用的 Terraform 配置文件。克隆 automq-eks-example 项目,并且在其中执行命令即可开始部署


git clone https://github.com/AutoMQ/automq-eks-examplecd automq-eks-exampleterraform initterraform apply
复制代码


Terraform apply 执行完毕后即可自动完成 EKS 集群、VPC 网络、对象存储桶等资源的创建,并输出一些信息。


生成 kubeconfig

确保已经正确配置了 AWS 的身份凭证信息。在 Terraform 的执行目录,执行以下命令来同步 kubeconfig。同步完成后你可以使用 kubectl 命令来访问 EKS 集群。


aws eks --region $(terraform output -raw region) update-kubeconfig \    --name $(terraform output -raw cluster_name)
复制代码


安装 AutoMQ Helm Chart

安装 storage class

首先安装 AutoMQ 依赖的 Storage Class。Storage Classs 文件可以从前文提到的 automq-eks-example 示例工程中获取。执行如下命令:


kubectl apply -f storageclass.yaml
复制代码

配置 Value Yaml

automq-eks-example 工程中会包含一个名为 aws.yaml 的 value yaml。Terraform 默认会创建一个 AWS Prometheus Workspace。将之前 terraform apply 执行以后 output 信息当中的 automq_prometheus_metrics_uri 的值替换 aws.yaml 当中的 s3.telemetry.metrics.exporter.uri 的值。


安装 AutoMQ Helm Chart

接着使用 automq-eks-example 项目的 aws.yaml 文件 作为 Helm Chart 的 Value Yaml。我们将使用该 yaml 文件的配置来安装 AutoMQ Helm Chart.


helm install automq automq-enterprise-1.2.0-chart-rc0.tgz -f aws.yaml
复制代码


安装 Chart 完毕后会打印接入点的信息:


Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:
automq-automq-enterprise-controller-0.automq-automq-enterprise-controller-headless.default.svc.cluster.local:9092 automq-automq-enterprise-controller-1.automq-automq-enterprise-controller-headless.default.svc.cluster.local:9092 automq-automq-enterprise-controller-2.automq-automq-enterprise-controller-headless.default.svc.cluster.local:9092 automq-automq-enterprise-broker-0.automq-automq-enterprise-broker-headless.default.svc.cluster.local:9092
复制代码


此时我们可以在 Kubernetes 上看到对应的 Pod


Grafana 查看监控

Terraform 当中已经默认创建了 AWS Prometheus 。参考 automq-eks-example 工程中 grafana-demo 下的 Readme 使用其中的 install.sh 脚本在本地启动一个 Grafana。在本地 http://127.0.0.1:3000 (默认账号密码均为 admin)打开 Grafana 控制台:

添加 AWS Prometheus 的数据源插件

添加 Amazon Managed Service for Prometheus 数据源

添加数据源信息

数据源需要的 Prometheus server URL 可以从 terraform output 中的 automq_prometheus_server_url 获取。Authentication 当中需要一个长时间可用的凭证信息。我们可以通过 workshop 控制台访问 AWS 控制台,在 IAM 服务中创建一个新的 IAM 用户,并且创建一个访问秘钥,分配如下最小化权限:


{    "Version": "2012-10-17",    "Statement": [        {            "Sid": "VisualEditor0",            "Effect": "Allow",            "Action": [                "aps:RemoteWrite",                "aps:QueryMetrics",                "aps:GetMetricMetadata",                "aps:GetLabels",                "aps:GetSeries"            ],            "Resource": "${YOUR_AMP_ARN}"        }    ]}
复制代码



选择 Access & secret key 将 AWS 上新建用户的 Acess & secret key 凭证信息进行填充。


验证数据

配置完毕后,可以通过 AutoMQ 已经内置好的 Grafana 模板查看 AutoMQ 的监控信息


发送和消费消息

由于默认开启 SASL,需要提前在本地准备好 client.properties 用于身份认证(admin/admin 为默认账号和密码)。


security.protocol=SASL_PLAINTEXTsasl.mechanism=SCRAM-SHA-256sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \    username="admin" \    password="admin";
复制代码


使用 AutoMQ 的镜像启动一个作为 Client 的 Pod,将 client.properties 文件拷贝到 client pod 的 /tmp 目录下。


kubectl run automq-automq-enterprise-client --restart='Never' --image registry.cn-shanghai.aliyuncs.com/automq/automq-enterprise:1.1.0 --namespace default --command -- sleep infinitykubectl cp --namespace default client.properties automq-automq-enterprise-client:/tmp/client.propertieskubectl exec --tty -i automq-automq-enterprise-client --namespace default -- bash
复制代码


进入 client pod 以后,到 /opt/automq/kafka 目录下执行如下命令来完成消息的收发:


cd /opt/automq/kafka
bin/kafka-console-producer.sh \ --producer.config /tmp/client.properties \ --bootstrap-server automq-automq-enterprise.default.svc.cluster.local:9092 \ --topic test bin/kafka-console-consumer.sh \ --consumer.config /tmp/client.properties \ --bootstrap-server automq-automq-enterprise.default.svc.cluster.local:9092 \ --topic test \ --from-beginning
复制代码


用户头像

AutoMQ

关注

还未添加个人签名 2023-12-02 加入

还未添加个人简介

评论

发布
暂无评论
携手AWS,零成本在EKS上体验AutoMQ企业版_云计算_AutoMQ_InfoQ写作社区