ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kafka] - 16. Kafka 설치
    개발/Kafka 2022. 8. 18. 16:27

    Kafka의 기본 개념을 알고 있다고 가정 후 진행하였습니다.

     

    Kafka는 Apache KafkaConfluent Kafka 두 가지의 종류로 나뉩니다.

    금일 설치할 Kafka는 Apache Kafka입니다.

    Apache Kafka는 Opensource 입니다.

     

    1. Install Kafka


    아래 링크를 참조하여 설치합니다.

    https://kafka.apache.org/downloads

     

    Apache Kafka

    Apache Kafka: A Distributed Streaming Platform.

    kafka.apache.org

     

    • 최근 올라와 있는 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]

    댓글

Designed by Tistory.