관리 메뉴

IT.FARMER

kafka 설치 (Single mode) 본문

MessageQueue/Kafka

kafka 설치 (Single mode)

아이티.파머 2023. 6. 9. 10:24
반응형

2020.05.13 - [MessageQueue/Kafka] - kafka cluster 구성

 

kafka 설치 (Single mode)

1. kafka 최신 파일 다운로드

💡 kafka는 단독으로 동작되지 않고 zookeeper에 의해 관리 되기 때문에 zookeeper를 함께 설치 하여하 한다. 기본적으로 kafka를 다운받으면 기본적으로 검증된 zookeeper 가 들어 있기때문에 다운 받지 않고 패키지 않에 들어 있는 zookeeper를 사용한다.

 

wget <https://downloads.apache.org/kafka/2.7.0/kafka_2.12-2.7.0.tgz>
--2021-03-18 15:37:56--  <https://downloads.apache.org/kafka/2.7.0/kafka_2.12-2.7.0.tgz>
Resolving downloads.apache.org (downloads.apache.org)... 88.99.95.219, 2a01:4f8:10a:201a::2
Connecting to downloads.apache.org (downloads.apache.org)|88.99.95.219|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 68684719 (66M) [application/x-gzip]
Saving to: ‘kafka_2.12-2.7.0.tgz’

100%[===================================================================================================================================================>] 68,684,719  8.93MB/s   in 9.6s   

2021-03-18 15:38:07 (6.85 MB/s) - ‘kafka_2.12-2.7.0.tgz’ saved [68684719/68684719]

tar -xvzf  kafka_2.12-2.7.0.tgz
cd kafka_2.12-2.7.0

2. Zookeeper 설정

각 인스턴스에 설치된 Kafka의 config/zookeeper.properties 파일은 하나의 Zookeeper를 실행하는데 쓰이는 설정 파일이다. 이 말은 zookeeper1.properties, zookeeper2.properties, ookeeper3.properties 이런식으로 여러개의 설정파일을 만들고 하나의 장비에서 다중으로 실행할 수 있다는 의미이다.

설정파일을 다음과 같이 3대의 서버에 동일하게 추가하자.

vi config/zookeeper.properties

# the directory where the snapshot is stored.
dataDir=/data/zookeeper

# the port at which the clients will connect
clientPort=2181

# disable the per-ip limit on the number of connections 
# since this is a non-production config
maxClientCnxns=0

initLimit=5
syncLimmit=2

새로 추가한 설정값은 클러스터를 구성하는데 필요한 설정 값들안데 여기서 주의할 점은 모든 Zookeeper 서버들은 동일한 변수 값을 가지고 있어야 한다.

2.1 zookeeper properties 옵션 정보

주키퍼 기본 옵션 정보

  • initLimit
  • 팔로워가 리더와 초기에 연결하는 시간에 대한 타임아웃 설정
  • syncLimit
    • 팔로워가 리더와 동기화 하는데에 대한 타임아웃.
    • 즉 이 틱 시간안에 팔로워가 리더와 동기화가 되지 않는다면 제거 된다.
    • 이 두값은 dafault 기본값이 없기 때문에 반드시 설정해야 하는 값이다.그리고 server.1,2,3의 숫자는 인스턴스 ID이다.

2.2. myid 설정

  • zookeeper 설치후 myid 파일을 생성하여 각 서버의 고유 ID를 설정한다.
  • myid 명시 파일은 dataDir=/data/zookeeper 폴더에 생성한다.
#server-(1)   
mkdir  -p /data/zookeeper
# Single Mode 에서는 설정 안해됨
echo 0 > /data/zookeeper/myid

3. Kafka 설정

Kafka의 config/server.properties 파일은 하나의 Kafka를 실행하는데 쓰이는 설정 파일이다. Zookeeper와 마찬가지로 여러개의 설정파일을 만들고 다중 실행을 할 수 있다. 설정파일 config/server.properties에 3대 서버 각 환경에 맞는 정보를 입력해 준다. (클러스터링 구성시 기본 3대구성)

> vim config/server.properties

#개발서버 1번 IP
##########################
#서버 1 
##########################
broker.id=0
listeners=PLAINTEXT://:9092
# 컨슈머나, 프로듀서에서 접속할 아이피 혹은 도메인 정보 (설치된 서버의 아이피정보)
advertised.listeners=PLAINTEXT://127.0.0.1:9092

💡 zookeeper.connect 에서 마지막 /ykkim-kafka는 주기퍼노드명이다. 이를 설정 하지 않으면 주기퍼 루트노드에 저장된다. 그렇게 되면 관리하기가 어려우므로 이렇게 별도로 노드명을 기재해준다.

 

4. zookepper 및 kafka 실행

# 주키퍼 실행
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > /dev/null &

# 카프카 실행
nohup bin/kafka-server-start.sh config/server.properties > /dev/null &

#주키퍼 포트확인
netstat -ntlp | grep 2181

#카프카 포트확인
netstat -ntlp | grep 9092

#log 확인 (zookeeper, kafka)
tail -f /logs/server.log

5. Service 등록

5.1 주키퍼 서비스 등록 설정

vi /etc/systemd/system/zookeeper.service

[Unit]
Description=zookeeper
After=network.target

[Service]
Type=forking
User=root
Group=root
SyslogIdentifier=zookeeper
WorkingDirectory=/home/mezzo/message-queue/kafka_2.12-2.2.1/
Restart=always
RestartSec=0s
ExecStart=/home/mezzo/message-queue/kafka_2.12-2.2.1/bin/zookeeper-server-start.sh /home/mezzo/message-queue/kafka_2.12-2.2.1/config/zookeeper.properties
ExecStop=/home/mezzo/message-queue/kafka_2.12-2.2.1/bin/zookeeper-server-stop.sh

[Install]
WantedBy=multi-user.target

systemctl daemon-reload

systemctl start zookeeker.service

5.2 kafaka Service 등록 설정

서비스 시작 명령어 nohup bin/kafka-server-start.sh config/server.properties > /dev/null & ← 사용할것

vi /etc/systemd/system/kafka.service

[Unit]
Description=kafka
After=network.target

[Service]
Type=simple
User=root
Group=root
SyslogIdentifier=kafka
WorkingDirectory=/home/mezzo/message-queue/kafka_2.12-2.2.1/
Restart=always
RestartSec=0s
ExecStart=/home/mezzo/message-queue/kafka_2.12-2.2.1/bin/kafka-server-start.sh /home/mezzo/message-queue/kafka_2.12-2.2.1/config/server.properties
ExecStop=/home/mezzo/message-queue/kafka_2.12-2.2.1/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

5.3 데몬 등록 및 시작

  • 서비스 데몬 재시작
    • systemctl daemon-reload
  • 주키퍼/카프카 실행
    • systemctl start zookeeper.service
    • systemctl start kafka.service
  • 실행 상태 확인
    • systemctl status zookeeper.service
    • systemctl status kafka.service
  • 시스템 부팅할때 자동실행 설정
    • systemctl enable zookeeper.service
    • systemctl enable kafka.service
  • 서비스 로그 보기
    • journalctl -u ${serviceName}
    • journalctl -xe
반응형