전체 프로그램 구조
현재 아직은 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
Shell
복사
Kafka 설치
wget <https://downloads.apache.org/kafka/3.6.0/kafka_2.12-3.6.0.tgz>
Shell
복사
tar xvf kafka_2.12-3.6.0.tgz
Shell
복사
Kafka 설정
server.properties 파일 편집
•
listeners와 advertised.listeners 설정
◦
listeners
Kafka 서버가 클라이언트의 연결을 수락할 인터페이스와 포트를 설정합니다.
외부 IP에서의 접근을 허용하려면 서버의 외부 IP 주소를 사용하거나 모든 인터페이스에서 수신하도록 0.0.0.0을 설정합니다.
listeners=PLAINTEXT://0.0.0.0:9092
Plain Text
복사
◦
advertised.listeners: 클라이언트가 연결할 Kafka 서버의 주소를 알려주는 설정입니다. 여기에는 외부에서 접근할 수 있는 서버의 IP 주소 또는 도메인 이름을 지정해야 합니다.
advertised.listeners=PLAINTEXT://your_external_ip:9092
Plain Text
복사
•
◦
listener.security.protocol.map
리스너 이름과 사용할 보안 프로토콜을 매핑합니다.
listener.security.protocol.map=PLAINTEXT:PLAINTEXT
Plain Text
복사
◦
inter.broker.listener.name
브로커 간 통신에 사용할 리스너의 이름을 설정합니다.
inter.broker.listener.name=PLAINTEXT
Plain Text
복사
Kafka 서버 실행
zookeeper 서버 실행
bin/zookeeper-server-start.sh config/zookeeper.properties
Shell
복사
kafka 서버 실행
bin/kafka-server-start.sh config/server.properties
Shell
복사
Kafka Topic 생성
Kafka Topic 리스트 확인
웹 서비스에 카프카 적용
Kafka Config
테스트
카프카로 데이터가 정상적으로 들어 갔음을 확인 가능하다.
하지만 컨슈머에서 처리하지 못하는 문제가 발생하였다.
결과
아래처럼 카프카 서버를 거쳐서 정상적으로 작동하는 것을 알 수 있다!!!