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-headlessdnf 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 结合 virtualboxvagrant 进行测试。

测试包括 3 个场景:

  • 默认场景,使用 1 个实例。
  • 集群场景,使用 3 个实例,所有实例均为控制器和代理角色。
  • 集群综合场景,使用 6 个实例,其中 3 个为代理和控制器角色,3 个仅为代理角色。
关于项目

Install Apache Kafka with KRaft mode

安装
ansible-galaxy install dragomirr.kafka
许可证
Unknown
下载
2.8k
拥有者