KAFKA 설치 및 실행
KAFKA 설치 및 실행
요약
- EC2인스턴스 한개를 이미지용으로 생성하여 환경세팅 및 Kafka를 설치 한다.
- AMI을 떠서 추가 브로커서버 2개의 인스턴스를 생성한다.
- 각각 브로커의 정수로 구분되는 id를 변경 및 각각 브로커간의 control을 위한 9093포트의 public ip를 지정 및 9092포트로 접근하는 listener의 public ip를 지정하고, 각 topic의 파티션을 3개로 결정하도록, /config/kraft/server.properties를 통해 수정한다.
- 클러스터id를 랜덤으로 생성하고, 이를 동일하게 반영해준다.
- ZOOKEEPER대신 사용해야하는 메타데이터 카프카모드를 위해 토픽, 파티션 정보를 포맷팅한다.
- 메시지큐의 사이즈를 지정해준다. t2.xlarge→ 16gb
- 3개의 브로커에 kafka를 실행시키고, logs/server-logs를 확인한다.
EC2 인스턴스 생성 및 기본 세팅
t2.2xlarge로 인스턴스 하나를 생성한다. 이 인스턴스를 통해 AMI이미지를 뜰 것이다. 그리고 퍼블릭dns를 통해 서버에 원격접속한 후 다음과 같이 업데이트 해준다.
sudo apt update && \
sudo apt install build-essential -y
@자바설치
sudo apt-get install openjdk-8-jdk -y
KAFKA 다운로드
kafka를 다음과 같은 버전으로 다운 받는다.
wget https://downloads.apache.org/kafka/3.2.3/kafka_2.12-3.2.3.tgz \
&& tar xzf kafka_2.12-3.2.3.tgz
#환경변수 설정
echo 'export KAFKA_HOME=/home/ubuntu/kafka_2.12-3.2.3' >> ~/.bashrc \
&& source ~/.bashrc
AMI이미지 및 기본세팅
다음과 같이 3개의 인스턴스를 ami로 부터 생성한다.
이제 3개의 인스턴스에 대해 각각 설정을 해주어야한다.
각 브로커서버에 원격접속한 후,
$KAFKA_HOME/config/kraft/server.properties를 편집한다.
vi $KAFKA_HOME/config/kraft/server.properties
다음과 같이 각 노드들의 값을 수정한다.
node.id=1
controller.quorum.voters=1@$NODE_1_PUBLIC_IP:9093,2@$NODE_2_PUBLIC_IP:9093,3@$NODE_3_P
UBLIC_IP:9093
num.partitions=3
advertised.listeners=PLAINTEXT://$NODE_1_PUBLIC_IP:9092
node.id=2
controller.quorum.voters=1@$NODE_1_PUBLIC_IP:9093,2@$NODE_2_PUBLIC_IP:9093,3@$NODE_3_P
UBLIC_IP:9093
num.partitions=3
advertised.listeners=PLAINTEXT://$NODE_2_PUBLIC_IP:9092
node.id=3
controller.quorum.voters=1@$NODE_1_PUBLIC_IP:9093,2@$NODE_2_PUBLIC_IP:9093,3@$NODE_3_P
UBLIC_IP:9093
num.partitions=3
advertised.listeners=PLAINTEXT://$NODE_3_PUBLIC_IP:9092
클러스터ID(s1,s2,s3동일함) 설정 및 포맷팅
1번 서버에서 클러스터 id를 랜덤으로 생성하는 스크립트를 통해 생성한후
2,3번서버에서 붙여넣기 해준다.
export KAFKA_CLUSTER_ID="$($KAFKA_HOME/bin/kafka-storage.sh random-uuid)"
export KAFKA_CLUSTER_ID={1에서 생성한 클러스터 id}
#각서버에서 진행하기
$KAFKA_HOME/bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c $KAFKA_HOME/config/kra
ft/server.properties
#15GB으로 힙 제한하기 (t2.xlarge이기 때문에)
echo export KAFKA_HEAP_OPTS="-Xmx15G -Xms15G"
KAFKA 실행하기
3개의 브로커에 대해서 각각 KAFKA를 실행한다.
$KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/kraft/server.properti
es
# 로그확인하기
vi /logs/server-log
리더노드가 동일하게 지정이되고, 나머지는 follow상태라는 것을 확인했다면 제대로 구성이된 것이다.
KAFKA Cosole Script 실습
토픽생성하기
kafka는 토픽이 생성되어있지 않다면 어떤 작동도 하지 않는다. 그렇기 때문에 토픽을 먼저 생성해야하는데, 기본적으로 간단한 토픽을 생성하는 script를 제공해준다.
#토픽생성하기
$ $KAFKA_HOME/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-serve
r 0.0.0.0:9092
#생성된 토픽에대한 정보 보기
$ $KAFKA_HOME/bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-ser
ver 0.0.0.0:9092
출력 :
#자동으로 생성한 토픽아이디나 각 파티션 정보 및 리더에대한 정보를 확인할 수 있다.
Topic: quickstart-events TopicId: HTsUV-3HQMqZvGELnHqVyg Partition Count: 3 ReplicationFactor: 1 Configs: segment.bytes=1073741824
Topic: quickstart-events Partition: 0 Leader: 3 Replicas: 3 Isr: 3
Topic: quickstart-events Partition: 1 Leader: 1 Replicas: 1 Isr: 1
Topic: quickstart-events Partition: 2 Leader: 2 Replicas: 2 Isr: 2
토픽에서 이벤트 쓰기 및 읽기
#쓰는 서버(Producer)
$ $KAFKA_HOME/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-serv
er localhost:9092
> #이부분에 작성해주면 된다.
#읽어오는 서버(Consumer)
$ $KAFKA_HOME/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning
--bootstrap-server localhost:9092
댓글남기기