Настройка kafka
Устанавливаем кафку на сервера, например в директорию /opt/kafka
https://kifarunix.com/install-apache-kafka-on-debian/
Настраиваем конфигурационные файлы на каждом сервере. В примере их три:
- 172.16.135.10
- 10.241.200.123
- 10.241.200.124
В вашем случае их может быть два.
Пример конфигурационного файл config/kraft/server.properties для сервера 172.16.135.10
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@172.16.135.10:9093,2@10.241.200.123:9093,3@10.241.200.124:9093
listeners=PLAINTEXT://172.16.135.10:9092,CONTROLLER://172.16.135.10:9093
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://172.16.135.10:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/kafka/kraft-combined-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=3 # число серверов
transaction.state.log.replication.factor=3 # число серверов
transaction.state.log.min.isr=1
В консоли на каждом сервере инициализировать кафку
Сначала генерим ключ, например RiS_KRIffedSfMurdVxTDKw
Можно командой bin/kafka-storage.sh random-uuid
потом в консоли на каждом сервере выполняем команду
./bin/kafka-storage.sh format -t RiS_KRIffedSfMurdVxTDKw -c config/kraft/server.properties
ключ RiS_KRIffedSfMurdVxTDKw должен быть один и тот же для всех нод
в параметре
controller.quorum.voters=1@172.16.135.10:9093,2@10.241.200.123:9093,3@10.241.200.124:9093
числа перед @ это node.id, они должны быть прописаны одинаково в конфигурациях на всех нодах
Запуск сервиса
Пример файла сервиса kafka.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=wnam
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
TimeoutSec=30
Restart=always
RestartSec=20s
[Install]
WantedBy=multi-user.target
В конфигурационном файле /home/wnam/application.yaml :
netams:
wnam:
cluster:
# optional, default false. Использовать kafka
kafka_enabled: true
# optional default false, отвечает за синхронизацию данных, между разными кластерами wnam, если true синхронизируются все коллекции, если false только конфигурационные параметры
full_sink: true
# optional, default 1 количество реплик (серверов) в кластере kafka
replicas: 3
# optional, default true. Пытаться выбрать лидера в kafka при падении брокеров kafka
unclean_election: true
# optional, default empty.Если master, то все задачи выполняются на этом сервере,
role: master
# optional, default 'true'. Использовать локальный кэш. Может быть true или false, отключать кэш следует только в конфигурации когда нет кафки и больше одного сервера wnam
useCache: true
spring:
# применяется если kafka_enabled = true
kafka:
bootstrap-servers: 172.16.135.10:9092,10.241.200.123:9092,10.241.200.124:9092