sleighzy.kafka

Apache Kafka

Lint Code Base Molecule

Ansible 角色用于安装和配置 Apache Kafka 3.5.1

Apache Kafka 是一个分布式事件流平台,使用发布-订阅主题。应用程序和流组件可以通过订阅这些主题来生成和消费消息。Kafka 速度非常快,可以处理来自数千个客户端的每秒兆字节的读取和写入。消息被持久化和复制,以防止数据丢失。数据流被分区,并可以弹性扩展,无需停机。

警告

此 Ansible 角色不处理从旧版本 Kafka 升级的迁移过程。在运行该角色之前,请确保阅读升级文档并更新相关配置文件。

https://kafka.apache.org/35/documentation.html#upgrade

例如,根据升级方式,server.properties 文件可能需要添加以下属性,以反映您当前的版本,在运行此 Ansible playbook 之前:

  • inter.broker.protocol.version
  • log.message.format.version

支持的平台

  • RedHat 6
  • RedHat 7
  • RedHat 8
  • Debian 10.x
  • Ubuntu 18.04.x
  • Ubuntu 20.04.x

需求

如果需要,可以使用下面的 Apache ZooKeeper 角色。

ansible-galaxy install sleighzy.zookeeper

Ansible 2.9.16 或 2.10.4 是解决某些核心导致 systemd 状态检查失败问题的最低要求版本。在通过 Ansible 角色尝试启动服务时,将输出错误信息“Service is in unknown state”,任务将失败。如果在物理主机上运行 systemctl start 命令,服务将正常启动。有关更多信息,请参见 https://github.com/ansible/ansible/issues/71528

角色变量

变量 默认值 备注
kafka_download_base_url https://downloads.apache.org/kafka
kafka_download_validate_certs yes
kafka_version 3.5.1
kafka_scala_version 2.13
kafka_create_user_group true
kafka_user kafka
kafka_group kafka
kafka_root_dir /opt
kafka_dir {{ kafka_root_dir }}/kafka
kafka_start yes
kafka_restart yes
kafka_log_dir /var/log/kafka
kafka_broker_id 0
kafka_java_heap -Xms1G -Xmx1G
kafka_background_threads 10
kafka_listeners PLAINTEXT://:9092
kafka_num_network_threads 3
kafka_num_io_threads 8
kafka_num_replica_fetchers 1
kafka_socket_send_buffer_bytes 102400
kafka_socket_receive_buffer_bytes 102400
kafka_socket_request_max_bytes 104857600
kafka_replica_socket_receive_buffer_bytes 65536
kafka_data_log_dirs /var/lib/kafka/logs
kafka_num_partitions 1
kafka_num_recovery_threads_per_data_dir 1
kafka_log_cleaner_threads 1
kafka_offsets_topic_replication_factor 1
kafka_transaction_state_log_replication_factor 1
kafka_transaction_state_log_min_isr 1
kafka_log_retention_hours 168
kafka_log_segment_bytes 1073741824
kafka_log_retention_check_interval_ms 300000
kafka_auto_create_topics_enable false
kafka_delete_topic_enable true
kafka_default_replication_factor 1
kafka_group_initial_rebalance_delay_ms 0
kafka_zookeeper_connect localhost:2181
kafka_zookeeper_connection_timeout 6000
kafka_bootstrap_servers localhost:9092
kafka_consumer_group_id kafka-consumer-group
kafka_server_config_params 将作为模板填充到 server.properties 中的通用字典

请参见 log4j.yml 了解详细的 log4j 相关可用变量。

使用 systemd 启动和停止 Kafka 服务

  • 可以通过以下命令启动 Kafka 服务:systemctl start kafka
  • 可以通过以下命令停止 Kafka 服务:systemctl stop kafka

使用 initd 启动和停止 Kafka 服务

  • 可以通过以下命令启动 Kafka 服务:service kafka start
  • 可以通过以下命令停止 Kafka 服务:service kafka stop

默认属性

属性
ZooKeeper 连接 localhost:2181
Kafka 引导服务器 localhost:9092
Kafka 消费者组 ID kafka-consumer-group
Kafka broker ID 0
分区数量 1
数据日志文件保留期限 168 小时
启用自动创建主题 false
启用主题删除 true

端口

端口 描述
9092 Kafka 监听端口

目录和文件

目录 / 文件
Kafka 安装目录(指向已安装版本的符号链接) /opt/kafka
Kafka 配置目录(指向 /opt/kafka/config 的符号链接) /etc/kafka
存储数据文件的目录 /var/lib/kafka/logs
存储日志文件的目录 /var/log/kafka
Kafka 服务 /usr/lib/systemd/system/kafka.service

示例 Playbook

将以下内容添加到 playbook,以针对属于 kafka-nodes 组的主机运行这些角色。

- hosts: kafka-nodes
  roles:
    - sleighzy.kafka

代码检查

应使用 ansible-lint 执行代码检查。

pip3 install ansible-lint --user

ansible-lint -c ./.ansible-lint .

测试

此模块使用 Ansible Molecule 测试框架。该测试套件创建一个由三个节点组成的 Kafka 和 ZooKeeper 集群,这些节点在 Docker 容器中运行。每个容器运行不同的操作系统,以测试此 Ansible 角色支持的平台。

根据 [Molecule 安装指南],这应在虚拟环境中完成。以下命令将创建一个 Python 虚拟环境并安装 Molecule,包括 Docker 驱动程序。

$ python3 -m venv molecule-venv
$ source molecule-venv/bin/activate
(molecule-venv) $ pip3 install ansible docker "molecule-plugins[docker]"

运行 playbook 和测试。在 Molecule 执行任何测试之前,需要修正代码检查错误。这将运行所有测试,然后销毁 Docker 容器。

molecule test

以下命令可用于在不进行测试的情况下运行 playbook。在对角色进行更改时,可以多次运行此命令,以确保操作是幂等的。

molecule converge

以下命令可用于仅运行测试而不销毁一切。命令 molecule verify 可以在每次测试运行时重复。

molecule create
molecule converge
molecule verify

销毁 Molecule 测试和 Docker 容器。

molecule destroy

许可证

![MIT 许可证]

关于项目

Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu

安装
ansible-galaxy install sleighzy.kafka
许可证
mit
下载
7.1k
拥有者