Я настраиваю кластер kafka и zookeeper с высокой доступностью. У меня есть 2 брокера kafka (pod1, pod2) и 3 zookeeper (pod1, pod2, pod3). Настройка работает нормально.Когда я захожу в один брокер кафки (pod1), я могу создать и использовать сообщение.Но когда я вхожу в другого брокера kafka (pod2), я не могу получить никаких сообщений, хотя я установил коэффициент репликации равным двум. Так что я добавил тома в спецификации контейнера, теперь я не могу создать ни одного модуляполучить краш-бэкбэк.
Когда я проверял журналы, информация была следующей: Неправильный запрос к серверу.Контейнер не умеет создавать.
kafka_pod.yaml содержит развертывание kafka.
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka
labels:
app: kafka
spec:
replicas: 2
selector:
matchLabels:
app: kafka
template:
metadata:
labels:
app: kafka
spec:
hostname: kafka
containers:
- name: kafka
image: wurstmeister/kafka:2.11-1.0.2
ports:
- containerPort: 9092
protocol: TCP
env:
- name: KAFKA_ADVERTISED_HOST_NAME
value: kafka
- name: KAFKA_ADVERTISED_PORT
value: "9092"
- name: KAFKA_ZOOKEEPER_CONNECT
value: zookeeper:2181
- name: KAFKA_OFFSET_TOPIC_REPLICATION_FACTOR
value: "2"
- name: KAFKA_AUTO_CREATE_TOPICS_ENABLE
value: "true"
- name: KAFKA_LOG_DIRS
value: /opt/kafka
volumeMounts:
- name: socket
mountPath: /var/run/docker.sock
- name: logdir
mountPath: /opt/kafka
volumes:
- name: socket
hostPath:
path: /var/run/docker.sock
- name: logdir
hostPath:
path: ~/datadir
zookeeper_pod.yaml contains the following.
apiVersion: v1
kind: Service
metadata:
name: zookeeper
spec:
ports:
- port: 2181
selector:
app: zookeeper
clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: zookeeper
labels:
app: zookeeper
spec:
replicas: 3
selector:
matchLabels:
app: zookeeper
template:
metadata:
labels:
app: zookeeper
spec:
nodeName: akshatha-ha
containers:
- name: zookeeper
image: wurstmeister/zookeeper
ports:
- containerPort: 2181
protocol: TCP
Мне нужно развернуть kafka с двумя брокерами и zookeeper с 3 серверами. Когда один из серверовидет вниз другой должен иметь возможность предоставить данные.