Post

Docker kafka

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    version: '3.8'

    volumes:
    kafka_volume:
        driver: local

    services:
    kafka:
        image: apache/kafka:3.7.1
        container_name: kafka1 # instance1의 docker compose 파일
        ports:
        - "9092:9092" # 외부용
        - "9093:9093" # 내부 클러스터용
        environment:
        KAFKA_PROCESS_ROLES: broker,controller
        KAFKA_NODE_ID: 1
        KAFKA_CONTROLLER_QUORUM_VOTERS: 1@172.31.2.88:9093,2@172.31.5.148:9093,3@172.31.9.18:9093
        KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 # PLAINTEXT 프로토콜로 모든 인스턴스 수신
        KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.31.2.88:9092 # 클라이언트는 이 포트로 접근
        KAFKA_LOG_DIRS: /var/lib/kafka/data
        KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT # 없으면 오류걸림
        KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
        KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
        KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
        KAFKA_LOG_RETENTION_MS: 300000
        volumes:
        - kafka_volume:/var/lib/kafka/data

PLAINTEXT 프로토콜은 간단하고 빠른 데이터 전송을 가능하게 하지만, 보안이 필요한 경우에는 적합하지 않다. 데이터 보안을 고려할 때는 SSL(Secure Sockets Layer) 또는 SASL(Simple Authentication and Security Layer) 등의 보안 프로토콜을 사용하는 것이 좋음.

This post is licensed under CC BY 4.0 by the author.