Kafka Single 구축에 대해서 알아보자

Karim·2021년 10월 26일
4

kafka 운영

목록 보기
2/9
post-thumbnail

1. Version

💬

  • OS : CentOS Linux release 7.9.2009 (Core)
  • Kafka : 2.6.0

2. kafka 설치

💬

  • wget 명령어로 tgz 파일을 받아온다.
    wget http://archive.apache.org/dist/kafka/2.6.0/kafka_2.13-2.6.0.tgz

    [karim@Kafka_single karim]$ wget http://archive.apache.org/dist/kafka/2.6.0/kafka_2.13-2.6.0.tgz
    --2021-10-26 17:48:37-- http://archive.apache.org/dist/kafka/2.6.0/kafka_2.13-2.6.0.tgz
    Resolving archive.apache.org (archive.apache.org)... 138.201.131.134, 2a01:4f8:172:2ec5::2
    Connecting to archive.apache.org (archive.apache.org)|138.201.131.134|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 65537909 (63M) [application/x-gzip]
    Saving to: ‘kafka_2.13-2.6.0.tgz’
    100%[==========================>] 65,537,909 5.98MB/s in 10s
    2021-10-26 17:48:48 (5.99 MB/s) - ‘kafka_2.13-2.6.0.tgz’ saved [65537909/65537909]

  • 압축을 푼다
    tar -zxvf kafka_2.13-2.6.0.tgz

    [karim@Kafka_single karim]$ tar -zxvf kafka_2.13-2.6.0.tgz
    kafka_2.13-2.6.0/
    kafka_2.13-2.6.0/LICENSE
    .
    .
    .
    kafka_2.13-2.6.0/libs/kafka-streams-test-utils-2.6.0.jar
    kafka_2.13-2.6.0/libs/kafka-streams-examples-2.6.0.jar

3. 설정 파일 설정

💬 zookeeper 설정

vi config/zookeeper.properties

# 스냅샵 데이터를 저장할 경로 설정
dataDir=/data/zookeeper

# 클라이언트가 연결할 port 번호 설정
clientPort=2181

# 클라이언트에서 동시 접속하는 개수 설정 (default : 60 / unlimited : 0)
maxClientCnxns=0

💬 server 설정

vi config/server.properties

# 브로커 넘버 설정
broker.id=1

# 브로커가 사용하는 호스트와 포트 지정
listeners=PLAINTEXT://:9092

# producer, consumer가 해당 kafka로 접근할 수 있게 광고할 호스트와 포트를 설정
advertised.listeners=PLAINTEXT://localhost:9092

# 서버가 네트워크에서 요청을 받고 응답을 보내는데 사용하는 스레드 수 설정 (default : 3)
num.network.threads=3

# I/O 생길 때 생성되는 스레드 수 설정 (default : 8)
num.io.threads=8

# 소켓 서버에서 송신 하는 버퍼 사이즈
socket.send.buffer.bytes=102400

# 소켓 서버에서 수신 하는 버퍼 사이즈
socket.receive.buffer.bytes=102400

# 서버가 받을 수 있는 최대 요청 사이즈 (oom에 대한 보호)
socket.request.max.bytes=1048576000

# 로그 세그먼트 및 오프셋 데이터가 저장되어있는 경로 설정
log.dirs=/data/kafka/data

# topic 당 파티션 수 설정 (single 설정 이므로 default : 1)
num.partitions=1

# 시작 시 로그 복구, 종료 시 flush에 사용할 데이터 dir 당 스레드 수
num.recovery.threads.per.data.dir=1

# topic에 설정된 replication 수가 지정한 값보다 크면 새로운 토픽을 생성하고 작으면 broker 수와 같게 한다. (single 설정 이므로 default : 1)
offsets.topic.replication.factor=1
# 트랜잭션에 대한 레플리카 수 (single 설정 이므로 default : 1)
transaction.state.log.replication.factor=1
# 트랜잭션에 대한 재 정의 된 min.insync.replicas 구성 설정
transaction.state.log.min.isr=1

# 세그먼트 파일의 삭제 주기
log.retention.hours=24

# 세그먼트 파일의 사이즈
# 세그먼트 : topic 별로 수집한 데이터를 보관하는 파일
log.segment.bytes=1073741824

# 세그먼트 파일의 삭제 여부를 체크하는 주기 설정
log.retention.check.interval.ms=300000

# zookeeper 접속 정보 설정
zookeeper.connect=127.0.0.1:2181

# zookeeper 접속 시도 제한 시간
zookeeper.connection.timeout.ms=18000

# 코디네이터가 파티션 리밸런싱을 처음 수행할 때나
#새로운 consumer 들이 추가 될 때 group에 참여할때 까지 대기하는 시간
group.initial.rebalance.delay.ms=3000

# 토픽을 삭제할 수 있게 설정
delete.topic.enable=true

4. 실행 (순서 중요)

💬 zookeeper 실행

zookeeper가 kafka의 메타 데이터를 관리하기 때문에 kafka 보다 먼저 실행해야 한다.!

  • 데몬으로 시작
    ./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
  • 중지
    ./zookeeper-server.stop.sh

💬 kafka 실행

  • 데몬으로 시작
    ./kafka-server-start.sh -daemon ../config/server.properties
  • 중지
    ./kafka-server-stop.sh

5. console command로 kafka 동작 확인

💬 topic 생성

./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic karim-topic

[karim@Kafka_single bin]$ ./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic karim-topic
Created topic karim-topic.

💬 topic list 확인

[karim@Kafka_single bin]$ ./kafka-topics.sh --list --bootstrap-server localhost:9092
__consumer_offsets
karim-topic

💬 console producer

./kafka-console-producer.sh --broker-list localhost:9092 --topic karim-topic

[karim@Kafka_single bin]$ ./kafka-console-producer.sh --broker-list localhost:9092 --topic karim-topic
>karim velog good

💬 console consumer

./kafka-console-consumer.sh --bootstp-server localhost:9092 --topic karim-topic

[karim@Kafka_single bin]ka$ ./kafka-console-consumer.sh --bootstp-server localhost:9092 --topic karim-topic
karim velog good


📚 참고

https://kafka.apache.org/documentation/
https://heodolf.tistory.com/11

profile
나도 보기 위해 정리해 놓은 벨로그

0개의 댓글