sleighzy.kafka
Apache Kafka
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
- Java 8(已弃用)/ 11 / 17
如果需要,可以使用下面的 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