我想连接到端口 9093 上的 kraft 控制器(非代理)。而且我无法连接
代码示例:
#!/usr/bin/env python3
from confluent_kafka.admin import AdminClient
import json
import os
credentials = 'credentials/example.json'
with open(credentials, 'r') as json_file:
data = json.load(json_file)
conf = {
'bootstrap.servers': 'kafkacontroller1.example.com:9093',
'security.protocol': 'SASL_SSL',
'ssl.ca.location': os.path.abspath('./credentials/example/ca_cert'),
'ssl.certificate.location': os.path.abspath('./credentials/example/ca'),
'ssl.key.location': os.path.abspath('./credentials/example/ca_key'),
'ssl.key.password': data['SSLKeyPassword'],
'sasl.mechanism': 'PLAIN',
'sasl.username': data['username'],
'sasl.password': data['password'],
'enable.ssl.certificate.verification': 'false',
'debug': 'security,broker,protocol'
}
admin_client = AdminClient(conf)
try:
cluster_metadata = admin_client.list_topics(timeout=10)
controller_id = cluster_metadata.controller_id
print(f"Controller ID: {controller_id}")
brokers = cluster_metadata.brokers
print(f"Total brokers: {len(brokers)}")
print(f"Number of controllers: {1 if controller_id else 0}")
except Exception as e:
print(f"Error occurred: {e}")
当然没有连接。 提供的代码示例适用于代理,但不适用于控制器。 所以问题是 - 我是否应该尝试连接到控制器?如果是这样,我会在那里看到什么? 如果可能的话,我希望从控制器获得某种可理解的集群状态。
简短的回答是否定的 - Raft 控制器专门用于代理,引导服务器配置专门用于“发现”代理。 AdminClient 将找到集群领导节点并正确转换任何请求。