wget 명령어로 tgz 파일을 받아온다.
wget http://archive.apache.org/dist/kafka/2.6.0/kafka_2.13-2.6.0.tgz
[karim@Kafka_cluster 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_cluster 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
vi config/zookeeper.properties
# 스냅샵 데이터를 저장할 경로 설정
dataDir=/data/zookeeper
# 클라이언트가 연결할 port 번호 설정
clientPort=2181
# 클라이언트에서 동시 접속하는 개수 설정 (default : 60 / unlimited : 0)
maxClientCnxns=0
# 팔로워가 리더가와 초기에 연결하는 시간에 대한 타임 아웃 설정
initLimit=10
# 팔로워가 리더와 동기화에 대한 타임 아웃 설정
# 이 틱 시간안에 팔로워가 리더와 동기화 되지 않으면 제거 된다.
syncLimit=5
tickTime=2000
# port 충돌을 방지하려면 비활성화 해야 한다. (default : false)
admin.enableServer=false
admin.serverPort=2190
# Cluster 구성 서버 list 작성
server.1=server1:2182:2183
server.2=server2:2182:2183
server.3=server3:2182:2183
해당 설정은 첫 번째 server1에 대한 설정이다.
나머지 server2,3은 숫자만 바꿔주면 된다.
vi config/server.properties
# 브로커 넘버 설정
broker.id=1
# 브로커가 사용하는 호스트와 포트 지정
listeners=PLAINTEXT://:9092
# producer, consumer가 해당 kafka로 접근할 수 있게 광고할 호스트와 포트를 설정
advertised.listeners=PLAINTEXT://server1: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 당 파티션 수 설정 (cluster 설정 이므로 default : 1)
num.partitions=3
# 시작 시 로그 복구, 종료 시 flush에 사용할 데이터 dir 당 스레드 수
num.recovery.threads.per.data.dir=1
# topic에 설정된 replication 수가 지정한 값보다 크면 새로운 토픽을 생성하고 작으면 broker 수와 같게 한다. (cluster 설정 이므로 default : 1)
offsets.topic.replication.factor=3
# 트랜잭션에 대한 레플리카 수 (cluster 설정 이므로 default : 1)
transaction.state.log.replication.factor=3
# 트랜잭션에 대한 재 정의 된 min.insync.replicas 구성 설정
transaction.state.log.min.isr=3
# 세그먼트 파일의 삭제 주기
log.retention.hours=24
# 세그먼트 파일의 사이즈
# 세그먼트 : topic 별로 수집한 데이터를 보관하는 파일
log.segment.bytes=1073741824
# 세그먼트 파일의 삭제 여부를 체크하는 주기 설정
log.retention.check.interval.ms=300000
# zookeeper 접속 정보 설정
zookeeper.connect=server1:2181,server2:2181,server3:2181
# zookeeper 접속 시도 제한 시간
zookeeper.connection.timeout.ms=18000
# 코디네이터가 파티션 리밸런싱을 처음 수행할 때나
#새로운 consumer 들이 추가 될 때 group에 참여할때 까지 대기하는 시간
group.initial.rebalance.delay.ms=3000
# 토픽을 삭제할 수 있게 설정
delete.topic.enable=true
echo 1 > /data/zookeeper/myid
echo 2 > /data/zookeeper/myid
echo 3 > /data/zookeeper/myid
zookeeper가 kafka의 메타 데이터를 관리하기 때문에 kafka 보다 먼저
실행해야 한다.!
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
./zookeeper-server.stop.sh
./kafka-server-start.sh -daemon config/server.properties
./kafka-server-stop.sh
./kafka-topics.sh --create --bootstrap-server server1:9092,server1:9092,server1:9092 --topic karim-cluster-topic
[karim@Kafka_cluster bin]$ ./kafka-topics.sh --create --bootstrap-server server1:9092,server2:9092,server3:9092 --topic karim-cluster-topic
Created topic karim-cluster-topic.
./kafka-topics.sh --list --bootstrap-server server1:9092,server2:9092,server3:9092
[karim@Kafka_cluster bin]$ ./kafka-topics.sh --list --bootstrap-server server1:9092,server2:9092,server3:9092
__consumer_offsets
karim-cluster-topic
./kafka-console-producer.sh --broker-list server1:9092,server2:9092,server3:9092 --topic karim-cluster-topic
[karim@Kafka_cluster bin]$ ./kafka-console-producer.sh --broker-list server1:9092,server2:9092,server3:9092 --topic karim-cluster-topic
>karim velog good
./kafka-console-consumer.sh --bootstp-server server1:9092,server2:9092,server3:9092 --topic karim-cluster-topic
[karim@Kafka_cluster bin]$ ./kafka-console-consumer.sh --bootstp-server server1:9092,server2:9092,server3:9092 --topic karim-cluster-topic
karim velog good
https://kafka.apache.org/documentation/
https://heodolf.tistory.com/11
https://mycup.tistory.com/299