brunch

You can make anything
by writing

C.S.Lewis

by 고승범 Mar 16. 2022

간단한 카프카 환경 구성하기

이미 많은 분들이 카프카를 능숙하게 다루고 계시지만, 여전히 카프카를 처음 접하는 분들도 많이 있을 것이라고 생각합니다. 카프카를 처음 접하는 분들 대부분 카프카의 기본 동작 또는 퀵 스타트 등의 문서 등을 검색하고 주의 깊게 읽어볼 것이라고 예상합니다. 이러한 글들을 읽고 나면, 카프카를 이해했다는 생각과 실습 환경을 직접 구성해보고 실습해보고자 하는 욕구가 생길 것입니다. 이번 글은 이렇게 간단하게 실습을 하고자 하는 사용자들에게 손쉽게 카프카를 구성할 수 있는 환경 구성에 대해 이야기하고자 합니다. 


카프카 실습 환경 구성하기 

카프카의 실습 환경을 구성한다면, 가장 먼저 로컬, 온프렘, 클라우드 총 3가지로 크게 분류할 수 있을 것 같습니다. 각자의 실습 환경을 구성하는 목적과 방법에 따라 다르겠지만, 여기서는 가장 간단하게 로컬 환경에서 구성하는 방법을 설명하겠습니다. 


로컬 환경 

로컬 환경에서 카프카 환경을 구성하고자 하시는 분들은 로컬 환경이라는 제한적인 요소로 인하여 대량의 메시지 전송이나 카프카의 성능 테스트보다는 비교적 간단한 테스트 동작 등이 목적일 것으로 예상합니다. 이러한 환경에서 카프카와 주키퍼를 직접 설치하기는 매우 번거로울 것이며, 무엇보다도 간단하게 설치하는 것이 가장 중요할 것입니다.  

이러한 목적에 가장 추천하는 방법은 도커를 이용하는 것입니다. 도커는 윈도우 또는 맥 OS 등에서도 설치가 가능하며, 로컬 환경에서 테스트 목적 등으로 환경을 구성하기에 매우 적합하다고 생각합니다. 

또한 카프카가 널리 사용되며, 최근에는 잘 만들어진 도커 이미지들을 공개하고 있어 심지어 도커를 잘 모르는 초보자들도 한 두줄의 명령어 실행만으로도 매우 쉽게 설치할 수 있습니다. 


컨플루언트 도커 

도커 환경에서 카프카를 구성하는 방법도 여러 가지가 있겠지만, 저는 개인적으로 컨플루언트에서 제공하는 도커를 추천합니다. 

추천하는 이유는 기본적으로 카프카를 제공할 뿐만 아니라 카프카 외 필요한 애플리케이션들도 모두 포함되어 있어, 마치 풀 통합 패키지와 같은 느낌이 듭니다. 

컨플루언트에서 제공하는 도커 설치 가이드 문서를 살펴보면, 도커 이미지들이 실행되는 과정을 볼 수 있습니다. 이를 통해 도커에서 실행되는 애플리케이션들을 유추할 수 있는데, 주키퍼, 카프카, 스키마 레지스트리, rest-proxy, 커넥트, ksql-datagen, ksqldb, 컨트롤 센터, ksqldb-cli 등이 실행됩니다. 

사실 카프카만 이용하고 싶은 경우도 있는데, 한 번에 너무 많은 애플리케이션들의 리스트들이 나타나 오히려 다소 혼란스러울 수 도 있습니다. 하지만, 다른 애플리케이션들은 모두 무시하고 가장 단순하게 카프카만 사용해도 무방합니다.  


사전 필수 작업 

먼저 실행하고자 하는 로컬 환경에 도커가 설치되어 있어야 하며, 버전은  1.11 이상 버전이 필요합니다. 도커 설치 외에 추가로 도커 컴포즈도 설치가 필요한데, 맥 버전과 윈도우 버전의 도커에는 도커 컴포즈가 같이 설치됩니다. 도커의 설치 과정은 다음 문서를 참고해주세요 

https://docs.docker.com/desktop/

주의: 맥 버전의 도커는 기본 메모리가 2기가이며, 6기가 정도로 충분히 늘려주세요 


참고로 저는 맥 환경에서 실습을 진행하며, 이미 도커가 설치되었다면, 도커의 버전 확인은 다음과 같이 확인 가능합니다.

❯ docker -v

Docker version 20.10.12, build e91ed57


도커 설치가 완료되었으면 다음 명령어를 이용하여 docker-compose.yml 파일을 다운로드합니다.

❯ curl --silent --output docker-compose.yml https://raw.githubusercontent.com/confluentinc/cp-all-in-one/7.0.1-post/cp-all-in-one/docker-compose.yml


파일을 다운로드한 후 -d 옵션을 이용하여 실행합니다. 

❯ docker-compose up -d


개인 로컬 환경에 따라 차이가 있지만, 대략 5분 내로 설치가 완료될 것입니다. 설치가 완료되면, 다음의 화면과 동일한 내용을 확인할 수 있을 것입니다.


컨테이너의 리스트를 확인하는 ps 명령어를 이용하여 컨테이너들이 모두 실행되었는지 확인합니다.

❯ docker-compose ps


다음과 같이 확인이 되면 설치 및 실행이 완료된 것입니다. 만약 개별 컨테이너를 관리하고자 하는 경우는 다음 명령어를 이용하여 재시작 등을 할 수 있습니다. 

❯ docker-compose restart control-center 


도커 환경에서 카프카 동작 실습하기

설치가 완료되었다면, 이제 간단하게 CLI를 이용하여 프로듀서와 컨슈머 동작을 테스트해봅니다. 카프카 클라이언트 사용을 위해 wget 명령어를 이용해 아파치 카프카 3.1 버전을 다운로드한 후 tar 명령어를 이용해 압축을 해제합니다. 

❯ wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.12-3.1.0.tgz

❯ tar zxf kafka_2.12-3.1.0.tgz


압축 해제 완료 후 가장 먼저 실습용 토픽 peter-test01을 생성하겠습니다. 브로커가 하나이므로 파티션 수 1, 리플리케이션 팩터 수 1로 생성합니다. 

❯ kafka_2.12-3.1.0/bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic peter-test01 --partitions 1 --replication-factor 1 --create

Created topic peter-test01.


토픽 생성이 완료되었다면, 먼저 콘솔 컨슈머를 실행합니다. 

❯ kafka_2.12-3.1.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic peter-test01


콘솔 컨슈머를 실행해둔 창은 그대로 두고, 새로운 터미털 창을 오픈합니다. 다음으로 콘솔 프로듀서를 이용하여 peter-test01 토픽으로 hello! kafka! 메시지를 전송해보겠습니다. 

❯ kafka_2.12-3.1.0/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic peter-test01

> hello! kafka! 


앞서 콘솔 컨슈머를 실행한 화면으로 이동해보면, 콘솔 프로듀서를 통해 전송한 hello! kafka! 메시지를 가져왔음을 확인할 수 있습니다. 

 

지금까지 CLI를 이용하여 간단한 카프카 실습을 진행하였습니다. 이외에도 언어별로 간단한 프로듀서, 컨슈머 클라이언트를 만들어 테스트를 해볼 수도 있습니다. 또한 해당 도커 이미지는 컨플루언트에서 제공하는 이미지이므로 GUI 형태로 관리할 수 있는 컨트롤 센터도 포함되어 있습니다. 컨트롤 센터를 이용하고 싶으신 분들은 웹브라우저에서 다음 주소로 접근하시면 컨트롤 센터를 경험해 볼 수 있습니다. 

http://localhost:9021/clusters


도커 환경 중지 및 삭제 

로컬 환경에서 테스트 등이 끝나면, 다음의 명령어를 이용하여 실행했던 컨테이너들을 중지할 수 있습니다.

❯ docker-compose stop


도커를 사용하게 되면, 이미지들을 다운로드하게 되는데, 만약 해당 이미지들을 더 이상 사용하지 않는다고 하면 깔끔하게 삭제하여 디스크 공간을 확보할 필요가 있습니다. 다음 명령어를 실행하면, 다운로드했던 이미지들을 깔끔하게 삭제할 수 있습니다. 

❯ docker system prune -a --volumes --filter "label=io.confluent.docker"


마무리

지금까지 로컬 환경에서 도커를 이용한 카프카를 설치하고, 간단하게 CLI를 이용하여 프로듀서와 컨슈머 동작을 테스트하는 방법을 설명하였습니다. 이렇게 도커를 이용하여 간단한 카프카 환경을 구성한 후 테스트를 할 수 있습니다. 이 내용이 카프카를 처음 접하는 초보자분들에게 조금이나마 도움이 되었으면 합니다. 

다음번에는 지금 설치된 도커 환경에서 응용하는 내용을 다룰 예정입니다. 감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari