AWS EC2에 카프카 서버 설치 및 테스트

song yuheon·2023년 10월 31일
0

Project

목록 보기
16/31

전체 프로그램 구조


현재 아직은 AWS에 배포하지 않은 상태입니다.

배포 전 카프카 테스트를 위해 아래의 구조에서 로드 밸런서 없이 main Server ( Localhost:8080 ), Traffic Server ( Localhost:8090 ), Kafka Server ( AWS Ec2 ) 구조로 테스트 하였습니다.


AWS EC2 생성 및 설정


EC2 인스턴스 생성

EC2 보안 그룹 설정

EC2 SSh 연결


EC2에 Java 설치


sudo apt-get update
sudo apt-get install openjdk-17-jdk
java -version

Kafka 설치


wget https://downloads.apache.org/kafka/3.6.0/kafka_2.12-3.6.0.tgz

tar xvf kafka_2.12-3.6.0.tgz

Kafka 설정


server.properties 파일 편집

  • listeners와 advertised.listeners 설정

    • listeners
      Kafka 서버가 클라이언트의 연결을 수락할 인터페이스와 포트를 설정합니다.
      외부 IP에서의 접근을 허용하려면 서버의 외부 IP 주소를 사용하거나 모든 인터페이스에서 수신하도록 0.0.0.0을 설정합니다.
    listeners=PLAINTEXT://0.0.0.0:9092
    • advertised.listeners: 클라이언트가 연결할 Kafka 서버의 주소를 알려주는 설정입니다. 여기에는 외부에서 접근할 수 있는 서버의 IP 주소 또는 도메인 이름을 지정해야 합니다.
    advertised.listeners=PLAINTEXT://your_external_ip:9092
  • listener.security.protocol.map와 inter.broker.listener.name 설정

    • listener.security.protocol.map
      리스너 이름과 사용할 보안 프로토콜을 매핑합니다.
    listener.security.protocol.map=PLAINTEXT:PLAINTEXT
    • inter.broker.listener.name
      브로커 간 통신에 사용할 리스너의 이름을 설정합니다.
    inter.broker.listener.name=PLAINTEXT

Kafka 서버 실행


zookeeper 서버 실행

bin/zookeeper-server-start.sh config/zookeeper.properties

kafka 서버 실행

 bin/kafka-server-start.sh config/server.properties

Kafka Topic 생성

bin/kafka-topics.sh --create --bootstrap-server 15.164.247.40:9092 --topic user-event-apply-input-topic
bin/kafka-topics.sh --create --bootstrap-server 15.164.247.40:9092 --topic user-event-apply-output-topic

Kafka Topic 리스트 확인


 bin/kafka-topics.sh --list --bootstrap-server 15.164.247.40:9092

웹 서비스에 카프카 적용


Kafka Config


테스트


카프카로 데이터가 정상적으로 들어 갔음을 확인 가능하다.

하지만 컨슈머에서 처리하지 못하는 문제가 발생하였다.

트러블 슈팅 : Kafka 리스너(컨슈머)가 Kafka 서버에서 데이터를 읽지 못하는 문제 발생 및 해결


결과



아래처럼 카프카 서버를 거쳐서 정상적으로 작동하는 것을 알 수 있다!!!


profile
backend_Devloper

0개의 댓글