아파치 카프카의 웹 페이지를 보면 카프카를 처음 접하는 사람들도 쉽게 써볼 수 있는 "퀵 스타트(Quick Start)" 항목이 있다. 다운로드부터 간단한 실행까지 쉽게 따라할 수 있는 예제들이 정리되어 있다.
1. 다운로드
카프카 다운로드 페이지에서 카프카 릴리즈 패키지를 다운로드 할 수 있다. 참고로 카프카 아카이브에서 이전 버전을 포함한 다양한 버전의 카프카 릴리즈 패키지를 내려받을 수 있다.
적당한 패키지를 다운로드하고 압축을 풀어준다.
1 2 | $ tar -xzf kafka_2.11-2.1.0.tgz $ cd kafka_2.11-2.1.0 | cs |
2. 서버 시작
압축을 풀어내면 카프카를 위한 다양한 바이너리들과 설정 파일들이 들어있다.
카프카는 주키퍼를 사용해 내부 클러스터 멤버십 관리를 한다. 따라서 카프카를 구동하기 전에 주키퍼가 먼저 실행되어 있어야 한다. 따로 운영중인 주키퍼 앙상블이 없다면 카프카 릴리즈 패키지에 포함되어 있는 주키퍼를 사용한다.
1 2 3 | $ bin/zookeeper-server-start.sh config/zookeeper.properties [2018-12-12 18:31:57,228] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig) ... | cs |
bin 디렉토리에 있는 zookeeper-server-start.sh 스크립트는 1개의 서버로 구동되는 주키퍼를 구동시켜준다.
터미널을 하나 더 열어서 카프카 브로커를 구동해보자.
1 2 3 | $ bin/kafka-server-start.sh config/server.properties [2018-12-12 18:32:31,657] INFO KafkaConfig values: ... | cs |
카프카 서버가 부팅된다. 이제 카프카 브로커가 구동되었다.
3. 카프카 토픽 생성
카프카에서 사용할 토픽을 하나 만들어 보자. 카프카는 토픽을 만들 수 있는 스크립트를 제공한다.
1 2 | $ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test Created topic "test". | cs |
kafka-topics.sh 라는 쉘 스크립트는 카프카 토픽을 만들고 관련 정보를 볼 수 있는 도구다. --topic 옵션으로 명시한 이름으로 토픽이 생성된다. 여기에서는 test 라는 이름의 토픽을 만들었다.
이제 만들어진 토픽을 확인해보자.
1 2 | $ bin/kafka-topics.sh --list --zookeeper localhost:2181 test | cs |
카프카 클러스터에 만들어진 토픽 리스트를 보여주는 명령이다. 방금 만든 test 라는 토픽을 확인할 수 있다.
만약 브로커를 구동할 때 사용한 설정파일(server.properties)에 "auto.create.topics.enable" 항목이 설정되어 있으면, 프로듀서가 존재하지 않는 토픽에 메시지를 전송할 때 자동으로 토픽이 생성된다. 다만 무분별하게 토픽이 생성될 수 있기 때문에 추천하는 설정은 아니다. 꼭 필요한 경우만 설정한다.
4. 카프카 메시지 전송(프로듀서)
이제 구동 중인 카프카에 메시지를 전송해보겠다.
카프카 릴리즈 패키지에는 간단하게 문자열을 카프카로 전송해 볼 수 있는 콘솔 프로듀서가 제공된다. (bin 디렉토리 밑에 kafka-console-producer.sh 스크립트가 이에 해당한다.) 콘솔 프로듀서는 사용자의 표준 입력(Standard Input)에서 받은 입력을 카프카로 전송한다.
1 | $ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test | cs |
그리고 전송하고 싶은 메시지를 입력한다.
1 2 | Test Message 1 Test Message 2 | cs |
"Test Message 1", "Test Message 2"라는 문자열을 카프카로 전송했다.
5. 카프카 메시지 읽기(컨슈머)
이제 전송한 메시지를 읽어보겠다. 콘솔 프로듀서와 마찬가지로 카프카 릴리즈 패키지에는 콘솔 컨슈머도 제공된다. 카프카에서 메시지를 읽어 표준출력(Standard Out)으로 출력해주는 툴이다.
다음 명령을 수행한다.
1 2 3 | $ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning Test Message 1 Test Message 2 | cs |
6. 여러 브로커 구동하기
1 2 | $ cp config/server.properties config/server-1.properties $ cp config/server.properties config/server-2.properties |
1 2 3 4 5 6 7 8 9 10 | config/server-1.properties: broker.id=1 listeners=PLAINTEXT://:9093 log.dirs=/tmp/kafka-logs-1 config/server-2.properties: broker.id=2 listeners=PLAINTEXT://:9094 log.dirs=/tmp/kafka-logs-2 | cs |
1 2 3 4 | config/server.properties: broker.id=0 listeners=PLAINTEXT://:9092 log.dirs=/tmp/kafka-logs |
1 2 3 4 | $ bin/kafka-server-start.sh config/server-1.properties & ... $ bin/kafka-server-start.sh config/server-2.properties & ... |
1 | $ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic haTopic | cs |
1 2 3 | $ bin/kafka-topics.sh --list --zookeeper localhost:2181 haTopic test | cs |
1 2 3 | $ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic haTopic Topic:haTopic PartitionCount:1 ReplicationFactor:3 Configs: Topic: haTopic Partition: 0 Leader: 2 Replicas: 2,0,1 Isr: 2,0,1 |
1 2 3 | $ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test Topic:test PartitionCount:1 ReplicationFactor:1 Configs: Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0 | cs |
1 2 3 | $ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic haTopic Test message to haTopic1 Test message to haTopic2 | cs |
1 2 3 | $ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic haTopic Test message to haTopic1 Test message to haTopic2 | cs |
1 2 3 4 | $ ps aux | grep server.properties 7564 ttys002 0:15.91 /System/Library/Frameworks/JavaVM.framework/Versions/1.8/Home/bin/java... ... $ kill -9 7564 | cs |
1 2 3 | $ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic haTopic Topic:haTopic PartitionCount:1 ReplicationFactor:3 Configs: Topic: haTopic Partition: 0 Leader: 2 Replicas: 2,0,1 Isr: 2,1 | cs |
1 2 3 | $ bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --from-beginning --topic haTopic Test message to haTopic1 Test message to haTopic2 | cs |
댓글