》 Zookeeper 가 Kafka 관리
》 Kafka 를 통해 메세지 전송
》 Zookeeper&Kafka 서버 다운 방지 : Clustering
◎ 준비 : 가상머신 6대
→ Zookeeper 3대 : 200.200.200.155 & 200.200.200.156 & 200.200.200.157
→ Kafka 3대 : 200.200.200.150 & 200.200.200.151 & 200.200.200.145
[ Zookeeper 설정 ]
》 기본포트 : 2181
》 클러스터링 구성 시 : 2888, 3888 할당
> 하나가 active (leader) & 나머지 standby (follower)
● 설치
# jdk 설치
yum -y install java-1.8.0-openjdk-devel.x86_64
# zookeeper 설치
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
# 압축 해제
tar zxvf apache-zookeeper-3.7.1-bin.tar.gz
# 파일 이동
mv apache-zookeeper-3.7.1-bin /opt/zookeeper
● 파일 설정
# 새폴더 생성 : kafka에 대한 정보를 특정 폴더에 저장
mkdir -p /data/zookeeper
# 파일 복사
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
# 파일 수정
vi /opt/zookeeper/conf/zoo.cfg
# dataDir=/tmp/zookeeper >>> dataDir=/data/zookeeper
# 마지막 줄에 내용 추가
# server.1=[zookeeper ip 1]:2888:3888 # server.[id]
# server.2=[zookeeper ip 2]:2888:3888
# server.3=[zookeeper ip 3]:2888:3888
# 파일 수정
vi /data/zookeeper/myid
# id 입력 (ex. 1/2/3)
● 방화벽 해제
# 방화벽 해제
systemctl stop firewalld
# 실행할 때마다 꺼지게 설정
systemctl disable firewalld
● 실행
# 실행
/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
# 재시작
/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
# 중지
/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
● 확인
/opt/zookeeper/bin/zkServer.sh status
》 출력 결과 : Mode: leader / Mode: follower
[ Kafka 설정 ]
● 설치
# jdk 설치
yum -y install java-1.8.0-openjdk-devel.x86_64
# kafka 설치
wget https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz
# 압축 해제
tar -xzvf kafka_2.13-3.4.0.tgz
# 파일 이동
mv kafka_2.13-3.4.0 /opt/kafka
● /opt/kafka/config/server.properties 파일 설정
# 주석 해제 / 수정
broker.id = [id]
zookeeper.connect=[zookeeper ip 1]:2181,[zookeeper ip 2]:2181,[zookeeper ip 3]:2181
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://[broker ip(자기자신)]:9092
● 방화벽 해제
systemctl stop firewalld
systemctl disable firewalld
● 실행
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
● 확인
》 zookeeper 서버에서 확인
# 실행
/opt/zookeeper/bin/zkCli.sh
# 실행 중인 kafka id 확인
ls /brokers/ids
# id=1/2/3 으로 설정했기 때문에 [1,2,3]으로 출력
# ls / : 설치된 목록 출력
[ 장애 상황 테스트 ]
① Zookeeper 장애
》 Leader 노드 서버가 다운되면 Follwer 노드 중에서 자동적으로 Leader 선출
》 현재 Leader : id=2
》 id=2 서버 다운 시 변경된 Leader : id=3
② Kafka 장애
》 서버 다운 시 zookeeper 서버 /opt/zookeeper/bin/zkCli.sh 프로그램 실행 후 ls /brokers/ids 목록에 출력 안됨
》 id=1 인 kafka 서버 다운 시
③ 장애 상황일 때 메세지 확인
# topic 목록 확인
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server [kafka ip 1]:9092,[kafka ip 2]:9092,[kafka ip 3]:9092
# topic 생성
/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server [kafka ip 1]:9092,[kafka ip 2]:9092,[kafka ip 3]:9092 --replication-factor [factor 개수] --partitions [partition 개수] --topic [생성할 topic 이름]
# topic 상세 확인
/opt/kafka/bin/kafka-topics.sh --bootstrap-server [kafka ip 1]:9092,[kafka ip 2]:9092,[kafka ip 3]:9092 --topic [확인할 topic 이름] --describe
'CLOUD > OpenSource' 카테고리의 다른 글
[Kibana] 시작하기 (0) | 2023.03.22 |
---|---|
[ElasticSerach] 시작하기 (0) | 2023.03.22 |
[Kafka] 게시글 등록 현황 실시간으로 확인 하기 (0) | 2023.03.21 |
[Kafka] REST Proxy 서버를 이용한 메세지 전송 (0) | 2023.03.21 |
[Kafka] 웹 브라우저 동작 시 Consumer 에 토픽 메세지 전송 (2) | 2023.03.20 |