Kafka 설치(on AWS) 및 벤치마킹

By | 2022년 4월 19일
Table of Contents

Kafka 설치(on AWS) 및 벤치마킹

우선 하나의 머신을 생성하고, 공통설정을 끝낸 후, 이미지를 생성합니다.
저장된 이미지로 2개의 인스턴스를 추가로 생성하고 클러스터를 실행합니다.

노드 생성 후 Kafka 에 포함되어 있는 Benchmark 툴을 이용해 성능 테스트를 합니다.

AWS EC2 생성

OS 는 Ubuntu 64bit 로 합니다.
인스턴스 유형 은 m5a.large 로 선택합니다.(메모리 8기가)

JDK 설치

sudo apt-get update
sudo apt-get install openjdk-11-jdk

Kafka 계정생성

sudo adduser kafka
sudo su - kafka

Kafka 설치

https://dlcdn.apache.org/kafka/ 에서 원하는 Kafka 버전을 다운받습니다.
(여기서는 2.8.1 을 선택합니다.)

wget https://dlcdn.apache.org/kafka/2.8.1/kafka_2.13-2.8.1.tgz
tar xvfz kafka_2.13-2.8.1.tgz
vi .bashrc
......
export KAFKA_HOME=/home/kafka/kafka_2.13-2.8.1
......

exit
sudo su - kafka
mkdir $KAFKA_HOME/logs
mkdir $KAFKA_HOME/data

hosts 파일 수정

우선은 하나의 노드만 생성중이므로 생성한 인스턴스의 Private IP 를 모두 적어준다.

sudo vi /etc/hosts
......
172.31.28.2   node01
172.31.28.2   node02
172.31.28.2   node03
......

Kafka 추가설정

vi $KAFKA_HOME/config/server.properties
......
broker.id=1
......
listeners=PLAINTEXT://node01:9092
......
log.dirs=/home/kafka/kafka_2.13-2.8.1/logs
......
zookeeper.connect=node01:2181,node02:2181,node03:2181
echo "1" > $KAFKA_HOME/data/myid

vi $KAFKA_HOME/config/zookeeper.properties
......
dataDir=/home/kafka/kafka_2.13-2.8.1/data
......
initLimit=5
syncLimit=2
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
......

ssh 설정추가(비밀번호 없이 각 서버 접속)

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

보안그룹 생성 및 적용

kafka 보안그룹을 생성합니다.
생성한 보안그룹에 kafka 로부터의 모든 트래픽을 허용해 줍니다.

이미지 생성

현재까지 작업한 상태로 이미지를 생성합니다.
이미지 생성에는 5분정도 소요됩니다.

인스턴스 생성

생성한 이미지로 2개의 인스턴스를 추가로 생성합니다.
3개의 인스턴스 호스트 파일을 모두 수정해 줍니다.

sudo vi /etc/hosts
......
172.31.28.2     node01
172.31.24.232   node02
172.31.19.100   node03
......

인스턴스 설정수정

ssh node02
echo "2" > $KAFKA_HOME/data/myid
vi $KAFKA_HOME/config/server.properties
......
broker.id=2
......

ssh node03
echo "3" > $KAFKA_HOME/data/myid
vi $KAFKA_HOME/config/server.properties
......
broker.id=3
......

인스턴스 실행하기

sudo su - kafka

ssh node01
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties &
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties &

ssh node02
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties &
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties &

ssh node03
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties &
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties &

스트래스 테스트

레코드 1000개

export KAFKA_HEAP_OPTS="-Xmx2048M"
$KAFKA_HOME/bin/kafka-producer-perf-test.sh \
    --topic test \
    --num-records 1000 \
    --throughput -1 \
    --producer-props \
    bootstrap.servers=localhost:9092 \
    batch.size=1000 acks=1 linger.ms=100000 \
    buffer.memory=4294967296 \
    request.timeout.ms=300000 \
    --record-size 1000

레코드 10000개

export KAFKA_HEAP_OPTS="-Xmx2048M"
$KAFKA_HOME/bin/kafka-producer-perf-test.sh \
    --topic test \
    --num-records 10000 \
    --throughput -1 \
    --producer-props \
    bootstrap.servers=localhost:9092 \
    batch.size=1000 acks=1 linger.ms=100000 \
    buffer.memory=4294967296 \
    request.timeout.ms=300000 \
    --record-size 1000

레코드 1000000개

export KAFKA_HEAP_OPTS="-Xmx2048M"
$KAFKA_HOME/bin/kafka-producer-perf-test.sh \
    --topic test \
    --num-records 1000000 \
    --throughput -1 \
    --producer-props \
    bootstrap.servers=localhost:9092 \
    batch.size=1000 acks=1 linger.ms=100000 \
    buffer.memory=4294967296 \
    request.timeout.ms=300000 \
    --record-size 1000

2 thoughts on “Kafka 설치(on AWS) 및 벤치마킹

답글 남기기