重要
このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。
Cluster Linking の構成、コマンド、管理¶
Looking for Confluent Platform Cluster Linking docs? You are currently viewing Confluent Cloud documentation. If you are looking for Confluent Platform docs, check out Cluster Linking on Confluent Platform.
You can create, view, manage, and delete cluster links using the unified Confluent CLI and the Confluent Cloud Cluster Linking (v3) REST API.
クラスターリンクを作成するための要件¶
クラスターリンクを作成するための要件は次のとおりです。
- 送信先クラスターへのアクセス。クラスターリンクの作成は、送信先クラスターで行います。具体的に必要なセキュリティ認可については、「Confluent Cloud における Cluster Linking のセキュリティ」を参照してください。
- クラスターリンクに割り当てる名前。
- 送信元クラスターのブートストラップサーバーとクラスター ID。
- 送信元クラスターが Confluent Cloud クラスターである場合、次のコマンドで取得できます。
confluent kafka cluster list
: 送信元クラスターの ID を取得します(例:lkc-12345
)。confluent kafka cluster describe <source-cluster-id>
: ブートストラップサーバーを取得します。Endpoint
という行の値が該当します(例:SASL_SSL://pkc-12345.us-west-2.aws.confluent.cloud:9092
)。
- 送信元クラスターが Confluent Platform または Apache Kafka® クラスターの場合、システム管理者がブートストラップサーバーを指定できます。クラスター ID は、
confluent cluster describe
またはzookeeper-shell <bootstrap-server> get /cluster/id 2> /dev/null
で取得できます(例:0gXf5xg8Sp2G4FlxNriNaA
)。 - クラスターリンクが送信元クラスターに対して使用する認証情報。この情報をアップデートすることで、クラスターリンクに使用される認証情報をローテーションできます。詳細については、セキュリティ認証情報の構成に関するセクション を参照してください。
- 送信元クラスターが Confluent Cloud クラスターである場合、次のコマンドで取得できます。
- (省略可)その他クラスターリンクに追加する必要のある構成パラメーター。以下に 列挙されている指定可能な構成 を参照してください。
クラスターリンクを作成するための CLI コマンドまたは API コマンドにこの情報を渡すことになります。
注釈
クラスターリンクの名前、ブートストラップサーバー、送信元クラスター ID、送信先クラスター ID をアップデートすることはできません。これらの値は作成時にのみ設定できます。
CLI を使用したクラスターリンクの管理¶
Confluent Cloud CLI でクラスターリンクを作成または構成するには、設定する必要のある構成を含んだ構成ファイルを作成する必要があります。ファイルには、key=value
形式の構成を 1 行に 1 つずつ入力する必要があります。key
は構成の名前、また、value
は、そのクラスターリンクに設定する値です。以降のコマンドでは、このファイルの場所を <config-file>
としています。
Create a cluster link¶
confluent
CLI でクラスターリンクを作成するには、送信先クラスターで次のコマンドを使用します。
confluent kafka link create <link-name> \
--source-cluster-id <source-cluster-id> \
--source-bootstrap-server <source-bootstrap-server> \
--config-file <config-file> \
--cluster <destination-cluster-id>
Update a cluster link¶
cloud
CLI で既存のクラスターリンクの構成をアップデートするには、送信先クラスターで次のコマンドを使用します。
confluent kafka link update <link-name> --config-file my-update-configs.txt --cluster <destination-cluster-id>
ちなみに
既存のクラスターリンクの構成をアップデートするときには、変更する構成のみを渡します。特に
--config-file
を使用する場合は、構成ファイルの完全なセットを渡すほうが簡単ですが、アップデートする構成のみを含めるように注意してください。たとえば、my-update-configs.txt
には以下のものが含まれる可能性があります。consumer.offset.sync.ms=25384 topic.config.sync.ms=38254
クラスターリンクの構成はさまざまな側面を変更できますが、その 送信元クラスター (ブートストラップサーバー、送信元クラスター ID など)やプレフィックス、リンク名 を変更することはできません。
CLI を使用してクラスターリンクを作成したり構成したりする例は、「Cluster Linking のクイックスタート」のほか、「クラスター、リージョン、クラウド間でのデータの共有」と「ディザスターリカバリとフェイルオーバー」のチュートリアルに記載されています。
List all cluster links going to the destination cluster¶
送信先クラスターに対するすべてのクラスターリンクのリストを表示するには、次のコマンドを使用します。
confluent kafka link list --cluster <destination-cluster-id>
View the configuration for a given cluster link¶
特定のクラスターリンクの構成を表示するには、次のコマンドを使用します。
confluent kafka link describe <link-name> --cluster <destination-cluster-id>
Delete a cluster link¶
クラスターリンクを削除するには、次のコマンドを使用します。
confluent kafka link delete <link-name> --cluster <destination-cluster-id>
ちなみに
confluent kafka cluster use <destination-cluster-id>
コマンドを使用した場合は、送信先クラスターがアクティブクラスターに設定されるので、いずれのコマンドにも --cluster <destination-cluster-id>
を指定する必要はありません。
重要
- When a cluster link is deleted, the history of any
STOPPED
topics is also deleted. If you need theLast Source Fetch Offset
or theStatus Time
of your promoted or failed-over mirror topics, make sure to save those before you delete the cluster link. - You cannot delete a cluster link that still has mirror topics on it (the delete operation will fail).
- If you are using Confluent for Kubernetes (CFK), and you delete your cluster link resource, any mirror topics still attached to that cluster link
will be forcibly converted to regular topics by use of the
failover
API. To learn more, see Modify a mirror topic in Cluster Linking using Confluent for Kubernetes.
REST API を使用したクラスターリンクの管理¶
REST API calls and examples are provided in the reference documentation for the Confluent Cloud Cluster Linking (v3) REST API.
ちなみに
REST API を使用して認証を行う方法については、REST API のドキュメントを参照してください。
Confluent Cloud REST API を使用してクラスターリンクを構成する場合は、JSON フォーマットで構成を渡すことができます。各構成の形式は次のとおりです。
{
"name": "<config-name>",
"value": <config-value>
}
JSON であるため、構成値が文字列である場合は、それを二重引用符で囲む必要があります。次に、JSON ペイロードの configs
引数に名前と値のペアを配列として渡します。
たとえば、この JSON では、すべてのコンシューマーグループを対象にコンシューマーオフセットの同期を、またすべての ACL を対象に ACL の同期を有効にしています。
{
"configs": [
{
"name": "consumer.offset.sync.enable",
"value": "true"
},
{
"name": "consumer.offset.sync.filters",
"value": "{\"groupFilters\": [{\"name\": \"*\",\"patternType\": \"LITERAL\",\"filterType\": \"INCLUDE\"}]}"
},
{
"name": "acl.sync.enable",
"value": "true"
},
{
"name": "acl.filters",
"value": "{ \"aclFilters\": [ { \"resourceFilter\": { \"resourceType\": \"any\", \"patternType\": \"any\" }, \"accessFilter\": { \"operation\": \"any\", \"permissionType\": \"any\" } } ] }"
}
]
}
REST API を使用したクラスターリンクの作成¶
See Create a cluster link in the Confluent Cloud REST API documentation.
REST API を使用してクラスターリンクを作成するには、JSON ペイロードが次の要件を満たしている必要があります。
source_cluster_id
というエントリが実際の送信元クラスターの ID に設定されていることconfigs
配列内のbootstrap.servers
という構成が実際の送信元クラスターのブートストラップサーバーに設定されていることクラスターリンクの セキュリティ構成 が
configs
配列内の構成としてリストされていることちなみに
セキュリティ構成 にはクラウドユーザーの API キーではなく、REST API コマンドを実行する対象のクラスターリソースに関連付けられた API キーとシークレットが含まれている必要があります。リソース固有のキー作成についての詳細は、「リソース別 API キーの作成」を参照してください。
(省略可)``configs`` 配列のその他の構成
次に示したのは、クラスターリンクを作成するリクエストの JSON ペイロードの例です。すべてのコンシューマーグループを対象にコンシューマーオフセットを同期するとともに、すべての ACL を同期するクラスターリンクとなっています。
{
"source_cluster_id": "<source-cluster-id>",
"configs": [
{
"name": "security.protocol",
"value": "SASL_SSL"
},
{
"name": "bootstrap.servers",
"value": "<source-bootstrap-server>"
},
{
"name": "sasl.mechanism",
"value": "PLAIN"
},
{
"name": "sasl.jaas.config",
"value": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"<source-api-key>\" password=\"<source-api-secret>\";"
}
]
}
この JSON ペイロードを、次の REST エンドポイントへの POST リクエストに追加します。
<REST-Endpoint>/kafka/v3/clusters/<cluster-ID>/links/?link_name=<link-name>
各プレースホルダーは、次のように置き換えてください。
<REST-Endpoint>
は、クラスターの REST URL です。confluent kafka cluster describe <cluster-ID>
で調べることができます。https://pkc-XXXXX.us-west1.gcp.confluent.cloud:443
のような形式になっています。<cluster-ID>
は、送信先クラスターの ID です。confluent kafka cluster list
で調べることができます。lkc-XXXXX
のような形式になっています。<link-name>
は、クラスターリンクの名前です。任意の名前を付けることができます。
REST API を使用したクラスターリンクの構成のアップデートと表示¶
Update an existing cluster link¶
See Alter the config under a cluster link n the Confluent Cloud REST API documentation.
To update an existing link, you will send the JSON payload described above as a PUT request
to <REST-Endpoint>/clusters/<cluster-ID>/links/<link-name>/configs:alter
.
Get the value a cluster link configuration¶
See Describe a cluster link in the Confluent Cloud REST API documentation.
REST API を使用してクラスターリンクの構成の値を取得するには、次のいずれかの方法を使用します。
- GET
<REST-Endpoint>/clusters/<cluster-ID>/links/<link-name>/configs
: 一連の構成をすべて取得します。 - GET
<REST-Endpoint>/clusters/<cluster-ID>/links/<link-name>/<config-name>
: 特定の構成の値を取得します。
List all cluster links going to the destination cluster¶
See List all cluster links in the destination cluster in the Confluent Cloud REST API documentation.
送信先クラスターに対するすべてのクラスターリンクのリストを表示するには、<REST-Endpoint>/clusters/<cluster-ID>/links
に GET リクエストを送信します。
Delete a cluster link¶
See Delete the cluster link in the Confluent Cloud REST API documentation.
クラスターリンクを削除するには、<REST-Endpoint>/clusters/<cluster-ID>/links/<link-name>
に DELETE リクエストを送信します。
重要
- When a cluster link is deleted, the history of any
STOPPED
topics is also deleted. If you need theLast Source Fetch Offset
or theStatus Time
of your promoted or failed-over mirror topics, make sure to save those before you delete the cluster link. - You can't directly call the “delete cluster link” command on a cluster link that still has mirror topics on it (it will fail).
- If you are using Confluent for Kubernetes (CFK), and you delete your cluster link resource, any mirror topics still attached to that cluster link
will be forcibly converted to regular topics by use of the
failover
API. To learn more, see Modify a mirror topic in Cluster Linking using Confluent for Kubernetes.
クラスターリンクの動作の構成¶
Confluent Cloud 送信先クラスターへのクラスターリンクの動作は、以下のプロパティを使用して制御できます。
フィルター(ACL 同期、コンシューマーオフセット同期、ミラートピック自動作成)を持つ機能を、最初に有効にしてから無効にした場合は、既存のフィルターがすべて、クラスターリンクからクリア(削除)されます。
acl.filters
移行する ACL のリストを指定する JSON 文字列です。ACL を
acl.filters.json
ファイルに定義し、そのファイル名を引数として--acl-filters-json-file
に渡します。- 型: string
- デフォルト: ""
注釈
acl.filters
に情報を入力するには、ACL を指定する JSON ファイルをコマンドラインで渡します。- 送信先クラスターで独立して管理されている ACL はフィルターに含めないでください。これは、送信先に個別に追加され、削除してはいけない ACL を、クラスターリンクの移行時に削除しないようにするためです。「ACL の同期」も参照してください。
acl.sync.enable
ACL を移行するかどうかを指定します。「送信元クラスターから送信先クラスターへの ACL の同期」と「ACL の同期」も参照してください。
- 型: boolean
- デフォルト: false
acl.sync.ms
ACL をリフレッシュする頻度をミリ秒単位で指定します(ACL 移行が有効にされている場合)。デフォルトは 5000 ミリ秒(5 秒)です。
- 型: int
- デフォルト: 5000
auto.create.mirror.topics.enable
- 送信元クラスターのトピックを基にミラートピックを自動作成するかどうかを指定します。"true" に設定した場合、ミラートピックは自動作成されます。このオプションを "false" に設定すると、ミラートピック作成が無効になり、既存のフィルターがある場合はクリアされます。このオプションの詳細については、「ミラートピックの自動作成」を参照してください。
auto.create.mirror.topics.filters
- 1 つのプロパティ
topicFilters
を持つ JSON オブジェクト。適用されるフィルターの配列が含まれており、どのトピックをミラーリングするかを示します。このオプションの詳細については、「ミラートピックの自動作成」を参照してください。
cluster.link.prefix
A prefix that is applied to the names of the mirror topics. The same prefix is applied to consumer groups when consumer.group.prefix is set to
true
. To learn more, see "Prefixing Mirror Topics and Consumer Group Names" in Mirror Topics.注釈
The prefix cannot be changed after the cluster link is created.
- 型: string
- Default: null
consumer.group.prefix.enable
When set to
true
, the prefix specified for the cluster link prefix is also applied to the names of consumer groups. The cluster link prefix must be specified in order for the consumer group prefix to be applied. To learn more, see "Prefixing Mirror Topics and Consumer Group Names" in Mirror Topics.- 型: boolean
- デフォルト: false
consumer.offset.group.filters
移行するコンシューマーグループのリストを指定するための JSON です。詳細については、「送信元クラスターから送信先クラスターへのコンシューマーグループの移行」を参照してください。
- 型: string
- デフォルト: ""
consumer.offset.sync.enable
コンシューマーオフセットを送信元クラスターから移行するかどうかを指定します。
- 型: boolean
- デフォルト: false
consumer.offset.sync.ms
コンシューマーオフセットを同期する頻度をミリ秒単位で指定します(有効にされている場合)。
- 型: int
- デフォルト: 30000
topic.config.sync.ms
トピック構成をリフレッシュする頻度をミリ秒単位で指定します。
- 型: int
- デフォルト: 5000
送信元クラスターから送信先クラスターへの ACL の同期¶
Cluster Linking は、送信元クラスターの一部または全部の ACL を送信先クラスターに同期できます。これはディザスターリカバリ(DR)アーキテクチャにとって重要です。クライアントアプリケーションが DR クラスターにフェイルオーバーするときに、元のクラスターで持っていたアクセス権限と同じアクセス権限を持つことになるからです。クラスターリンクを作成するときは、同期する ACL をリソース名、プリンシパル(サービスアカウント)、運用および/またはアクセス許可で絞り込んで指定できます。この設定はクラスターリンクでいつでも更新できます。一致する ACL の初期セットはクラスターリンクによりコピーされ、一致する ACL に変更や追加、削除があった場合は送信元クラスターから送信先クラスターに継続的に同期されます。
ちなみに
また、コンシューマーグループオフセットをソースから送信先クラスターに移行する こともできます。
前提条件¶
適切な認可を持っている必要があります。
- 送信元クラスターに対する DESCRIBE Cluster ACL(
DescribeAcls
API) - 送信先クラスターに対する ALTER Cluster ACL(
CreateAcls
/DeleteAcls
API)
ACL 同期の構成¶
クラスターリンクで ACL 同期を有効にするには、次のプロパティを指定します。
acl.sync.enable=true
これにより、ACL 同期が有効になります。この構成を
false
に更新すると、ACL 同期が無効になります。これを設定して Cluster Linking を実行し、その後で無効にすると、フィルターがクラスターリンクからクリア(削除)されます。
acl.filters
- 1 つのプロパティ
aclFilters
を持つ JSON オブジェクト。同期する特定の ACL を含めるためのフィルターの配列が含まれます。以下に例を示します。 acl.sync.ms(省略可)
- ACL を同期する頻度。デフォルトは 5000(5 秒)です。最小値は 1000 です。
ACL は、クラスターリンクを作成するときか、または既存の構成のアップデートとして構成できます。
以下に、クラスターリンクを作成するときに ACL 移行とともにクラスターリンクをセットアップする例を示します。リンク構成(ACL 移行プロパティを含む)は直接、コマンドラインで指定するのではなく、link-configs.properties
ファイルに定義されます。
confluent kafka link create from-aws-basic \
--source-cluster-id lkc-12345 \
--source-bootstrap-server SASL_SSL://pkc-abcde.us-west1.gcp.confluent.cloud:9092 \
--source-api-key 1L1NK2RUL3TH3M4LL \
--source-api-secret ******* \
--config-file link-configs.properties
以下に、link-configs.properties
の内容の例を示します。
acl.sync.enable=true
acl.sync.ms=1000
acl.filters={ "aclFilters": [ { "resourceFilter": { "resourceType": "any", "patternType": "any" }, "accessFilter": { "operation": "any", "permissionType": "any" } } ] }
以下のセクションでは、実際の ACL を acls.filters
に定義する方法の例を示します。
サンプル¶
以下の例では、さまざまなタイプの ACL 移行(トピックやリソースを対象とした移行、および混在する ACL の移行)用の JSON を構成する方法を示します。
すべての ACL を送信元から送信先クラスターに移行¶
すべての ACL を送信元クラスターから送信先クラスターに移行するには、acl.filters
に以下を指定します。
acl.filters={ \
"aclFilters": [ \
{ \
"resourceFilter": { \
"resourceType": "any", \
"patternType": "any" \
}, \
"accessFilter": { \
"operation": "any", \
"permissionType": "any" \
} \
} \
] \
}
JSON の各フィールドには、以下のオプションがあります。
resourceType
:ANY
(任意の種類のリソース)またはtopic
、cluster
、group
、またはtransactionalID
(Confluent Cloud のアクセス制御リスト(ACL)の使用 に指定されるリソース)。patternType
:ANY
、LITERAL
、PREFIXED
、またはMATCH
のいずれか。name
: リソースの名前。- 空白のままにした場合、デフォルトとしてワイルドカード
*
が使用されます。これは、指定されたresourceType
のすべての名前と一致することを意味します。 patternType
が"LITERAL"
の場合、この名前と完全に一致するすべてのリソースが含められます。patternType
が"PREFIXED"
の場合、この名前をプレフィックスとして持つすべてのリソースが含められます。patternType
が"MATCH"
の場合、指定されたパターンと一致するすべてのリソースが含められます。たとえば、同じ名前とタイプのリテラル、ワイルドカード(*
)、またはプレフィックスの付いたパターンです。
- 空白のままにした場合、デフォルトとしてワイルドカード
principal
:(省略可)ACL に指定されたプリンシパルの名前。空白のままにした場合、デフォルトとしてワイルドカード*
が使用されます。これは、指定されたoperation
とpermissionType
を持つすべてのプリンシパルと一致することを意味します。- たとえば、ID 12345 のサービスアカウントのプリンシパルは
User:sa-12345
です。
- たとえば、ID 12345 のサービスアカウントのプリンシパルは
operation
: any、または Operations の "Operation" 列に指定されている値のいずれか 1 つ。permissionType
:any
、allow
、またはdeny
のどちらか
トピックに固有なすべての ACL の同期¶
1 つのトピック(この場合、トピック pineapple
)に固有のすべての ACL を同期するには、acl.filters
を以下のように構成します。
acl.filters={ \
"aclFilters": [ \
{ \
"resourceFilter": { \
"resourceType": "topic", \
"patternType": "literal", \
"name": "pineapple” \
}, \
"accessFilter": { \
"operation": "any", \
"permissionType": "any" \
} \
} \
] \
}
プリンシパルまたは権限に固有のすべての ACL の同期¶
ID が 12345 のサービスアカウントに固有なすべての ACL と、クラスターへのアクセスを拒否するすべての ACL を同期するには、acls.filters
に以下の構成を指定します。
acl.filters={ \
"aclFilters": [ \
{ \
"resourceFilter": { \
"resourceType": "any", \
"patternType": "any" \
}, \
"accessFilter": { \
“principal”: “User:sa-12345”, \
"operation": "any", \
"permissionType": "any" \
} \
}, \
{ \
"resourceFilter": { \
"resourceType": "any", \
"patternType": "any" \
}, \
"accessFilter": { \
"operation": "any", \
"permissionType": "deny" \
} \
} \
] \
}
セキュリティ認証情報の構成¶
クラスターリンクを作成する際は、送信元クラスターへの認証に使用する認証情報をクラスターリンクに与える必要があります。必要な ACL を含め、Cluster Linking のセキュリティ要件について詳しくは、Cluster Linking のセキュリティの概要を参照 してください。
Confluent Cloud 送信元クラスターに対するセキュリティ認証情報の構成¶
送信元クラスターが Confluent Cloud クラスターである場合、クラスターリンクのプロパティが次のように構成されている必要があります。
security.protocol
がSASL_SSL
に設定されていることsasl.mechanism
がPLAIN
に設定されていることsasl.jaas.config
がorg.apache.kafka.common.security.plain.PlainLoginModule required username="<source-api-key>" password="<source-api-secret>";
に設定されていること<source-api-key>
と<source-api-secret>
は、送信元クラスターで使用する API キーに置き換えてください。"
文字と末尾の;
を忘れずに入力してください。
Confluent Platform と Kafka の送信元クラスターに対するセキュリティ認証情報の構成¶
Since cluster links consume from the source cluster using the same mechanism as a regular Kafka consumer, the cluster link's authentication configuration is identical to the one needed by Kafka consumers.
注釈
For Confluent Cloud cluster links, if your source cluster uses SSL (also known as TLS) and you need to pass a keystore and truststore; you must do so in-line, rather than with a keystore and truststore location. To learn more, see the security section on Mutual TLS (mTLS).
Confluent 送信先クラスターへのクラスターリンクでは、次のプロパティがサポートされます。
sasl.client.callback.handler.class
sasl.jaas.config
sasl.kerberos.kinit.cmd
sasl.kerberos.min.time.before.relogin
sasl.kerberos.service.name
sasl.kerberos.ticket.renew.jitter
sasl.kerberos.ticket.renew.window.factor
sasl.login.callback.handler.class
sasl.login.class
sasl.login.refresh.buffer.seconds
sasl.login.refresh.min.period.seconds
sasl.login.refresh.window.factor
sasl.login.refresh.window.jitter
sasl.mechanism
security.protocol
ssl.cipher.suites
ssl.enabled.protocols
ssl.endpoint.identification.algorithm
ssl.engine.factory.class
ssl.key.password
ssl.keymanager.algorithm
ssl.keystore.location
ssl.keystore.password
ssl.keystore.type
ssl.keystore.certificate.chain
ssl.protocol
ssl.provider
ssl.truststore.certificates