はじめに
Azure Event Hubsとは
Azure Event Hubs は、ビッグデータのストリーミングプラットフォームとなるイベントインジェストサービスです。
Apache Kafka(Kafka)とは
Apache Kafka(以降、Kafka)はスケーラビリティに優れた分散メッセージキューです。
本記事の目的
今回はAzure Event HubsをKafkaのBrokerとしてメッセージのやりとりを試します。 「1. Azure Event HubsをKafkaのBrokerにする手順(簡単)」と「2. 認証関係」をまとめたいと思います。
具体的な手順
手順 | タスク |
---|---|
1 | Kafka Brokerの準備 (Azure Event Hubs) |
2 | Kafka の準備 |
3 | Azure CLI の準備 |
4 | Kafka CLI の準備 |
5 | Azure Event Hubsのリソース情報の確認 |
6 | 共有アクセスポリシーの取得 |
7 | 接続文字列の取得 |
8 | jaas.conf のパス指定 |
9 | jaas.conf の設定(接続文字列の書き込み) |
10 | Producer 接続 |
11 | Consumer 接続 |
12 | メッセージの送信 |
1. Kafka Brokerの準備 (Azure Event Hubs)
通常のEvent Hubsの作成と特に何も変わりません。 価格レベルをStandardレベルにすると、Kafkaエンドポイントが自動的に有効になります。
2. Kafka の準備
Homebrew を利用してインストール
$ brew install kafka
バージョン確認
$ kafka-topics --version
2.5.0 (Commit:66563e712b0b9f84)
3. Azure CLI の準備
Homebrew を利用してインストール
$ brew update && brew install azure-cli
バージョン確認
$ az --version
azure-cli 2.14.0 *
4. Kafka CLI の準備
Azure/azure-event-hubs-for-kafkaをcloneする
$ git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
$ cd azure-event-hubs-for-kafka/quickstart/kafka-cli
5. Azure Event Hubsのリソース情報の確認
作業の前に、リソースグループとネームスペースを確認する。
6. 共有アクセスポリシーの取得
Azure CLIでサインイン
$ az login
この後、ブラウザの認証画面に画面遷移します。
共有アクセスポリシーの取得
$ az eventhubs namespace authorization-rule list --resource-group {リソースグループ} --namespace-name {ネームスペース}
結果
name が共有アクセスポリシー名になります。
[
{
"id": "**********************************",
"location": "Japan East",
"name": "**********************************",
"resourceGroup": "**********************************",
"rights": [
"Listen",
"Manage",
"Send"
],
"type": "Microsoft.EventHub/Namespaces/AuthorizationRules"
}
]
7. 接続文字列の取得
接続文字列の取得
$ az eventhubs namespace authorization-rule keys list --resource-group {リソースグループ} --namespace-name {ネームスペース} --name {共有アクセスポリシー名}
結果
primaryConnectionString が接続文字列情報
{
"aliasPrimaryConnectionString": null,
"aliasSecondaryConnectionString": null,
"keyName": "***************************",
"primaryConnectionString": "***************************",
"primaryKey": "***************************",
"secondaryConnectionString": "***************************",
"secondaryKey": "***************************"
}
8. jaas.confのパス指定
Apache Kafukaの認証用ファイルのパスを指定する。
# ローカルのjaas.confのパスを設定してください。
$ export KAFKA_OPTS="-Djava.security.auth.login.config=***/azure-event-hubs-for-kafka/quickstart/kafka-cli/jaas.conf"
9. jaas.confの設定(接続文字列の書き込み)
接続文字列情報(primaryConnectionString)をjaas.confに書き込む。
# passwordの先に接続文字列情報を記載する
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="****";
};
10. Producer 接続
Producer起動してメッセージを送信
せっかくなので、クリスマスっぽいメッセージを。
$ kafka-console-producer --topic {トピック名} --broker-list {ネームスペース}.servicebus.windows.net:9093 --producer.config client_common.properties
>雨は夜更け過ぎに〜雪へと変わるだろう〜
>Silent night〜Holy night〜
>きっと君は来ない〜ひとりきりのクリスマス・イブ
>Silent night〜Holy night〜
11. Consumer 接続
$ kafka-console-consumer --topic {トピック名} --bootstrap-server {ネームスペース}.servicebus.windows.net:9093 --consumer.config client_common.properties
雨は夜更け過ぎに〜雪へと変わるだろう〜
Silent night〜Holy night〜
きっと君は来ない〜ひとりきりのクリスマス・イブ
Silent night〜Holy night〜
12. メッセージの送信
Event Hubsのメトリクスを確認する。
送信確認ができました。
Kafka Brokerの準備が非常に楽でしたね。
最後までありがとうござました。良いクリスマスをです。
Junkins
JenkinsじゃないよJunkinsです。紛らわしくてすいません。 元々PHPerでしたが、最近Rubyistになりました。
Related Posts
yukabeoka
2021/09/07
Yuhei Okazaki
2021/04/26