From 95f4acab65729cdcc2b079355cbd1f01e6812442 Mon Sep 17 00:00:00 2001 From: pricelees Date: Fri, 27 Jun 2025 13:30:22 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B9=B4=ED=94=84=EC=B9=B4=20=EB=B8=8C?= =?UTF-8?q?=EB=A1=9C=EC=BB=A4=20=EB=B0=B0=ED=8F=AC=EC=9A=A9=20docker-compo?= =?UTF-8?q?se?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/docker-compose-kafka-cluster.yml | 111 ++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 docker/docker-compose-kafka-cluster.yml diff --git a/docker/docker-compose-kafka-cluster.yml b/docker/docker-compose-kafka-cluster.yml new file mode 100644 index 0000000..ac48967 --- /dev/null +++ b/docker/docker-compose-kafka-cluster.yml @@ -0,0 +1,111 @@ +services: + controller: + image: apache/kafka:latest + container_name: controller + environment: + KAFKA_NODE_ID: 0 + KAFKA_PROCESS_ROLES: controller + KAFKA_LISTENERS: CONTROLLER://:9093 + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER + KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093 + + broker-1: + image: apache/kafka:latest + container_name: broker-1 + privileged: true + ports: + - "29092:9092" + - "29093:9093" + - "7071:7071" + environment: + KAFKA_NODE_ID: 1 + KAFKA_PROCESS_ROLES: broker + KAFKA_LISTENERS: PLAINTEXT://:19092,PLAINTEXT_HOST://:9092,SSL://:19093,SSL_HOST://:9093 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-1:19092,PLAINTEXT_HOST://localhost:29092,SSL://broker-1:19093,SSL_HOST://localhost:29093 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,SSL:SSL,SSL_HOST:SSL + KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.broker.truststore.jks + KAFKA_SSL_TRUSTSTORE_CREDENTIALS: password + KAFKA_SSL_KEYSTORE_FILENAME: kafka.broker.keystore.jks + KAFKA_SSL_KEYSTORE_CREDENTIALS: password + KAFKA_SSL_KEY_CREDENTIALS: password + KAFKA_NUM_PARTITIONS: 3 + KAFKA_DEFAULT_REPLICATION_FACTOR: 3 + KAFKA_MIN_INSYNC_REPLICAS: 2 + KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS: 5 + KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093 + KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER + KAFKA_OPTS: -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar=7071:/opt/jmx_exporter/server-metrics.yml + depends_on: + - controller + volumes: + - ./jmx/server-metrics.yml:/opt/jmx_exporter/server-metrics.yml + - ./jmx/jmx_prometheus_javaagent-0.3.1.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar + - ../ssl:/etc/kafka/secrets + + broker-2: + image: apache/kafka:latest + container_name: broker-2 + privileged: true + ports: + - "39092:9092" + - "39093:9093" + - "7072:7071" + environment: + KAFKA_NODE_ID: 2 + KAFKA_PROCESS_ROLES: broker + KAFKA_LISTENERS: PLAINTEXT://:19092,PLAINTEXT_HOST://:9092,SSL://:19093,SSL_HOST://:9093 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-2:19092,PLAINTEXT_HOST://localhost:39092,SSL://broker-2:19093,SSL_HOST://localhost:39093 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,SSL:SSL,SSL_HOST:SSL + KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.broker.truststore.jks + KAFKA_SSL_TRUSTSTORE_CREDENTIALS: password + KAFKA_SSL_KEYSTORE_FILENAME: kafka.broker.keystore.jks + KAFKA_SSL_KEYSTORE_CREDENTIALS: password + KAFKA_SSL_KEY_CREDENTIALS: password + KAFKA_NUM_PARTITIONS: 3 + KAFKA_DEFAULT_REPLICATION_FACTOR: 3 + KAFKA_MIN_INSYNC_REPLICAS: 2 + KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS: 5 + KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093 + KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER + KAFKA_OPTS: -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar=7071:/opt/jmx_exporter/server-metrics.yml + depends_on: + - controller + volumes: + - ./jmx/server-metrics.yml:/opt/jmx_exporter/server-metrics.yml + - ./jmx/jmx_prometheus_javaagent-0.3.1.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar + - ../ssl:/etc/kafka/secrets + + broker-3: + image: apache/kafka:latest + container_name: broker-3 + privileged: true + ports: + - "49092:9092" + - "49093:9093" + - "7073:7071" + environment: + KAFKA_NODE_ID: 3 + KAFKA_PROCESS_ROLES: broker + KAFKA_LISTENERS: PLAINTEXT://:19092,PLAINTEXT_HOST://:9092,SSL://:19093,SSL_HOST://:9093 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker-3:19092,PLAINTEXT_HOST://localhost:49092,SSL://broker-3:19093,SSL_HOST://localhost:49093 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,SSL:SSL,SSL_HOST:SSL + KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.broker.truststore.jks + KAFKA_SSL_TRUSTSTORE_CREDENTIALS: password + KAFKA_SSL_KEYSTORE_FILENAME: kafka.broker.keystore.jks + KAFKA_SSL_KEYSTORE_CREDENTIALS: password + KAFKA_SSL_KEY_CREDENTIALS: password + KAFKA_NUM_PARTITIONS: 3 + KAFKA_DEFAULT_REPLICATION_FACTOR: 3 + KAFKA_MIN_INSYNC_REPLICAS: 2 + KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS: 5 + KAFKA_CONTROLLER_QUORUM_VOTERS: 0@controller:9093 + KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER + KAFKA_OPTS: -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar=7071:/opt/jmx_exporter/server-metrics.yml + depends_on: + - controller + volumes: + - ./jmx/server-metrics.yml:/opt/jmx_exporter/server-metrics.yml + - ./jmx/jmx_prometheus_javaagent-0.3.1.jar:/opt/jmx_exporter/jmx_prometheus_javaagent-0.3.1.jar + - ../ssl:/etc/kafka/secrets +