https://twofootdog.tistory.com/90
준비
- root 계정으로 변경
>> su - 호스트네임 변경
>> hostnamectl set-hostname kafka01
(나는 주키퍼 서버에 설치하기 때문에 zk01, zk02, zk03 사용)
카프카 다운로드
- 카프카 다운로드
>> cd /usr/local
>> wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz - 압축 풀기
>> tar -xvf kafka_2.13-3.1.0.tgz - 심볼릭 링크 생성
>> ln -s kafka_2.13-3.1.0 kafka
환경설정
- 데이터 디렉토리 생성 (컨슈머가 메시지를 가져가도 데이터를 임시보관하는 기능이 있음)
>> mkdir -p /data1 && mkdir -p /data2 - 환경설정 파일 수정
>> vi /usr/local/kafka/config/server.properties
############################# Server Basics #############################
broker.id=0
...
############################# Log Basics #############################
log.dirs=/tmp/kafka-logs
...
############################# Zookeeper ############################# zookeeper.connect=localhost:2181
...
1) broker.id : 브로커를 구분하는 아이디다. 이 글에서는 카프카 브로커 아이디를 호스트 명에 맞게 숫자로 지정해주겠다
(zk01 -> 1, zk02 -> 2, zk03 -> 3)
2) log.dir : 로그가 저장되는 위치다. 조금 전 생성했던 카프카 저장 디렉토리인 /data1, /data2를 입력해준다.
3) zookeeper.connect : 주키퍼 접속 정보다. 주키퍼 앙상블에 해당하는 호스트명:포트번호를 입력한다. 그런데 그냥 호스트명:포트번호만 입력하면, 여러 개의 카프카에서 주키퍼에 접근하여 지노드를 사용할 때 동일한 지노드를 사용하게 되어 충돌이 발생할 수 있으므로, 호스트명:포트번호 뒤에 지노드 이름을 추가로 입력해야 한다(이 글에서는 지노드 이름을 카프카 호스트명 + _znode 로 입력할 것이다)
// kafka01(zk01) 호스트 기준
############################# Server Basics #############################
broker.id=1
...
############################# Log Basics ############################# log.dirs=/data1,/data2
...
############################# Zookeeper ############################# zookeeper.connect=zk01:2181,zk02:2181,zk03:2181/kafka01_znode
그 외에도 환경설정 파일에는 설정할 수 있는 여러 옵션이 있다.
- delete.topic.enable : 토픽 삭제 기능을 ON/OFF (enable = 토픽 삭제 가능)
- default.replication.factor : 리플리케이션 팩터(Replication Factor) 옵션을 주지 않았을 경우의 기본값
- min.insync.replicas : 최소 리플리케이션 팩터
- auto.create.topic.enable : 존재하지 않는 토픽으로 퍼블리셔가 메시지를 보냈을 때 자동으로 토픽 생성
- log.retention.hours : 저장된 로그의 보관 주기
- compression.type : 토픽의 최종 압축 형태. gzip, snappy, lz4 등의 표준 압축 포맷 지원
- zookeeper.session.timeout.ms : 브로커와 주키퍼 사이의 최대 연결 대기 시간. 해당 시간동안 주키퍼와 연결되지 않으면 타임아웃
- message.max.bytes : 카프카에서 허용되는 가장 큰 메시지 크기
좀 더 자세한 환결설정 정보는 아파치 카프카 웹페이지에서 확인하자(kafka.apache.org/documentation/#brokerconfigs)
카프카 실행/종료
- 카프카 실행
>> /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties - 방화벽 설정
>> ufw allow 9092
systemd를 이용한 카프카 관리
- service 파일 생성
>> vi /etc/systemd/system/kafka-server.service
[Unit]
Description=kafka-server
After=network.target
[Service]
Type=simple
User=root
Group=root
SyslogIdentifier=kafka-server
WorkingDirectory=/usr/local/kafka
Restart=no
RestartSec=0s
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
- systemd 재시작
>> systemctl daemon-reload - 서비스 실행
>> systemctl start kafka-server.service - 실행 확인
>> systemctl status kafka-server.service
>> netstat -ntlp | grep 9092
주키퍼 연결 확인
- 주키퍼 CLI 접속
>> /usr/loca/zookeeper/bin/zkCli.sh - 명령어 입력
>> ls /
'만들기 > EagleEye' 카테고리의 다른 글
[EagleEye][환경세팅] Docker 설치 (0) | 2022.04.27 |
---|---|
[EagleEye][환경세팅] Redis 설치 (0) | 2022.04.27 |
[EagleEye][환경세팅] Nginx 설치 (0) | 2022.04.26 |
[EagleEye][환경세팅] 주키퍼 설치 (0) | 2022.04.26 |
[EagleEye][환경세팅] 리눅스(라즈베리파이) 환경세팅 (0) | 2022.04.21 |