티스토리 뷰
Docker를 이용한 zookeeper, kafka 실행
기본 개념
Apache Kafka
Apache Kafka란 LinkedIn에서 개발된 분산 메시징 시스템으로, 대용량의 실시간 로그 처리에 특화된 아키텍처 설계를 통해 기존 메시징 시스템보다 우수한 TPS를 가지고 있습니다.
kafka의 개념에 대한 자세한 내용은 다음 페이지를 참조하시길 바랍니다.
zookeeper, kafka 실행
docker-compose.yaml 파일 작성
프로젝트를 생성할 디렉토리로 이동해 kafka-with-docker
디렉토리를 생성하고 zookeeper 및 kafka 컨테이너를 실행하기 위한 docker-compose.yaml
파일을 작성합니다.
cd /opt/gopath/src/github.com/
mkdir kafka-with-docker
cd /opt/gopath/src/github.com/kafka-with-docker
vi docker-compose.yaml
kafka 환경변수
KAFKA_ADVERTISED_LISTENERS
: kafka 브로커를 가리키는 사용 가능 주소 목록. kafka는 초기 연결 시 이를 client에게 보냄KAFKA_LISTENERS
: kafka 브로커가 들어오는 연결을 수신 대기하는 주소 및 리스너 이름 목록KAFKA_ZOOKEEPER_CONNECT
: ZooKeeper 연결 문자열. ,로 구분 ex) <zookeeper서버의 hostname>:<zookeeper서버의 포트번호>KAFKA_CREATE_TOPICS
: 생성할 Topic명:Partition 개수:Replica 개수
version: '2'
networks:
test:
services:
zookeeper:
image: wurstmeister/zookeeper:3.4.6
container_name: zookeeper
ports:
- "2181:2181"
networks:
- test
kafka:
image: wurstmeister/kafka:2.12-2.0.1
container_name: kafka
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: "javainuse-topic:1:1" # Topic명:Partition개수:Replica개수
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "9092:9092"
depends_on:
- zookeeper
networks:
- test
zookeeper&kafka 컨테이너 실행
작성한 docker-compose.yaml 파일을 이용해 zookeeper 및 kafka 컨테이너를 실행합니다.
cd /opt/gopath/src/github.com/kafka-with-docker
# zookeeper&kafka 컨테이너 실행
docker-compose up -d
# zookeeper&kafka 컨테이너 실행 중지
docker-compose down
zookeeper 컨테이너 로그 확인
docker container logs zookeeper
kafka 컨테이너 로그 확인
docker container logs kafka
kafka 실행 확인
바이너리 파일 다운로드
kafka가 제대로 실행되었는지 확인하기 위해 공식 사이트에서 제공하는 kafka 바이너리 파일들을 다운로드합니다. 여기서 주의할 점은, kafka 컨테이너의 실행 이미지 버전과 kafka 바이너리 파일의 버전이 동일해야 합니다.
위의 docker-compose.yaml
파일에서 kafka 실행 이미지를 wurstmeister/kafka:2.12-2.0.1
로 설정했기 때문에 이와 동일한 버전의 kafka 바이너리 파일을 다운로드합니다. 이를 위해 kafka 컨테이너의 이미지 버전을 latest
가 아닌 고정된 버전으로 사용하는 것을 추천합니다.
cd /opt/gopath/src/github.com/kafka-with-docker
wget http://mirror.navercorp.com/apache/kafka/2.0.1/kafka_2.12-2.0.1.tgz
tar -zxvf kafka_2.12-2.0.1.tgz
rm kafka_2.12-2.0.1.tgz
kafka topic 생성 확인
console을 이용하여 kafka 컨테이너에서 설정한 'javainuse-topic
' topic이 제대로 생성되었는지 확인합니다.
cd /opt/gopath/src/github.com/kafka-with-docker/kafka_2.12-2.0.1
sh bin/kafka-topics.sh --zookeeper localhost:2181 --list
bin/kafka-topics.sh
실행 옵션
--zookeeper : zookeeper가 실행 중인 호스트. 별도의 서버에 구축했다면
server_ip:server_port
로 지정--list : 리스트 출력
--create : topic 생성
--topic : 생성할 topic명
--partitions : 생성할 topic의 파티션 개수
--replication-factor : 생성할 topic의 복사본 개수
※ topic은 kafka 컨테이너 실행 시 생성했기 때문에, 따로 생성하지 않습니다.
kafka Consumer 실행
console을 이용해 kafka consumer를 실행하여 메시지 수신 상태로 대기시킵니다.
※ 이 단계는 메시지 수신이 정상적으로 이루어지는지 확인하기 위한 절차로, 이후에는 node.js를 이용해 수신할 예정입니다.
cd /opt/gopath/src/github.com/kafka-with-docker/kafka_2.12-2.0.1
bin/kafka-console-consumer.sh --topic javainuse-topic --bootstrap-server localhost:9092 --from-beginning
bin/kafka-console-consumer.sh
실행 옵션
--topic : 메시지를 가져올 topic. 여기에선 kafka 컨테이너 실행 시에 생성한
javainuse-topic
으로 설정--bootstrap-server : kafka가 실행 중인 호스트. 별도의 서버에 구축했다면
server_ip:server_port
로 지정--from-beginning : 맨 처음부터 메시지를 가져옴
kafka Producer 실행
또 다른 console을 이용해 kafka producer를 실행하여 메시지 생산 상태로 대기시킵니다. 위 명령을 실행하면 >
이 출력되면서 입력 대기 상태가 됩니다.
※ 이 단계는 메시지 생산이 정상적으로 이루어지는지 확인하기 위한 절차로, 이후에는 Maven 프로젝트를 이용해 생산할 예정입니다.
cd /opt/gopath/src/github.com/kafka-with-docker/kafka_2.12-2.0.1
bin/kafka-console-producer.sh --topic javainuse-topic --broker-list localhost:9092
bin/kafka-console-producer.sh
실행 옵션
--topic : 메시지를 생산할 topic. 여기에선 kafka 컨테이너 실행 시에 생성한
javainuse-topic
으로 설정--broker-list : kafka가 실행 중인 호스트. 별도의 서버에 구축했다면
server_ip:server_port
로 지정
kafka 메시지 전송
이 상태에서 console에 메시지를 입력한 뒤 Enter를 누르면 Consumer를 실항한 console에 생산한 메시지가 출력되야 합니다.
참고 사이트
'Development > Apache Kafka' 카테고리의 다른 글
[Apache Kafka] Apache Camel을 이용한 Producer 설정 (0) | 2020.02.19 |
---|---|
[Apache Kafka] 카프카 핵심 가이드(도서): CHAPTER 7. 데이터 파이프라인 구축하기_카프카 커넥트 (0) | 2020.02.18 |
[Apache Kafka] 아파치 카프카 쿡북(도서): 02장. 카프카 클러스터 (0) | 2019.03.18 |
[Apache Kafka] 아파치 카프카 쿡북(도서): 01장. 카프카 구성하기 (0) | 2019.03.13 |
- Total
- Today
- Yesterday
- Hyperledger Fabric v1.1
- javascript
- 빅데이터 교육
- 알고리즘
- Hyperledger Indy
- 기초 of 기초 데이터 개념
- 하이퍼레저 인디
- 암브로셔스
- 코딩테스트
- ubuntu
- 문제풀이
- 빅데이터 강의
- 코딜리티
- 블록 체인
- Private Data
- 빅데이터
- 하이퍼레저 패브릭
- Blockchain
- ambrosus
- DOCs
- 어서와 데이터는 처음이지
- 하이퍼레저 페브릭
- Hyperledger Fabric
- 블록체인
- 직딩잇템
- 코테
- 빅데이터 기초
- codility
- Hyperledger Fabric v1.2
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 |
29 | 30 | 31 |