199 lines
5.0 KiB
Markdown
199 lines
5.0 KiB
Markdown
|
#### Windows
|
|||
|
- 다운로드
|
|||
|
> https://kafka.apache.org/downloads
|
|||
|
> Scala 2.13에 해당하는 .tgz파일 다운받아서 임의경로에 압축해제
|
|||
|
|
|||
|
- Zookeeper 실행
|
|||
|
``` CMD
|
|||
|
cd C:\Dev\kafka_2.13-3.2.1\bin\windows &
|
|||
|
.\zookeeper-server-start.bat ..\..\config\zookeeper.properties
|
|||
|
|
|||
|
```
|
|||
|
- Kafka 서버 실행
|
|||
|
```CMD
|
|||
|
(관리자권한으로 실행)
|
|||
|
|
|||
|
cd C:\Dev\kafka_2.13-3.2.1\bin\windows &
|
|||
|
.\kafka-server-start.bat ..\..\config\server.properties
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
- 실행확인
|
|||
|
- Kafka 서버 : 9092
|
|||
|
- zookeeper : 2181
|
|||
|
|
|||
|
|
|||
|
##### 클러스터 구성
|
|||
|
1. 각 서버의 config/server.propertise내용 수정
|
|||
|
> 각 서버 구성에 맞게 IP, Port수정, broker.id 중복 안되도록 설정
|
|||
|
``` Properties
|
|||
|
broker.id=1
|
|||
|
listeners=PLAINTEXT://:9092
|
|||
|
advertised.listeners=PLAINTEXT://192.168.12.21:9092
|
|||
|
num.network.threads=3
|
|||
|
num.io.threads=8
|
|||
|
socket.send.buffer.bytes=102400
|
|||
|
socket.receive.buffer.bytes=102400
|
|||
|
socket.request.max.bytes=104857600
|
|||
|
|
|||
|
log.dirs=/tmp/kafka-logs
|
|||
|
num.partitions=1
|
|||
|
num.recovery.threads.per.data.dir=1
|
|||
|
|
|||
|
offsets.topic.replication.factor=1
|
|||
|
transaction.state.log.replication.factor=1
|
|||
|
transaction.state.log.min.isr=1
|
|||
|
|
|||
|
log.retention.hours=168
|
|||
|
log.segment.bytes=1073741824
|
|||
|
log.retention.check.interval.ms=300000
|
|||
|
|
|||
|
zookeeper.connect=192.168.12.21:2181, 192.168.12.168:2181
|
|||
|
zookeeper.connection.timeout.ms=18000
|
|||
|
group.initial.rebalance.delay.ms=0
|
|||
|
```
|
|||
|
|
|||
|
2. config/zookeeper.properties 내용 수정
|
|||
|
```Properties
|
|||
|
dataDir=/tmp/zookeeper
|
|||
|
clientPort=2181
|
|||
|
maxClientCnxns=0
|
|||
|
admin.enableServer=false
|
|||
|
|
|||
|
initLimit=5
|
|||
|
syncLimit=2
|
|||
|
server.1=192.168.12.21:2888:3888
|
|||
|
server.2=192.168.12.168:2888:3888
|
|||
|
```
|
|||
|
|
|||
|
3. 위 dataDir 경로에 myid파일생성(확장자 없음)후 broker.id 입력
|
|||
|
|
|||
|
4. logs폴더의 meta.properties파일을 삭제 후 kafka 서버 기동
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
|
|||
|
#### WSL
|
|||
|
```Shell
|
|||
|
## 다운로드
|
|||
|
wget http://downloads.apache.org/kafka/3.2.1/kafka_2.13-3.2.1.tgz
|
|||
|
|
|||
|
# 압축해제 및 경로이동
|
|||
|
tar -zxvf kafka_2.13-3.2.1.tgz $ cd kafka_2.13-3.2.1
|
|||
|
|
|||
|
# 주키퍼 설정파일 백업
|
|||
|
cp kafka_2.13-3.2.1/config/zookeeper.properties kafka_2.13-3.2.1/config/zookeeper_origin.properties
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# 앙상블구성 준비 ####################################################
|
|||
|
## Zookeeper설정
|
|||
|
vi config/zookeeper.properties
|
|||
|
|
|||
|
initLimit=5
|
|||
|
|
|||
|
syncLimit=2
|
|||
|
|
|||
|
server.1=192.168.12.21:2888:3888
|
|||
|
|
|||
|
server.2=192.168.12.168:2888:3888
|
|||
|
|
|||
|
## myid 설정 (각각의 서버에서 설정)
|
|||
|
#server-(1) (192.168.0.202)
|
|||
|
mkdir /tmp/zookeeper
|
|||
|
echo 1 > /tmp/zookeeper/myid
|
|||
|
|
|||
|
|
|||
|
#server-(2) (192.168.0.193)
|
|||
|
mkdir /tmp/zookeeper
|
|||
|
echo 2 > /tmp/zookeeper/myid
|
|||
|
|
|||
|
|
|||
|
#server-(3) (192.168.0.208)
|
|||
|
mkdir /tmp/zookeeper
|
|||
|
echo 3 > /tmp/zookeeper/myid
|
|||
|
|
|||
|
## 카프카 설정(각각의 서버에서 설정)
|
|||
|
vi config/server.properties
|
|||
|
#192.168.0.202 개발서버 1번 IP
|
|||
|
#192.168.0.193 개발서버 2번 IP
|
|||
|
#192.168.0.208 개발서버 3번 IP
|
|||
|
|
|||
|
##########################
|
|||
|
#서버 1
|
|||
|
##########################
|
|||
|
broker.id=1
|
|||
|
listeners=PLAINTEXT://:9092
|
|||
|
advertised.listeners=PLAINTEXT://192.168.0.202:9092
|
|||
|
|
|||
|
#서버1호스트명:서버1포트,서버2호스트명:서버2포트,서버3호스트명:서버2포트/주기퍼노드명
|
|||
|
zookeeper.connect=192.168.0.202:2181, 192.168.0.193:2181, 192.168.0.208:2181
|
|||
|
|
|||
|
##########################
|
|||
|
#서버 2
|
|||
|
##########################
|
|||
|
broker.id=2
|
|||
|
listeners=PLAINTEXT://:9092
|
|||
|
advertised.listeners=PLAINTEXT://192.168.0.193:9092
|
|||
|
|
|||
|
#서버1호스트명:서버1포트,서버2호스트명:서버2포트,서버3호스트명:서버2포트/주기퍼노드명
|
|||
|
zookeeper.connect=192.168.0.202:2181, 192.168.0.193:2181, 192.168.0.208:2181
|
|||
|
|
|||
|
##########################
|
|||
|
#서버 3
|
|||
|
##########################
|
|||
|
broker.id=3
|
|||
|
listeners=PLAINTEXT://:9092
|
|||
|
advertised.listeners=PLAINTEXT://192.168.0.208:9092
|
|||
|
|
|||
|
#서버1호스트명:서버1포트,서버2호스트명:서버2포트,서버3호스트명:서버2포트/주기퍼노드명
|
|||
|
zookeeper.connect=192.168.0.202:2181, 192.168.0.193:2181, 192.168.0.208:2181
|
|||
|
|
|||
|
# 앙상블구성 준비 완료 ####################################################
|
|||
|
[기타 설정 참고](https://kafka.apache.org/documentation/#brokerconfigs)
|
|||
|
|
|||
|
|
|||
|
# Zookeeper, Kafka실행
|
|||
|
bin/zookeeper-server-start.sh config/zookeeper.properties
|
|||
|
bin/kafka-server-start.sh config/server.properties
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
```
|
|||
|
---
|
|||
|
|
|||
|
- 토픽생성
|
|||
|
```CMD
|
|||
|
.\kafka-topics.bat --create --bootstrap-server localhost:9092 --topic oingdaddy
|
|||
|
|
|||
|
## 옵션 ##
|
|||
|
–bootstrap-server : 브로커 리스트
|
|||
|
–replication-factor : 리플리케이션 팩터 수
|
|||
|
–partitions : 파티션 수
|
|||
|
–topic : 토픽 이름을 입력
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
- 토픽에 메시지 보내기
|
|||
|
``` CMD
|
|||
|
kafka-console-producer.bat --broker-list localhost:9092 --topic oingdaddy
|
|||
|
```
|
|||
|
|
|||
|
- 토픽에서 메시지 가져오기
|
|||
|
```CMD
|
|||
|
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic simple-push-topic --from-beginning
|
|||
|
```
|
|||
|
|
|||
|
- 컨슈머그룹 LAG확인
|
|||
|
```CMD
|
|||
|
kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group simple-push-topic
|
|||
|
```
|
|||
|
- 토픽목록 확인
|
|||
|
kafka-topics.bat --list --bootstrap-server 192.168.12.21:9092
|
|||
|
|
|||
|
- 토픽 삭제
|
|||
|
kafka-topics --delete --bootstrap-server localhost:2181 --topic sample_topic01
|
|||
|
|
|||
|
- commend Shell
|
|||
|
zookeeper-shell 192.168.12.21:2181,192.168.12.168:2181
|