sleighzy.kafka

Apache Kafka

Lint Code Base Molecule

Apache Kafka 3.5.1 をインストールして設定するための Ansible ロール

Apache Kafka は、発行-購読型のトピックを使用した分散イベントストリーミングプラットフォームです。アプリケーションやストリーミングコンポーネントは、これらのトピックにサブスクライブすることでメッセージを生成し、消費できます。Kafka は非常に高速で、数千のクライアントから毎秒メガバイトの読み書きを処理します。メッセージは永続化され、データ損失を防ぐために複製されます。データストリームはパーティション分けされ、ダウンタイムなしに弾力的にスケールできます。

警告

この Ansible ロールは、古いバージョンの Kafka からのアップグレードの移行プロセスには対応していません。ロールを実行する前に、アップグレードの文書を読み、該当する設定ファイルを更新してください。

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

例えば、アップグレード方法によっては、server.properties ファイルに次のプロパティを追加する必要があります。

  • 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 から使用できます。

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 関連の変数は log4j.yml を参照してください。

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 ブローカー 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

例のプレイブック

下記の内容をプレイブックに追加して、 kafka-nodes グループに属するホストに対してこのロールを実行します。

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

リンティング

リンティングは ansible-lint を使って行うべきです。

pip3 install ansible-lint --user

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

テスト

このモジュールは Ansible Molecule テストフレームワークを使用しています。このテストスイートは、Docker コンテナ内で動作する3ノードの Kafka と ZooKeeper クラスターを作成します。それぞれのコンテナは異なる OS を実行し、この Ansible ロールのサポートされるプラットフォームをテストします。

[Molecule インストールガイド] に従い、これを仮想環境を使って行うべきです。以下のコマンドは、Python 仮想環境を作成し、Molecule と Docker ドライバをインストールします。

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

プレイブックを実行し、テストを行います。Molecule がテストを実行する前に、リンティングエラーを修正する必要があります。これにより、すべてのテストが実行され、Docker コンテナが破棄されます。

molecule test

以下のコマンドは、テストなしでプレイブックを実行するために使用できます。このコマンドは、ロールを変更したときに何度でも実行でき、操作が冪等であることを確認します。

molecule converge

以下のコマンドは、すべてを破棄せずにテストを実行するために使用できます。コマンド molecule verify は、各テスト実行で繰り返し実行できます。

molecule create
molecule converge
molecule verify

Molecule テストと Docker コンテナを破棄します。

molecule destroy

ライセンス

MIT License

プロジェクトについて

Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu

インストール
ansible-galaxy install sleighzy.kafka
ライセンス
mit
ダウンロード
7.1k
所有者