-
[Kafka] - 16. Kafka 설치개발/Kafka 2022. 8. 18. 16:27
Kafka의 기본 개념을 알고 있다고 가정 후 진행하였습니다.
Kafka는 Apache Kafka와 Confluent Kafka 두 가지의 종류로 나뉩니다.
금일 설치할 Kafka는 Apache Kafka입니다.
Apache Kafka는 Opensource 입니다.
1. Install Kafka
아래 링크를 참조하여 설치합니다.
https://kafka.apache.org/downloads
- 최근 올라와 있는 kafka_2.13-3.2.1.tgz 파일을 이용하여 설치하겠습니다.
- WSL2 Ubuntu 환경에서 설치를 진행하였습니다.
- 원하는 File위치나 새로 생성하여 진행하는 것을 추천 드립니다.
$ sudo wget https://downloads.apache.org/kafka/3.2.1/kafka_2.13-3.2.1.tgz $ tar xvfz kafka_2.13-3.2.1.tgz
- 빠르게 접근하기 위해 Symbolic link를 설정하였습니다.
$ ln -s kafka_2.13-3.2.1 kafka
대부분의 설정은 bin,config 파일 내에서 처리가 가능하여 여기서 진행할 예정입니다.
2. Zookeeper 설치 및 설정
2-1) setting File Init
$ cd kafka $ kafka cd config $ cat zookeeper.properties
- 데이터를 저장할 위치, 포트 번호와 같은 설정을 변경하고 싶다면 여기서 하여주면 됩니다.
- 기본 세팅을 그대로 가지고 갈 예정입니다.
2-2) Execute Zookeeper
- Java가 설치되어 있지 않다면 링크를 먼저 진행하셔야 합니다.
$ cd .. $ bin/zookeeper-server-start.sh config/zookeeper.properties
- 실행이 성공적이라면 아래와 같이 Bind 되었는지를 확인해야 합니다.
2-3) Telnet
- TelNet을 이용하여 접속이 되는지 확인하여 봅니다.
- Powershell을 관리자 권한으로 실행시켜 줍니다.
- 아래 명령어를 치게 되면 연결이 되어있다면 TcpTestSucceeded : True 나타납니다.
$ Test-NetConnection localhost -port 2181
2-4) Zookeeper shell 띄어보기
- [zookeeper]라는 결과 값이 나오면 성공입니다.
$ cd bin $ ./zookeeper-shell.sh localhost:2181 # [zookeeper]
3. Kafka Broker 설치 및 설정
3-1) Broker File Init
- broker의 id 지정
- listeners=PLAINTEXT://127.0.0.1:9092 로 지정하여 줍니다.
$ cat config/server.properties # The id of the broker. This must be set to a unique integer for each broker. broker.id=0 ############################# Socket Server Settings ############################# # The address the socket server listens on. If not configured, the host name will be equal to the value of # java.net.InetAddress.getCanonicalHostName(), with PLAINTEXT listener name, and port 9092. # FORMAT: # listeners = listener_name://host_name:port # EXAMPLE: # listeners = PLAINTEXT://your.host.name:9092 listeners=PLAINTEXT://127.0.0.1:9092
3-2) Execute Broker
- 명령어 입력 후 INFO [KafkaServer id=0] started 를 확인하여야 합니다.
- 이렇게 하면 Broker도 생성이 완료되었습니다.
$ bin/kafka-server-start.sh config/server.properties # [2022-08-18 14:58:14,270] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
4. Topic
4-1) Topic 생성
- 제약조건 : 공백 X
- ‘.’ / ‘_’ 는 사용하지 않는 것을 추천
- 249자까지 허용
$ cd bin $ ./kafka-topics.sh --create --topic topic-test --bootstrap-server localhost:9092
4-2) Topic 검색
- 현재 어떤 Topic이 구성되어있는지 확인 할 수 있습니다.
$ ./kafka-topics.sh --list --bootstrap-server localhost:9092
4-3) Topic 삭제
- --delete 명령어를 사용하여 topic_test라는 topic을 삭제
$ ./kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic topic_test
5. Message Producer&Consume
5-1) Message Produce
$ cd bin $ ./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic topic-test
5-2) Message Consume
- 입력 후 부터의 Message를 Consume
$ cd bin $ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-test
- 모든 Message를 Consume
$ cd bin $ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-test --from-beginning
6. Zookeeper Shell
Zookeeper 구성
- 아래 Command를 사용하면 현재 구성되어 있는 정보들을 보여줍니다.
- 위에서 zookeeper만 구성되어 있을 때와 다르게 추가된것을 볼 수 있습니다.
$ cd bin $ ./zookeeper-shell.sh localhost:2181 $ ls / # [admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
Brokers 정보
$ ls /brokers # [ids, seqid, topics]
- config/server.properties에서 broker_id=0으로 설정해준 값을 볼 수 있습니다.
$ ls /brokers/ids # [0]
- Topic을 볼 수 있는데 __consumer_offsets 이 생성된것을 알 수 있습니다.
- __consumer_offsets Topic은 Consumer가 재시작,죽거나 등등 처리하지 못하는 상황에서 Consume을 하기 위해 참조하는 데이터들
$ ls /brokers/topics # [__consumer_offsets, topic-test]
'개발 > Kafka' 카테고리의 다른 글
[Kafka] - 19. Kafka GUI(AKHQ) (0) 2022.08.24 [Kafka] - 18. KAFKA_LISTENERS vs KAFKA_ADVERTISED_LISTENERS (0) 2022.08.23 [Kafka] - 17. Docker-compose Kafka 개발환경 구축 및 테스트 (0) 2022.08.11 [Kafka] - 15. EOS Transaction (0) 2022.08.10 [Kafka] - 14. EOS(Exactly Once Symantics) (0) 2022.08.10