dragomirr.kafka
Ansible kafka 角色
这是一个用于在 Debian 和 RedHat 系统上安装 Kafka(使用 KRaft 模式)的 Ansible 角色。KRaft 在 3.3.1 版本中被标记为生产就绪,因此该角色应仅用于部署版本为 3.3.1 或更高版本的 Kafka。
本角色已在 Ubuntu 22.04 和 AlmaLinux 8 上测试,但应该能够在大多数发行版中工作,特别是当不使用该角色安装依赖项时。请参见 kafka_install_dependencies
变量。
有关更多信息,请查看 变更日志。
需求
- 运行 Kafka 的服务器必须是 x86_64 架构
- Ansible 2.15 -- 未测试其他版本,但可能与 2.10 及以上版本有效
- 已安装 Java -- 版本 8(已弃用)、11 或 17。可以通过
apt install openjdk-17-jre-headless
或dnf install java-17-openjdk-headless
安装 - 对于 Ubuntu,需要
acl
包中的 setfacl --apt install acl
角色变量
必需:
kafka_node_id
-- Kafka 节点 ID。必须是整数或零,并且每个主机必须唯一。
可选:
kafka_topics
-- Kafka 主题列表及其设置。kafka_install_dependencies
-- 是否应安装 Java 和acl
(用于基于 Debian 的发行版)。当前可以通过将该设置为true
来安装。kafka_config_path
-- 如果未设置,配置将部署到 Kafka 主目录。请勿设置为默认配置位置,因为后续的角色运行将不具备幂等性,并会导致 Kafka 重启。kafka_additional_config
-- 指定角色未定义的配置参数的映射。kafka_opts
-- 指定启动时运行的 Kafka 选项的列表或字符串。根据该变量,将创建KAFKA_OPTS
环境变量。
依赖
当 kafka_install_dependencies=true
时没有依赖。在其他情况下,请查看需求部分。
示例剧本
使用 ansible-galaxy 安装角色 ansible-galaxy install dragomirr.kafka
- hosts: servers
roles:
- role: dragomirr.kafka
# 如果只有一个 Kafka 节点,则在剧本中设置 kafka_node_id 有效
# 如果有多个 Kafka 节点,则需要为每个节点设置唯一的 kafka_node_id
kafka_node_id: 0
kafka_heap_size: 2G
kafka_install_dependencies: true
kafka_topics:
- name: topic1
- name: topic2
replication_factor: 1
partitions: 10
# 添加角色未定义的配置
kafka_additional_config:
message.max.bytes: 10000
# 添加 Kafka 启动选项
kafka_opts:
- -XX:NewSize=256m
许可证
GPL3
测试
使用 molecule 结合 virtualbox 和 vagrant 进行测试。
测试包括 3 个场景:
- 默认场景,使用 1 个实例。
- 集群场景,使用 3 个实例,所有实例均为控制器和代理角色。
- 集群综合场景,使用 6 个实例,其中 3 个为代理和控制器角色,3 个仅为代理角色。