쩨이엠 개발 블로그

Kafka 설치 및 실행 본문

개발/ETC

Kafka 설치 및 실행

쩨이엠 2021. 1. 7. 08:52
728x90
반응형

Kafka를 설치해보기로 한다

 

 

1. JAVA 설치

일단 기본적으로 java를 먼저 깔아준다

 
 $ sudo yum install java-1.8.0-openjdk.x86_64
 

 

2. Kafka 설치

카프카를 install하기 전에 먼저 카프카용 user를 생성한다

 
 $ useradd kafka -m
 
 $ passwd kafka //kafka의 비밀번호를 지정
 
 $ sudo usermod -aG wheel kafka // 권한 지정
 
 $ su kafka
 

 

wget으로 설치할 환경이 된다면 밑의 명령어를 쓰면 되지만 

 
 $ wget http://apache.osuosl.org/kafka/2.1.0/kafka_2.12-2.1.0.tgz
 

내 경우에는 wget이 안되는 경우여서 https://downloads.apache.org/kafka/2.5.1/에서 직접 다운로드를 받아 넘겨줬다

 

 

 

kafka압축을 풀고 디렉토리를 지정해준다

 
 $ tar -xvzf kafka_2.12-2.5.1.tgz
 $ mv kafka_2.12-2.5.1/* .
 $ rmdir /home/kafka/kafka_2.12-2.5.1
 

 

 

kafka를 실행하기 위해서는 zookeeper 실행이 선행되어야한다

kafka를 설치하면서 같이 설치된 zookeeper의 properties를 먼저 변경해준다

 

 

3. Zookeeper 설정

config/zookeeper.properties


 # 추가 
 initLimit=5 
 syncLimit=3

 server.1=10.39.192.30:2888:3888
 server.2=10.39.194.129:2888:3888
 server.3=10.39.192.116:2888:3888
 #
 

initLimit

제일 처음 팔로워가 리더와 연결하는 제한 시간

syncLimit

동기화 제한 시간

 

server 3개의 ip와 포트를 적어준다

방화벽 꼭 뚫어줄것 방화벽 안뚫어서 3일을 고생했다

 

server뒤의 숫자는 인스턴스 ID로 zookeeper.properties에 있는 dataDir에 myid로 명시되어있어야 한다

/tmp/zookeeper 디렉토리를 생성하고 myid를 생성해준다

 

 
 #1 서버 (10.39.192.30)
 $ mkdir /tmp/zookeeper
 $ echo 1 > /tmp/zookeeper/myid

 #2 서버 (10.39.194.129)
 $ mkdir /tmp/zookeeper
 $ echo 2 > /tmp/zookeeper/myid

 #3 서버 (10.39.192.116)
 $ mkdir /tmp/zookeeper
 $ echo 3 > /tmp/zookeeper/myid

 

 

 

 

4. Kafka 설정

config/server.properties 도 변경해준다

 
 # 1서버 (10.39.192.30)
 # 수정
 broker.id=1
 listeners=PLAINTEXT://:9092
 advertised.listeners=PLAINTEXT://10.39.192.30:9092
 zookeeper.connect=10.39.192.30:2181,10.39.194.129:2181,10.39.192.116:2181 
 
 #추가
 auto.create.topics.enable = true
 delete.topic.enable= true

 # 2서버 (10.39.194.129)
 # 수정
 broker.id=2
 listeners=PLAINTEXT://:9092
 advertised.listeners=PLAINTEXT://10.39.194.129:9092
 zookeeper.connect=10.39.192.30:2181,10.39.194.129:2181,10.39.192.116:2181
 
 #추가
 auto.create.topics.enable = true
 delete.topic.enable= true

 # 3서버 (10.39.192.116)
 # 수정
 broker.id=3
 listeners=PLAINTEXT://:9092
 advertised.listeners=PLAINTEXT://10.39.192.116:9092
 zookeeper.connect=10.39.192.30:2181,10.39.194.129:2181,10.39.192.116:2181
 
 #추가
 auto.create.topics.enable = true
 delete.topic.enable= true
 

broker.id는 myid와 동일하게 맞춰준다

listeners와 advertised.listeners에 ip및 포트

zookeeper.connect에 3서버의 ip:port를 적어준다

 

auto.create.topics.enable이 없으면 토픽을 생성 후 publish를 해줘야한다

내 경우는 test용으로 잠시 true로 변경

delete.topic.enable이 true일 때 삭제가 가능하다

 

 

5. Zookeeper 및 Kafka 구동

세 서버의 zookeeper를 먼저 구동한다

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

 

 

정상적으로 구동되었다면

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

kafka도 구동이 잘 되어야 한다

 

 

보통 sh 돌리면 알아서 exit가 되어야하는데 안되니까

$ nohup bin/zookeeper-server-start.sh config/zookeeper.properties > /dev/null 2>& 1

으로 구동해준다

 

$ netstat -tnlp로 둘다 잘 돌아가는지 확인해준다

 

잘 돌아가는군

 

6. Topic 생성

마지막으로 테스트를 위해서 Topic을 생성한다

Topic Option은 다음과 같다

  • –create : 토픽 생성
  • –topic : 생성할 토픽명,
  • –zookeeper : 주키퍼가 실행중인 호스트명
  • –partitions : 생성할 토픽의 파티션 수
  • –replication-factor : 생성항 토픽의 복사본 (cluster 떠있는 갯수 만큼 MAX)

test-topic이라는 이름으로 토픽을 생성한다

 

 
 $ bin/kafka-topics.sh --create --zookeeper 10.39.192.30:2181, 10.39.194.129:2181, 10.39.192.116:2181 --replication-factor 3 --partitions 3 --topic test-topic
 

 

생성 후 토픽을 확인한다

 
 $ bin/kafka-topics.sh --describe --zookeeper 10.39.192.30:2181, 10.39.194.129:2181, 10.39.192.116:2181 --topic test-topic
    Topic: test-topic       PartitionCount: 3       ReplicationFactor: 3    Configs:
    Topic: test-topic       Partition: 0    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1
    Topic: test-topic       Partition: 1    Leader: 3       Replicas: 3,1,2 Isr: 3
    Topic: test-topic       Partition: 2    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3
    

 

+ 콘솔에서 Produce와 Consume 하기

 

Produce

 
 $ bin/kafka-console-producer.sh --broker-list 10.39.192.30:9092, 10.39.194.129:9092, 10.39.192.116:9092 --topic test-topic
 

Consume

 
 $ bin/kafka-console-consumer.sh --bootstrap-server 10.39.192.30:9092, 10.39.194.129:9092, 10.39.192.116:9092 --topic sensor-facilitysafety --from-beginning
 
  
728x90
반응형
Comments