Настройка kafka
Устанавливаем кафку на сервера, например в директорию /opt/kafka
Настраиваем конфигурационные файлы на каждом сервере
Пример конфигурационного файл 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 должен быть один и тот же для всех нод
Запуск сервиса
Пример файла сервиса kafka.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=student
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
В конфигурационном файле wnam
netams:
wnam:
cluster:
prefix: wnam-cluster- #optional, префикс для id сервера
kafka_enabled: true #optional, default false. Использовать kafka
main: true #optional default false
replicas: 3 # optional, default 1 количество реплик в kafka
unclean_election: true #optional, default true. Пытаться выбрать лидера в kafka при падении брокеров kafka
role: master #optional, default empty.Если master, то все задачи выполняются на этом сервере,
useCache: default #optional, default 'default'. Использовать локальный кэш. Может быть default, true или false
spring:
# применяется если kafka_enabled = true
kafka:
bootstrap-servers: 172.16.135.10:9092,10.241.200.123:9092,10.241.200.124:9092