Не можете изменить идентификатор брокера Кафки на графике Шлема Инкубатора? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть один сервер Zookeeper (скажем, xx.xx.xx.xxx:2181), работающий на одной виртуальной машине GCP Compute Instance отдельно.

У меня есть 3 кластера GKE в разных регионах, на которых я пытаюсь установить брокерские узлы Kafka, чтобывсе узлы подключаются к одному серверу Zookeeper (xx.xx.xx.xxx:2181).

Я установил сервер Zookeeper на виртуальной машине, следуя этому руководству со свойствами zookeeper, подобными приведенным ниже:

dataDir=/tmp/data                                                                                                                                                                                                                                                                                                                                                                                                 
clientPort=2181
maxClientCnxns=0
initLimit=5
syncLimit=2
tickTime=2000

# list of servers
server.1=0.0.0.0:2888:3888

Я использую эту схему управления инкубатором для развертывания посредников на кластерах GKE.

Согласно README.md Я пытаюсь установить с помощью приведенной ниже команды:

helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator

helm install --name my-kafka \
  --set replicas=1,zookeeper.enabled=false,configurationOverrides."broker\.id"=1,configurationOverrides."zookeeper\.connect"="xx.xx.xx.xxx:2181" \
  incubator/kafka

Ошибка

При развертывании с использованием любого из описанных выше способов на всех трех кластерах GKE только один из брокеров подключается к серверу Zookeeper, а другой -два модуля просто перезагружаются бесконечно.

Когда я проверяю журнал Zookeeper (на виртуальной машине), он выглядит примерно так:

...
[2019-10-30 14:32:30,930] INFO Accepted socket connection from /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.NIOServerCnxnFactory)
[2019-10-30 14:32:30,936] INFO Client attempting to establish new session at /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-10-30 14:32:30,938] INFO Established session 0x100009621af0057 with negotiated timeout 6000 for client /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-10-30 14:32:32,335] INFO Got user-level KeeperException when processing sessionid:0x100009621af0057 type:create cxid:0xc zxid:0x422 txntype:-1 reqpath:n/a Error Path:/config/users Error:KeeperErrorCode = NodeExists for /config/users (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:34,472] INFO Got user-level KeeperException when processing sessionid:0x100009621af0057 type:create cxid:0x14 zxid:0x424 txntype:-1 reqpath:n/a Error Path:/brokers/ids/0 Error:KeeperErrorCode = NodeExists for /brokers/ids/0 (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:35,126] INFO Processed session termination for sessionid: 0x100009621af0057 (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:35,127] INFO Closed socket connection for client /xx.xx.xx.xxx:54978 which had sessionid 0x100009621af0057 (org.apache.zookeeper.server.NIOServerCnxn)
[2019-10-30 14:36:49,123] INFO Expiring session 0x100009621af003b, timeout of 6000ms exceeded (org.apache.zookeeper.server.ZooKeeperServer)
...

Я уверен, что создал правила брандмауэра, чтобы открыть необходимыевсе порты, и это не проблема, потому что один из узлов брокера может подключиться (тот, который достигнет первого).

Мне кажется, что borkerID по какой-то причине не меняется иэто причина, почему Zookeeper отклоняет соединения. Я говорю это потому, что kubectl logs pod/my-kafka-n выводит что-то вроде следующего:

...
[2019-10-30 19:56:24,614] INFO [SocketServer brokerId=0] Shutdown completed (kafka.network.SocketServer)
...
[2019-10-30 19:56:24,627] INFO [KafkaServer id=0] shutting down (kafka.server.KafkaServer)
...

Как мы можем видеть выше, brokerId=0 для всех пакетов во всех 3 кластерах.

Однако, когдаЯ делаю kubectl exec -ti pod/my-kafka-n -- env | grep BROKER, я вижу, что переменная окружения KAFKA_BROKER_ID изменяется на 1, 2 и 3 для разных брокеров при установке.

Что я делаю неправильно? Как правильно изменить идентификатор kafka-брокера или сделать так, чтобы все брокеры подключались к одному экземпляру Zookeeper?

1 Ответ

2 голосов
/ 31 октября 2019

сделать так, чтобы все брокеры подключались к одному экземпляру Zookeeper?

Похоже, вы делаете это нормально с помощью опции configurationOverrides. Это развернет все модули с одинаковой конфигурацией.

При этом идентификатор брокера не должен быть одинаковым для каждого пакета. Если вы проверяете YAML с набором состояний, то получается, что идентификатор брокера рассчитывается на основе переменной POD_NAME


Sidenote

3 кластеров GKE, расположенных в разных регионах, в которых я пытаюсь установить узлы брокера Kafka, чтобы все узлы подключались к одному серверу Zookeeper

Мне не ясно, как вы могли бы выполнить развертывание в3 отдельных кластера в одном вызове API. Но эта архитектура не рекомендуется сообществами Kafka, Zookeeper или Kubernetes, если эти регионы не являются «географически близкими»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...