개발

AWS 에 Docker 로 Kafka 올리기

MyungDragon 2019. 5. 23. 08:00

내 Mac 에 이것저것 까는걸 싫어하기도 하고

Docker 도 써볼 겸 해서, AWS EC2 Amazon Linux 2 인스턴스에 Docker로 Kafka 를 올려보았다.

하루 정도 삽질 후 알게 된 Lessons 를 공유한다.

이제 개발 시작해야지... ㅠㅠ

 

1.  AWS 환경

공짜인 t2.micro 로 Ubuntu 18, RHEL 8, Amazon Linux 2 모두에서 실행을 해봤는데

이상하게 zookeeper 컨테이너만 떠있고 kafka 브로커는 뜨질 않는 것이다!

마지막에 혹시나 해서 로그를 봤더니 Insufficient Memory... 였다. T.T 

메모리가 2GB 이상 필요한 것 같다.

>> 결론: t2.small 이상을 사용할 것. 

 

2. 필수 환경 구성

docker, docker-compose 가 설치되어 있어야 한다.

amazon linux2 에서는 docker 만 snap 패키지 repo 에 있길래

docker-compose 는 repo 추가 후 yum 으로 별도 설치 하였다.

참고로 ubuntu 에서는 둘다 apt 로 설치 가능했던걸로 기억... (우분투로 걍 할걸 ㅠ)

 

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

$ sudo yum install docker-ce

$ sudo usermod -aG docker $(whoami)

(로그아웃/재접속)

$ sudo yum install epel-release

$ sudo yum install -y python-pip

$ sudo pip install docker-compose

 

 

3. dockerfile 가져오기 (docker-compose 활용)

https://github.com/wurstmeister/kafka-docker.git

 

wurstmeister/kafka-docker

Dockerfile for Apache Kafka. Contribute to wurstmeister/kafka-docker development by creating an account on GitHub.

github.com

에서 git checkout 후에 kafka-docker 폴더로 이동.

 

$ git clone https://github.com/wurstmeister/kafka-docker.git

$ cd kafka-docker

 

4. Container 올리기 (Step-by-Step)

 

$ vi docker-compose.yml 

KAFKA_ADVERTISED_HOST_NAME 을 eth0 의 ip로 변경한다. (ifconfig eth0 하면 나오는 ipv4)

** 만약 간단하게 외부에서 접근하게 하려면 eth0의 ip 말고 Public IP 를 입력하면 된다. 단 방화벽 푸는 전제임 (32000-33000)

 

$ docker-compose up

$ docker-compose scale kafka=2

이 때 docker ps 하면 zookeeper 1개, kafka broker 2개가 up 되어 있음을 확인할 수 있다.

 

정상이면 container 의 쉘로 들어가서 아래와 같이 토픽 produce 를해볼 수 있다.

$ start-kafka-shell.sh [eth0 ip] [eth0 ip:2181]

$KAFKA_HOME/bin/kafka-topics.sh --create --topic mytopic --partitions 4 --zookeeper $ZK --replication-factor 2`

또 다른 container 쉘에서 consumer 역할을 수행해볼 수 있다.

$KAFKA_HOME/bin/kafka-console-consumer.sh --topic=mytopic --zookeeper=$ZK

 

요약: 회사일 할땐 그냥 돈을 쓰자. 한달에 2만원 정도 나올듯.