AMQ Streams on OpenShift の評価
OpenShift Container Platform 上で AMQ Streams 1.8 を使用
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。これは大規模な取り組みであるため、これらの変更は今後の複数のリリースで段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージをご覧ください。
第1章 AMQ Streams の概要
AMQ Streams は、OpenShift クラスターで Apache Kafka を実行するプロセスを簡素化します。
本ガイドでは、AMQ Streams の本番環境を評価する手順を説明します。手順では、AMQ Streams デプロイメントをできるだけ早く稼働する方法を説明します。
AMQ Streams を試す前に、その機能と使用方法を理解しておくと便利です。本章では、Kafka の主な概念を紹介し、AMQ Streams Operator の概要についても取り上げます。
Operator は、OpenShift アプリケーションのパッケージ化、デプロイメント、および管理を行う方法です。AMQ Streams Operator は OpenShift の機能を拡張し、Kafka デプロイメントに関連する共通タスクや複雑なタスクを自動化します。Kafka 操作の情報をコードに実装することで、Kafka の管理タスクは簡素化され、必要な手動の作業が少なくなります。
1.1. Kafka の機能
Kafka の基盤のデータストリーム処理機能とコンポーネントアーキテクチャーによって以下が提供されます。
- スループットが非常に高く、レイテンシーが低い状態でデータを共有するマイクロサービスおよびその他のアプリケーション。
- メッセージの順序の保証。
- アプリケーションの状態を再構築するためにデータストレージからメッセージを巻き戻し/再生。
- キーバリューログの使用時に古いレコードを削除するメッセージコンパクション。
- クラスター設定での水平スケーラビリティー。
- 耐障害性を制御するデータのレプリケーション。
- 即座にアクセスするために大容量のデータを保持。
1.2. Kafka のユースケース
Kafka の機能は、以下に適しています。
- イベント駆動型のアーキテクチャー。
- アプリケーションの状態変更をイベントのログとしてキャプチャーするイベントソーシング。
- メッセージのブローカー。
- Web サイトアクティビティーの追跡。
- メトリクスによるオペレーションの監視。
- ログの収集および集計。
- 分散システムのログのコミット。
- アプリケーションがリアルタイムでデータに対応できるようにするストリーム処理。
1.3. AMQ Streams による Kafka のサポート
AMQ Streams は、Kafka を OpenShift で実行するためのコンテナーイメージおよび Operator を提供します。AMQ Streams Operator は、AMQ Streams の実行に必要です。AMQ Streams で提供される Operator は、Kafka を効果的に管理するために、専門的なオペレーション情報で目的に合うよう構築されています。
Operator は以下のプロセスを単純化します。
- Kafka クラスターのデプロイおよび実行。
- Kafka コンポーネントのデプロイおよび実行。
- Kafka へアクセスするための設定。
- Kafka へのアクセスをセキュア化。
- Kafka のアップグレード。
- ブローカーの管理。
- トピックの作成および管理。
- ユーザーの作成および管理。
1.4. Operator
AMQ Streams は、OpenShift クラスター内で実行中の Kafka クラスターを管理するための Operator を提供します。
- Cluster Operator
- Apache Kafka クラスター、Kafka Connect、Kafka MirrorMaker、Kafka Bridge、Kafka Exporter、および Entity Operator をデプロイおよび管理します。
- Entitiy Operator
- Topic Operator および User Operator を構成します。
- Topic Operator
- Kafka トピックを管理します。
- User Operator
- Kafka ユーザーを管理します。
Cluster Operator は、Kafka クラスターと同時に、Topic Operator および User Operator を Entity Operator 設定の一部としてデプロイできます。
AMQ Streams アーキテクチャー内の Operator
1.5. 本書の表記慣例
置き換え可能なテキスト
本書では、置き換え可能なテキストは、monospace
フォントのイタリック体、大文字、およびハイフンで記載されています。
たとえば、以下のコードでは MY-NAMESPACE
を namespace の名前に置き換えます。
sed -i 's/namespace: .*/namespace: MY-NAMESPACE/' install/cluster-operator/*RoleBinding*.yaml
第2章 AMQ Streams の評価
本章の手順では、AMQ Streams の機能を評価する簡単な方法を説明します。
AMQ Streams をインストールし、トピックからメッセージの送受信を開始するには、指定の順序で手順にしたがいます。
- 必要な前提条件があることを確認します。
- AMQ Streams をインストールします。
- Kafka クラスターを作成します。
- Kafka クラスターにセキュアにアクセスするための認証の有効にします。
- Kafka クラスターにアクセスし、メッセージを送受信します。
前提条件を確認し、本章に指定されている順序でタスクを行うようにしてください。
2.1. 前提条件
- AMQ Streams をデプロイする OpenShift Container Platform クラスター (4.6 および 4.8) が稼働している必要があります。
- AMQ Streams のダウンロードサイト にアクセスできる必要があります。
2.2. AMQ Streams のダウンロード
ZIP ファイルには、AMQ Streams のインストールに必要なリソースと、設定の例が含まれています。
手順
サブスクリプションがアクティベートされ、システムが登録されていることを確認します。
カスタマーポータルを使用して Red Hat サブスクリプションをアクティブ化し、システムを登録する方法は、付録A サブスクリプションの使用 を参照してください。
-
AMQ Streams のダウンロードサイト から
amq-streams-x.y.z-ocp-install-examples.zip
ファイルをダウンロードします。 ファイルを任意の場所で展開します。
- Windows または Mac の場合: ZIP ファイルをダブルクリックして ZIP アーカイブの内容を展開します。
- Red Hat Enterprise Linux の場合: ターゲットマシンでターミナルウィンドウを開き、ZIP ファイルがダウンロードされた場所に移動します。
以下のコマンドを使用して、ZIP ファイルを展開します。
unzip amq-streams-x.y.z-ocp-install-examples.zip
2.3. AMQ Streams のインストール
AMQ Streams をデプロイメントに必要な CRD (Custom Resource Definition) でインストールします。
このタスクでは、デプロイメント用にクラスターで namespace を作成します。namespace を使用して関数を分離することが推奨されます。
前提条件
-
インストールには、
cluster-admin
ロール (system:admin
など) を持つユーザーが必要です。
手順
クラスター管理者権限を持つアカウントを使用して OpenShift クラスターにログインします。
例を以下に示します。
oc login -u system:admin
AMQ Streams Kafka Cluster Operator に新規の
kafka
(プロジェクト) namespace を作成します。oc new-project kafka
AMQ Streams Kafka Cluster Operator をインストールする新しい
kafka
namespace を参照するインストールファイルを変更します。注記デフォルトでは、ファイルは
myproject
namespace で動作します。- Linux の場合は、以下を使用します。
sed -i 's/namespace: .*/namespace: kafka/' install/cluster-operator/*RoleBinding*.yaml
- Mac の場合は、以下を使用します。
sed -i '' 's/namespace: .*/namespace: kafka/' install/cluster-operator/*RoleBinding*.yaml
CRD を管理するために、CRD およびロールベースアクセス制御 (RBAC) リソースをデプロイします。
oc project kafka oc apply -f install/cluster-operator/
Kafka クラスターをデプロイする新しい
my-kafka-project
namespace を作成します。oc new-project my-kafka-project
管理者でないユーザー
developer
にmy-kafka-project
へのアクセス権限を付与します。以下に例を示します。
oc adm policy add-role-to-user admin developer -n my-kafka-project
STRIMZI_NAMESPACE 環境変数の値を設定し、
my-kafka-project
namespace を監視する権限を Cluster Operator に付与します。oc set env deploy/strimzi-cluster-operator STRIMZI_NAMESPACE=kafka,my-kafka-project -n kafka
oc apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-kafka-project
oc apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-kafka-project
oc apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-kafka-project
このコマンドによって、Cluster Operator が Kafka クラスターにアクセスするための権限を付与するロールバインディングが作成されます。
新しいクラスターロール
strimzi-admin
を作成します。oc apply -f install/strimzi-admin
ロールを管理者でないユーザー
developer
に追加します。oc adm policy add-cluster-role-to-user strimzi-admin developer
2.4. クラスターの作成
AMQ Streams がインストールされている状態で、Kafka クラスターを作成し、クラスター内でトピックを作成します。
クラスターの作成時に、AMQ Streams のインストール時にデプロイされた Cluster Operator によって新規の Kafka リソースが監視されます。
前提条件
- Kafka クラスターでは、Cluster Operator がデプロイされている必要があります。
- トピックでは、Kafka クラスターが稼働中である必要があります。
手順
ユーザー
developer
としてmy-kafka-project
namespace にログインします。以下に例を示します。
oc login -u developer oc project my-kafka-project
新規ユーザーが OpenShift Container Platform にログインした後に、そのユーザーのアカウントが作成されます。
3 つの Zookeeper ノードと 3 つのブローカーノードで、新しい
my-cluster
Kafka クラスターを作成します。-
ephemeral
ストレージを使用します。 route
を使用するよう設定された外部リスナーを使用して、OpenShift クラスター外部の Kafka クラスターを公開します。cat << EOF | oc create -f - apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 listeners: - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: true - name: external port: 9094 type: route 1 tls: true storage: type: ephemeral zookeeper: replicas: 3 storage: type: ephemeral entityOperator: topicOperator: {} EOF
-
クラスターがデプロイされるまで待機します。
oc wait my-kafka-project/my-cluster --for=condition=Ready --timeout=300s -n kafka
クラスターの準備ができたら、パブリッシュするトピックを作成し、外部クライアントからサブスクライブします。
my-cluster
Kafka クラスターで 3 つのレプリカと 3 つのパーティションを使用して、以下のmy-topic
カスタムリソース定義を作成します。cat << EOF | oc create -f - apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: name: my-topic labels: strimzi.io/cluster: "my-cluster" spec: partitions: 3 replicas: 3 EOF
2.5. クラスターへのアクセス
route
がクラスターへの外部アクセスに使用される場合、ブローカーとクライアント間で TLS (Transport Layer Security) 暗号化を有効にするためにクラスターの CA 証明書が必要になります。
前提条件
- OpenShift クラスター内で Kafka クラスターが稼働中である必要があります。
- Cluster Operator も稼働している必要があります。
手順
ブートストラップ
route
のアドレスを見つけます。oc get routes my-cluster-kafka-bootstrap -o=jsonpath='{.status.ingress[0].host}{"\n"}'
このアドレスと Kafkaクライアントの 443 番ポートをブートストラップアドレスとして使用します。
ブローカーの認証局の公開証明書を抽出します。
oc extract secret/my-cluster-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
信頼できる証明書をトラストストアにインポートします。
keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt
メッセージの送受信を開始する準備が整いました。
2.6. トピックからのメッセージの送受信
クラスター外部のメッセージを my-topic
から送受信すると、AMQ Streams インストールをテストできます。
ターミナルを使用して、ローカルマシンで Kafka プロデューサーおよびコンシューマーを実行します。
前提条件
- AMQ Streams が OpenShift クラスターにインストールされていることを確認します。
- メッセージを送受信するには、Zookeeper および Kafka が稼働している必要があります。
- クラスターにアクセスするためにクラスター CA 証明書 が必要です。
- AMQ Streams のダウンロードサイト から最新バージョンの Red Hat AMQ Stremas アーカイブにアクセスできる必要があります。
手順
AMQ Streams のダウンロードサイト から最新バージョンの AMQ Stremas アーカイブ (
amq-streams-x.y.z-bin.zip
) をダウンロードします。ファイルを任意の場所で展開します。
ターミナルを開き、トピック
my-topic
と TLS の認証プロパティーを使用して Kafka コンソールプロデューサーを起動します。bin/kafka-console-producer.sh --broker-list ROUTE-ADDRESS:443 --producer-property security.protocol=SSL --producer-property ssl.truststore.password=password --producer-property ssl.truststore.location=./client.truststore.jks --topic my-topic
- プロデューサーが実行しているコンソールにメッセージを入力します。
- Enter を押してメッセージを送信します。
新しいターミナルタブまたはウィンドウを開き、Kafka コンソールコンシューマーを起動してメッセージを受信します。
bin/kafka-console-consumer.sh --bootstrap-server ROUTE-ADDRESS:443 --consumer-property security.protocol=SSL --consumer-property ssl.truststore.password=password --consumer-property ssl.truststore.location=./client.truststore.jks --topic my-topic --from-beginning
- コンシューマーコンソールに受信メッセージが表示されることを確認します。
- Crtl+C を押して、Kafka コンソールプロデューサーとコンシューマーを終了します。
付録A サブスクリプションの使用
AMQ Streams は、ソフトウェアサブスクリプションから提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。
アカウントへのアクセス
- access.redhat.com に移動します。
- アカウントがない場合は、作成します。
- アカウントにログインします。
サブスクリプションのアクティベート
- access.redhat.com に移動します。
- サブスクリプション に移動します。
- Activate a subscription に移動し、16 桁のアクティベーション番号を入力します。
Zip および Tar ファイルのダウンロード
zip または tar ファイルにアクセスするには、カスタマーポータルを使用して、ダウンロードする関連ファイルを検索します。RPM パッケージを使用している場合は、この手順は必要ありません。
- ブラウザーを開き、access.redhat.com/downloads で Red Hat カスタマーポータルの Product Downloads ページにログインします。
- INTEGRATION AND AUTOMATION カテゴリーで Red Hat AMQ Streams エントリーを見つけます。
- 必要な AMQ Streams 製品を選択します。Software Downloads ページが開きます。
- コンポーネントの Download リンクをクリックします。
改訂日時: 2021-08-22 20:58:19 +1000