Google에 Kafka on docker site:github.com
라고 검색하면
아래의 레포지토리가 가장 맨 위에 랭크된다.
https://github.com/wurstmeister/kafka-docker
해당 레포지토리를 따라가면서 다음 튜토리얼에 접속하여 따라 하다보면 여러가지 에러가 발생하여, 해당 부분이 정상적으로 동작하게끔 한 부분에 대해서 기재 하겠다.
Pull 받은 후 Dockefile 수정하자.
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
build: .
ports:
- "9092"
environment:
// Kafka host로 사용할 장비의 IP. 개인 장비에서 돌릴거면 private IP, 그 외는 Public IP가 나와야 한다.
// 해당 IP를 Kafka host ip라고 부르겠다.
KAFKA_ADVERTISED_HOST_NAME: 10.64.52.218
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
도커 내부에 접속
보통 다음과 같은 키워드로 접속을 할텐데docker -it wurstmeister/kafka-docker /bin/bash
도큐먼트에서 제공하는 방향으로 접속을 하려면 다음과 같이 입력 해야한다.$ start-kafka-shell.sh <DOCKER_HOST_IP> <ZK_HOST:ZK_PORT>
앞서 수정한 Dockerfile을 바탕으로 위의 스크립트를 사용 하려면 아래와 같이 입력하면 되겠다../start-kafka-shell.sh 10.64.52.218 10.64.52.218:2181
컨슈머 접속 안되는 문제.
단순 도큐먼트만 본다면 다음 명령어를 입력할 것 같은데,$KAFKA_HOME/bin/kafka-console-consumer.sh --topic=topic --zookeeper=$ZK
그러면 정확히 아래의 에러를 보게된다.
zookeeper is not a recognized option
이는 요 문서를 확인해보면 알 수 있는데--zookeeper=10.64.52.218:2181
에서의 --zookeeper
옵션은 Deprecated 되었다.
대신 아래의 명령어로 대체 되었다.--bootstrap-server
(해당 옵션은 브로커의 주소를 넘겨주는 옵션이다.)
그럼 이런 명령어가 완성이 된다.
$KAFKA_HOME/bin/kafka-console-consumer.sh --topic=topic --bootstrap-server=$ZK
위의 명령어를 실행하면 주키퍼에서는 아래와 같은 에러를 무한정으로 뱉는데,
zookeeper_1 | 2021-03-24 13:09:14,685 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.18.0.1:51072
zookeeper_1 | 2021-03-24 13:09:14,688 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@949] - Client attempting to establish new session at /172.18.0.1:51072
zookeeper_1 | 2021-03-24 13:09:14,692 [myid:] - INFO [SyncThread:0:ZooKeeperServer@694] - Established session 0x10000068f5b0004 with negotiated timeout 30000 for client /172.18.0.1:51072
zookeeper_1 | 2021-03-24 13:09:14,916 [myid:] - INFO [ProcessThread(sid:0 cport:2181)::PrepRequestProcessor@487] - Processed session termination for sessionid: 0x10000068f5b0004
zookeeper_1 | 2021-03-24 13:09:14,922 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1056] - Closed socket connection for client /172.18.0.1:51072 which had sessionid 0x10000068f5b0004
zookeeper_1 | 2021-03-24 13:10:15,769 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.18.0.1:51090
zookeeper_1 | 2021-03-24 13:10:15,788 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: Unreasonable length = 1818570083
zookeeper_1 | 2021-03-24 13:10:15,788 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1056] - Closed socket connection for client /172.18.0.1:51090 (no session established for client)
zookeeper_1 | 2021-03-24 13:10:15,898 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.18.0.1:51096
zookeeper_1 | 2021-03-24 13:10:15,899 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: Unreasonable length = 1818570083
zookeeper_1 | 2021-03-24 13:10:15,899 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1056] - Closed socket connection for client /172.18.0.1:51096 (no session established for client)
zookeeper_1 | 2021-03-24 13:10:16,003 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.18.0.1:51102
zookeeper_1 | 2021-03-24 13:10:16,004 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: Unreasonable length = 1818570083
zookeeper_1 | 2021-03-24 13:10:16,005 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1056] - Closed socket connection for client /172.18.0.1:51102 (no session established for client)
zookeeper_1 | 2021-03-24 13:10:16,110 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] - Accepted socket connection from /172.18.0.1:51108
zookeeper_1 | 2021-03-24 13:10:16,112 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@383] - Exception causing close of session 0x0: Unreasonable length = 1818570083
zookeeper_1 | 2021-03-24 13:10:16,112 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1056] - Closed socket connection for client /172.18.0.1:51108 (no session established for client)
이는 기본 레포에 있는 스크립트를 실행하여 브로커의 정보를 가져오면 된다.
$ ./broker-list.sh
:32772
가져온 정보를 바탕으로 다음과 같이 실행하자.
$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server 10.64.52.218:32772 --topic "topic" --from-beginning
정상 실행된다.