본문 바로가기

Web/Kafka

[kafka] Elastic Stack과 Kafka 실습해보자! - (1)(설치 및 구성)

카프카만 하기엔 아쉬운데? ES도 한번 도전해보자

카프카만 하기엔 시간이 아깝기에 ES도 함께 적용시켜보는 아주아주 간단한 실습을 진행해보려합니다.

우선은 카프카부터 시작해봅시다. 모든 시작은 설치부터 해야겠죠?

 

0. 실습 구성

실습은 아래의 준비물들로 진행됩니다.

  • 서버 2대
  • Java 11 (미리 설치!)
  • Spring Boot 프로젝트

1. 카프카 서버 구성 및 설치

카프카를 하나의 서버에 구성하기에는 실무와 어울리지 않으므로 어떻게든 2개 이상의 서버로 구성해보려 했습니다.

카프카 서버 2대와 zookeeper 서버 1대로 구성을 하려고 합니다. 하지만 서버가 2대밖에 없네요. 그러므로 아래와 같이 구성했습니다.

 

  • 1번 서버 - kafka broker(1), zookeeper
  • 2번 서버 - kafka broker(2)

위의 서버에 kafka를 설치해줍니다. 

 

카프카 다운로드 링크 : kafka.apache.org/downloads

 

위의 링크에서 카프카를 다운로드 받아줍시다. 

 

Source를 받으셔도 되고 Binary를 다운로드 받아도 됩니다. 우클릭하여 링크 주소를 복사해주고 wget을 이용하여 다운로드 해줍니다.

//다운로드
wget https://archive.apache.org/dist/kafka/2.2.1/kafka_2.11-2.2.1.tgz

//압축 해제
tar -xzf kafka_2.11-2.2.1.tgz

카프카는 zookeeper 위에서 실행되기에 위의 를 설치 받으면 zookeeper도 같이 받아지게 됩니다. 하지만 이 실습에서는 1번 서버에서만 zookeeper를 사용할겁니다.

 

2. Kafka 설정

kafka를 잘 다운로드 받았으니 설정을 진행해봅시다. 최대한 설정을 많이 수정하지 않고 진행하려고 합니다.

port를 변경하거나 zookeeper 서버를 여러대를 사용하는 방법은 이후에 따로 정리하겠습니다.

압축 해제를 한 폴더로 들어가서 /config/server.properties 파일을 수정합니다.

//파일 수정 모드 진입
$ vi /config/server.properties

1) broker.id는 서버당 중복되지 않게 하나씩 할당합니다.

//broker.id 각 서버에 중복되지 않게 수정
//이 실습에서는 1번 서버는 0, 2번 서버는 1로 수정
############################# Server Basics #############################

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0

2) log를 편하게 확인하기 위해 쌓을 폴더를 편한 곳으로 수정해줍니다.

############################# Log Basics #############################

# A comma separated list of directories under which to store log files
log.dirs=/kafka/logs/data1

3) 연결할 Zookeeper서버를 지정해 줍니다.

############################# Zookeeper #############################

# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=[zookeeper 서버 ip]:2181/[znode명]

 

 

zookeeper.connect에 자신의 zookeeper 서버들을 지정해주고 마지막에 /[znode명]을 넣어주는 것을 추천드립니다. 노드명을 따로 지정해주지 않으면 zookeeper 루트 노드에 저장되고 관리가 힘들어지므로 나눠줍니다.

 

간단하게 실습하기 위한 설정이므로 최소한만 수정하려고 했습니다.

zookeeper는 설정 안해도 되나?

zookeeper는 어차피 1대만 사용할 것이므로 특별히 설정해 줄 필요가 없습니다.

 

3. zookeeper, kafka 실행

이제 설정을 적용해서 프로세스를 실행해줍시다.

zookeeper를 우선 실행해줍니다.

$ bin/zookeeper-server-start.sh ../config/zookeeper.properties

정상적으로 실행되었다면 이제 kafka를 실행해줍니다. 2개의 서버 모두 실행해줍니다.

$ bin/kafka-server-start.sh ../config/server.properties

 

4. Topic 생성

실습을 진행하기 위해 테스트를 위한 토픽을 생성해봅시다.

replica는 서버가 2대이므로 2로 설정해주고 partitions은 처리량을 기반으로 설정해야하지만 가볍게 2개정도면 충분해 보입니다.

  • replication-factor 2
  • partitions 2
./kafka-topics.sh --zookeeper [Zookeeper IP]:2181/[znode name] --create --replication-factor 2 --partitions 2 --topic [Topic]

 

5. 다음으로

처음은 가볍게 설치까지 하는 것으로 마무리합니다. (제가 끈기가 많이 부족합니다.. ㅎㅎ)

다음에는 Spring Boot 프로젝트에 Producer와 Consumer를 만들어 테스트해보겠습니다.

반응형