July 26
Kafka для новичков в доккере
Быстрая настройка KAFKA KRAFT MODE SINGLE NODE SASL
services: kafka-node1: image: confluentinc/cp-kafka:7.0.1 container_name: kafka-node1 ports: - "9092:9092" - "9093:9093" - "9094:9094" environment: KAFKA_KRAFT_MODE: 'true' KAFKA_BROKER_ID: 1 KAFKA_NODE_ID: 1 KAFKA_PROCESS_ROLES: broker,controller KAFKA_CONTROLLER_QUORUM_VOTERS: "[email protected]:9093,[email protected]:9093,[email protected]:9093,[email protected]:9093" KAFKA_LISTENERS: PLAINTEXT://192.168.1.1:9092,CONTROLLER://192.168.1.1:9093,SASL_PLAINTEXT://192.168.1.1:9094 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.1:9092,SASL_PLAINTEXT://192.168.1.1:9094 KAFKA_LOG_DIRS: /var/lib/kafka/data KAFKA_METADATA_LOG_DIR: /var/lib/kafka/metadata KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' KAFKA_HEAP_OPTS: "-Xms6g -Xmx6g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80" KAFKA_SASL_ENABLED_MECHANISMS: "PLAIN" KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf" KAFKA_SASL_JAAS_CONFIG: "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"admin-secret\" user_admin=\"admin-secret\" user_user=\"user-secret\";" volumes: - /path/to/kafka/data:/var/lib/kafka/data - /path/to/kafka/metadata:/var/lib/kafka/metadata - /path/to/kafka/config/kafka_server_jaas.conf:/etc/kafka/kafka_server_jaas.conf sysctls: - vm.max_map_count=262144 networks: - kafka-net networks: kafka-net: driver: bridge
Объяснение параметров:
- KAFKA_KRAFT_MODE: Указывает, что Kafka работает в режиме KRaft.
- KAFKA_BROKER_ID: Уникальный идентификатор брокера.
- KAFKA_NODE_ID: Уникальный идентификатор узла.
- KAFKA_PROCESS_ROLES: Роли процесса, в данном случае брокер и контроллер.
- KAFKA_CONTROLLER_QUORUM_VOTERS: Список узлов контроллера с их адресами и портами.
- KAFKA_LISTENERS: Адреса и порты для прослушивания соединений.
- KAFKA_ADVERTISED_LISTENERS: Адреса и порты, которые будут рекламироваться клиентам.
- KAFKA_LOG_DIRS: Директории для хранения логов Kafka.
- KAFKA_METADATA_LOG_DIR: Директория для хранения метаданных контроллера.
- KAFKA_AUTO_CREATE_TOPICS_ENABLE: Включает автоматическое создание тем.
- KAFKA_HEAP_OPTS: Параметры JVM для настройки памяти и производительности.
- KAFKA_OPTS: Опции для Java, включающие указание файла конфигурации JAAS.
- KAFKA_SASL_ENABLED_MECHANISMS: Включенные механизмы SASL, в данном случае PLAIN.
- KAFKA_SASL_JAAS_CONFIG: Конфигурация JAAS для аутентификации SASL/PLAIN.
Объяснение поля KAFKA_ADVERTISED_LISTENERS
Поле KAFKA_ADVERTISED_LISTENERS
определяет, какие адреса и порты будут рекламироваться клиентам для подключения к брокерам Kafka.
Синтаксис: protocol://advertised_address:advertised_port
- protocol: Протокол, используемый для соединения (например,
PLAINTEXT
). - advertised_address: Адрес, который будет рекламироваться клиентам для подключения.
- advertised_port: Порт, который будет рекламироваться клиентам для подключения.
KAFKA_LISTENERS и KAFKA_ADVERTISED_LISTENERS — это два важных параметра в конфигурации Kafka, которые управляют сетевыми настройками брокера. Вот их различия:
KAFKA_LISTENERS
- Описание: Это поле определяет, на каких адресах и портах брокер Kafka будет слушать входящие соединения.
- Использование: Указывается для настройки внутренних сетевых интерфейсов, на которых брокер ожидает входящие подключения.
- Пример:yamlКопировать код
KAFKA_LISTENERS: PLAINTEXT://192.168.1.1:9092,CONTROLLER://192.168.1.1:9093
KAFKA_ADVERTISED_LISTENERS
- Описание: Это поле определяет, какие адреса и порты брокер Kafka будет рекламировать клиентам для подключения.
- Использование: Указывается для настройки адресов и портов, которые будут использованы клиентами (продюсерами и потребителями) для подключения к брокеру. Это особенно важно, если брокеры находятся за NAT или работают с несколькими сетевыми интерфейсами.
- Пример:yamlКопировать код
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://your.public.ip:9092
Основные различия
- Цель:
KAFKA_LISTENERS
используется для определения адресов и портов, на которых брокер принимает входящие соединения.KAFKA_ADVERTISED_LISTENERS
используется для указания адресов и портов, которые брокер рекламирует клиентам для подключения.- Сценарии использования:
KAFKA_LISTENERS
может использоваться для настройки внутренних или приватных IP-адресов, которые доступны только внутри сети Docker или локальной сети.KAFKA_ADVERTISED_LISTENERS
должен быть настроен на публичные IP-адреса или DNS-имена, которые доступны клиентам извне, особенно если клиенты подключаются через интернет или через другие сети.