安装Kafka单机版, 安装Kafka单机版

更新时间:
复制 MD 格式

资源编排服务 ROS(Resource Orchestration Service)支持通过公共模板基于已有的网络资源一键部署 Kafka 消息队列环境。

方案概述

本方案使用阿里云资源编排服务(ROS)的公共模板,在已有VPC网络基础上一键创建ECS实例,并自动安装JDK、Scala、Apache KafkaKafka Manager,快速搭建消息队列开发测试环境。适用于需要快速验证消息发布/订阅、日志收集、事件驱动架构等场景。

什么是 Apache Kafka

Apache Kafka 是一个使用 Scala 和 Java 语言编写的开源流处理平台,也是一种高吞吐量的分布式发布-订阅消息系统,可处理高并发的消息与事件流数据。本方案涉及的组件说明如下。

组件

说明

Kafka Broker

消息代理服务,负责接收生产者发送的消息并存储到磁盘,同时提供消费者拉取消息的服务。

ZooKeeper

Kafka 内置的分布式协调服务,负责 Broker 的注册发现、Topic 元数据管理和消费者偏移量记录。

Kafka Manager

开源的 Kafka 集群 Web 管理工具,提供 Topic 管理、Broker 监控、消费者组查看等可视化功能,默认使用 9000 端口。

本模板安装的软件版本如下。

组件

版本

Java JDK(Java Development Kit)

1.8.0

Scala

2.12

Apache Kafka

0.10.2.2

本方案特点:基于已有 VPC 部署

与其他 ROS 部署方案不同,本模板要求使用已有的 VPC、交换机和安全组,不会新建网络资源。这种设计适用于以下场景:

  • 已有标准化网络环境,需要向现有 VPC 添加 Kafka 消息队列。

  • 多个项目共享一个 VPC,避免重复创建网络资源。

创建的资源清单

序号

资源

资源类型

用途说明

1

ECS 云服务器实例

ALIYUN::ECS::Instance

创建一台云服务器,作为运行 Kafka Broker、ZooKeeper 与 Kafka Manager 的计算节点(含数据盘)。

2

弹性公网 IP(EIP)

ALIYUN::VPC::EIP

为 ECS 实例提供公网访问入口。

3

EIP 绑定关联

ALIYUN::VPC::EIPAssociation

将 EIP 绑定到 ECS 实例。

部署完成后获得的结果

资源栈创建成功后,可获得以下资源与环境:

  • 一台 ECS 云服务器实例(CentOS 7 系统,已绑定弹性公网 IP,含独立数据盘)。

  • ECS 上已安装并运行的 Kafka Broker(默认监听 9092 端口)与 ZooKeeper(Kafka 内置)。

  • 资源栈输出中提供的 KafkaManagerUrl,用于登录 Kafka Manager。

架构图

              生产者(Producer)     消费者(Consumer)
                    ↓                      ↑
              ┌─────────────────────────────────┐
              │         Kafka Broker            │
              │   (消息接收、存储、分发,端口9092)│
              │                                 │
              │   ZooKeeper(内置,协调管理)      │
              │                                 │
              │   Kafka Manager(Web UI,端口9000)│
              └─────────────────────────────────┘
                            │
                     数据盘 /home/software/
                     (消息持久化存储)

前提条件

在使用本模板前,请确认满足以下条件:

  • 用于部署的阿里云账号具备 ECS、VPC、EIP 产品的创建权限。

  • 已提前创建好 VPC、交换机和安全组。本模板基于已有网络资源部署,不会新建网络资源。具体操作,请参见专有网络与交换机使用安全组

    重要

    如需通过外网访问 KafkaManagerUrl,请在安全组添加入方向 9000 端口的访问规则。

部署环节

部署参数

本模板要求使用已有的 VPC 网络资源,以下参数均需在部署时填写。

网络与 ECS 参数

参数

类型

说明

示例

交换机可用区

String

专有网络下的交换机可用区 ID。

华北 1 可用区 C

现有 VPC 的实例 ID

String

VPC 实例 ID。关于如何创建和查询 VPC 实例,请参见专有网络与交换机

vpc-bp1m6fww66xbntjyc****

网络交换机 ID

String

专有网络下的交换机 ID。关于如何创建和查询交换机,请参见专有网络与交换机

vsw-bp183p93qs667muql****

业务安全组 ID

String

ECS 安全组 ID。关于如何查询安全组 ID,请参见使用安全组

sg-bp15ed6xe1yxeycg7o****

实例规格

String

ECS 实例规格。Kafka 对内存需求较高,建议选择 2 核 4 GB 及以上规格。更多信息,请参见实例规格族

ecs.c5.large

镜像ID

String

ECS 镜像 ID。默认使用 centos_7。更多信息,请参见查找镜像

centos_7

实例密码

String

ECS 实例登录密码。长度 8~30 个字符,需同时包含大写字母、小写字母、数字和特殊字符。

Test_12****

公网 IP 带宽值

Number

公网 IP 带宽。单位:Mbps。取值范围:1~100。

5

磁盘类型

String

取值:

  • cloud_efficiency:高效云盘。

  • cloud_ssd:SSD 云盘。

  • cloud_essd:ESSD 云盘。

  • cloud:普通云盘。

  • ephemeral_ssd:本地 SSD 盘。

更多信息,请参见 块存储概述

cloud_efficiency

数据盘空间

Number

实例数据盘大小,用于存储 Kafka 消息数据。取值范围:20~32786。单位:GB。

20

Kafka 专属参数

参数

类型

说明

默认值

Kafka 监听端口

Number

Kafka Broker 监听的端口号。请使用 1000 以上的端口号。

9092

消息保留时间

Number

Kafka 消息的最长保留时间。单位:小时。

24

Topic 规格

Number

预创建的 Topic 数量。

50

部署方式

方式一:通过 ROS 公共模板部署(推荐)

  1. 登录资源编排控制台

  2. 在左侧导航栏,选择模板 > 公共模板 > 入门模板

  3. 在搜索框中输入 Kafka,找到模板 Kafka 单机版(已有 VPC)

  4. 单击创建资源栈

  5. 配置参数页面,输入资源栈名称,并按上两表填写部署参数。

  6. 单击下一步:检查并确认,然后单击创建

  7. 在左侧导航栏,选择部署 > 资源栈,在资源栈列表页面单击目标资源栈ID,在资源栈信息页签查看资源栈状态,等待状态变为CREATE_COMPLETE

  8. 单击资源栈的输出页签,获取 KafkaManagerUrl。在浏览器中访问该 URL,登录 Kafka Manager 管理控制台即部署成功。

方式二:通过 ROS IaC Code 部署

IaC Code 是面向云基础设施的 AI 基础设施即代码助手,可根据自然语言描述生成 ROS 模板并部署,使用方式参见IaC Code快速入门

# prompt
帮我在已有 VPC 中创建一台 ECS 并部署 Kafka 单机版消息队列环境。
要求:
1. 使用已有的 VPC、VSwitch 和安全组(不新建网络资源)。
2. 创建弹性公网 IP 并绑定到 ECS 实例。
3. ECS 使用 CentOS 7 镜像,挂载一块数据盘用于存储 Kafka 消息数据。
4. 通过 UserData 脚本自动安装 JDK 1.8、Scala 2.12、Kafka 0.10.2.2。
5. 同时安装 Kafka Manager Web 管理工具。
6. Kafka 监听端口 9092,消息保留时间 24 小时。
7. 安全组开放入方向 9000 端口(Kafka Manager)和 9092 端口(Kafka Broker)。
8. 资源栈输出 KafkaManagerUrl。

部署后操作

验证 Kafka 环境

  1. 在资源栈详情页面,单击输出页签,找到 KafkaManagerUrl

  2. 使用浏览器访问 KafkaManagerUrl,正常打开 Kafka Manager 页面即表示部署成功。

常见问题

部署失败,报错“The specified InstanceType is not available”

报错原因是指定可用区没有所选 ECS 实例规格的库存。可按以下方式处理:

  • 更换交换机所在的可用区后重新部署。

  • 云服务器ECS定价确认目标可用区的可用规格。

  • Kafka 需要运行 JVM、ZooKeeper 与 Kafka Manager,对内存需求较高,建议选择 2 核 4 GB 及以上规格。

部署成功但无法访问 Kafka Manager

按以下顺序排查:

  1. 检查安全组:确认安全组入方向规则已放行 TCP 9000 端口(Kafka Manager 默认端口)。

  2. 检查 EIP 绑定:确认弹性公网 IP 已成功绑定到 ECS 实例。

  3. 登录ECS实例,检查服务状态:

    # 检查 Kafka Manager 进程
    ps -ef | grep kafka-manager
    # 检查 9000 端口监听
    netstat -tlnp | grep 9000
  4. 查看 UserData 执行日志:

    cat /var/log/messages | grep cloud-init

外部应用无法连接 Kafka Broker

按以下顺序排查:

  1. 检查安全组:确认安全组入方向规则已放行 Kafka 监听端口(默认 TCP 9092)。

  2. 登录ECS实例,检查 advertised.listeners 配置是否包含 ECS 的公网访问地址:

    grep "advertised.listeners" /home/software/kafka/config/server.properties
  3. 如果从 VPC 外部连接,advertised.listeners 需要配置为 EIP 地址。

相关文档