ksqlDB と Confluent Control Center の統合¶
Confluent Control Center により提供される ksqlDB ユーザーインターフェイスを使用してイベントストリーミングアプリケーションを開発することができます。Control Center では、Apache Kafka® トピックを作成し、ksqlDB クエリエディターにより永続的なクエリを作成することができます。Confluent Platform をインストールすると、デフォルトで ksqlDB サーバーが Control Center と統合されており、別のホスト上で実行されている他の ksqlDB サーバーインスタンスとやり取りするように Control Center を構成することができます。

ksqlDB および Control Center の構成設定¶
ksqlDB サーバーと Control Center の構成ファイルでプロパティを割り当てることにより、ksqlDB と Control Center の統合をセットアップします。
- デフォルトでは、ksqlDB サーバーの構成ファイルは
<path-to-confluent>/etc/ksqldb/ksql-server.properties
にインストールされています。 - デフォルトでは、Control Center の構成ファイルは
<path-to-confluent>/etc/confluent-control-center/control-center.properties
にインストールされています。
Confluent Platform の他のコンポーネントとセキュアに通信するように ksqlDB サーバーをセットアップすることができます。詳細については、「ksqlDB のセキュリティを構成する」を参照してください。
注釈
Control Center から ksqlDB クエリを実行するには、ksqlDB と Control Center の両方が、HTTP または HTTPS のいずれかで動作している必要があります。
ksqlDB および Control Center のネットワーク構成¶
ksqlDB と Control Center の間のネットワーク接続をセットアップするには、これらの構成設定を使用します。
- ksqlDB サーバーの構成ファイルで、listeners プロパティに ksqlDB サーバーの REST API エンドポイントの IP アドレスを設定します。一般的な値は
http://0.0.0.0:8088
およびhttp://localhost:8088
です。 - Control Center の構成ファイルで、
confluent.controlcenter.ksql.<ksql-cluster-name>.url
プロパティに、<ksql-cluster-name>
により指定された ksqlDB のホスト名とリスナーポートを設定します。この設定は、通常の HTTP リクエストに関して Control Center が ksqlDB サーバーと通信する方法を指定します。詳細については、 ksqlDB 設定 を参照してください。 - ksqlDB サーバーが外部で解決したりルーティングしたりできない内部 DNS を介して通信する場合は、Control Center の構成ファイルで
confluent.controlcenter.ksql.<ksql-cluster-name>.advertised.url
プロパティを設定します。この設定は、ウェブソケットリクエストに関してブラウザが ksqlDB サーバーと通信する方法を指定します。詳細については、 ksqlDB 設定 を参照してください。
ksqlDB サーバーと Confluent Control Center が同じホスト上で実行されている場合は、Confluent Platform のセットアップにより定義されたデフォルトの構成を使用できます。
ksqlDB と Control Center が異なるホスト上で実行されている場合¶
ksqlDB サーバーと Control Center が異なるホスト上で実行されている場合は、ksqlDB サーバーと Control Center が確実に通信できる構成を指定する必要があります。これは、ksqlDB サーバーと Control Center が以下のような場合に必要となります。
- 異なるコンテナーで実行されている。
- 異なる仮想マシンで実行されている。
- 仮想プライベートネットワーク(VPN)を介して通信する。
- 異なる URL を使用する。例として ksqlDB サーバーホストが ksqlDB サーバーのプライベート URL とは異なるパブリック URL を公開する場合など。
注釈
ksqlDB と Control Center が仮想プライベートネットワーク(VPN)を介して通信する場合は、Control Center がユーザーのクエリをプロキシしますが、クエリの結果は Control Center を介さずに ksqlDB サーバーから直接ストリーミングされてブラウザへ返されます。VPN を介する場合、アドバタイズされる URL は localhost
ではありません。その代わりに、リモートサーバーのホスト名となります。
別個のホスト上で実行されている場合は、以下の構成プロパティを割り当てて ksqlDB サーバーと Control Center を統合します。
ksqlDB サーバーの構成¶
ksqlDB サーバーの構成ファイルで、listeners
を設定してすべてのインターフェイスをバインドします。
listeners=http://0.0.0.0:8088
以下の CORS 設定を ksqlDB サーバーの構成ファイルに追加することにより、Confluent Control Center UI からの送信元間リクエストを受け付けるように ksqlDB を構成します。
access.control.allow.origin=*
access.control.allow.methods=GET,POST,HEAD
access.control.allow.headers=X-Requested-With,Content-Type,Accept,Origin,Authorization
Control Center の構成¶
Control Center 構成ファイルで confluent.controlcenter.ksql.<ksql-cluster-name>.url
に ksqlDB サーバーホスト用の URL のリストを設定します。これらは、Control Center がインストールされているホストから到達可能であることが必要です。<ksql-cluster-name>
は、ksqlDB クラスターを識別するために Control Center で使用する名前で置き換えます。
confluent.controlcenter.ksql.<ksql-cluster-name>.url=<internally-resolvable-hostname1>, <internally-resolvable-hostname2>, ...
また confluent.controlcenter.ksql.<ksql-cluster-name>.advertised.url
には ksqlDB サーバーホストにより公開されるパブリック IP アドレスを設定します。これらは、外部的に利用可能な DNS を介してブラウザーが解決可能な URL のリストであることが必要です。
confluent.controlcenter.ksql.<ksql-cluster-name>.advertised.url=<externally-resolvable-hostname1>, <externally-resolvable-hostname2>, ...
Control Center の構成は ksqlDB サーバーの listeners
の値と一致している必要があります。
curl
コマンドを使用して、これらの URL が到達可能であるかどうかを確認します。デプロイによっては、2 つの異なるホストから確認する必要があります。
- Control Center が実行されているホストから確認します。これは
confluent.controlcenter.ksql.<ksql-cluster-name>.url
の設定に関連しています。 - ブラウザーが実行されているホストから確認します。これは
confluent.controlcenter.ksql.<ksql-cluster-name>.advertised.url
の設定に関連しています。
両方のホストで、以下のコマンドを実行して ksqlDB サーバーのクラスターが到達可能であることを確認します。hostname
の値は confluent.controlcenter.ksql.<ksql-cluster-name>.url
のリストおよび confluent.controlcenter.ksql.<ksql-cluster-name>.advertised.url
構成設定に含まれているホストのいずれかです。
curl http://<hostname>:8088/info \
{"KsqlServerInfo":{"version":"6.1.5","kafkaClusterId":"<ksql-cluster-name>","ksqlServiceId":"default_"}}%
注釈
ksqlDB の URL 設定でポートを指定する必要があります。たとえば、パブリック URL が http://ksql-server-677739697.us-east-1.elb.amazonaws.com:80
の場合は、必ずポート 80
を設定に含めます。そうしなければ、Control Center から ksqlDB サーバーへの接続は正しく行われません。
ksqlDB と Confluent Control Center の間のネットワーク接続の確認¶
ウェブブラウザーを使用して、アドバタイズされている URL の構成を確認します。ブラウザーから http://<ksql.advertised.url>/info
の info
エンドポイントへ到達可能であることを確認します。構成が正しくないためにブラウザーが ksqlDB サーバーホストの URL を解決できなければ、Websocket error when communicating with <ksql.advertised.url>
というエラーが表示されます。
ksqlDB サーバーのネットワークバインディングを確認する¶
Control Center が ksqlDB サーバーインスタンスに接続しない場合は、ksqlDB サーバーホスト上でのネットワークバインディングを確認します。
sudo netstat -plnt|grep $(ps -ef|grep KsqlServerMain|grep -v grep|awk '')
ksqlDB サーバーが localhost
のみにバインドされている場合、出力は以下のようになります。
tcp6 0 0 127.0.0.1:8088 :::* LISTEN 64383/java
tcp6 0 0 :::34791 :::* LISTEN 64383/java
0.0.0.0
がリストされていない場合は ksqlDB サーバーが外部接続を受け付けていません。ksql-server.properties
ファイルに listeners=http://0.0.0.0:8088
を設定して ksqlDB サーバーを再起動します。