
💡 Kafka 적용을 위해서 Kafka 환경 세팅 및 실행해보려고 한다!
// homebrew로 kafka 설치
brew install kafka
// zookeeper 실행
brew services start zookeeper
// kafka 실행
brew services start kafka

// localhost:2021 주소로 replication이 1이고 partition이 1인 "Test"라는 이름의 토픽 생성
// 위 방식은 Kafka 3.0 이후 부터 지원하지 않는다.
# ./kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 -partitions 1 --topic test

// localhost:2021 주소로 replication이 1이고 partition이 1인 "Test"라는 이름의 토픽 생성
// KRaft는 bootstrap-server를 사용한다.
./kafka-topics --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

// kafka 브로커 주소인 localhost:9092에 있는 Test라는 topic으로 Producer가 메시지를 생성
./kafka-console-producer --broker-list localhost:9092 --topic test
>hello
>kafka
// consumer로 브로커에 Test라는 Toic에 저장되어 있는 메시지를 처음부터 읽어오기
// --form-beginning: 처음부터
./kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning

일단 이부분은 AWS를 통해 EC2환경을 만들고, 로그인 하여 파일 설치를 통해서 진행하기 때문에 개인적으로 EC2환경을 만들어 로그인까지 진행된 상태이다.
기존에 공부할 때 만들어 뒀던 인스턴스, vpc, 인터넷 게이트웨이등 대부분의 것을 지워뒀기 때문에 하나하나씩 만들고 보안 그룹까지 만들어서 진행하여 로그인까지는 성공하였다. ( vpc -> 인터넷 게이트 웨이 -> 라우팅 테이블 -> 인스턴스 -> 그룹)
+) 카프카 브로커에 접속하기 위해서는 EC2 보안 그룹의 Inbound 설정에서 9092와 2181 포트를 열어야 한다.
// Ec2환경에 로그인
ssh -i "{키페어 이름}.pem" ec2-user@{퍼블릭 IP}
$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
// kafka 설치
$ wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz
// 압축 풀기
$ tar xvf kafka_2.12-2.5.0.tgz
// 전체 확인
$ ll
<결과>
합계 60164
drwxr-xr-x 6 ec2-user ec2-user 89 4월 8 2020 kafka_2.12-2.5.0
-rw-rw-r-- 1 ec2-user ec2-user 61604633 7월 6 2020 kafka_2.12-2.5.0.tgz
// Heap 메모리 변경
$ export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"
// 조회
$ echo $KAFKA_HEAP_OPTS
-Xmx400m -Xms400m
// KAFKA_HEAP_OPTS 환경변수 설정
$ vi ~/.bashrc

cd kafka_2.12-2.5.0
// config의 server.properties파일 수정
vi config/server.properties

+) log.retention.hours: 카프카 Broker가 저장한 파일이 삭제되기까지 걸리는 시간
=> 상용 환경에서는 log.retention.ms으로 설정하는 것을 추천
=> -1로 설정하면 영원히 삭제되지 않는다.
// 주키퍼 실행
$ bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
// 주키퍼의 동작 프로세스 상태를 보기 위함
$ jps -vm

// kafka server 실행
$ bin/kafka-server-start.sh -daemon config/server.properties
// 카프카의 동작 프로세스 상태를 보기 위함
$ jps -m
<실행결과>
26568 Kafka config/server.properties
22127 QuorumPeerMain config/zookeeper.properties
// server log로 카프카 동작 성공 여부 찍어보기
$ tail -f logs/server.properties

AWS EC2에서는 카프카 Broker 설치를 완료하였음으로, 로컬 터미널에서 "원격"으로 카프카 브로커로 명령을 내려 통신을 확인해보고자 한다.
로컬 터미널에 카프카 바이너리 패키지를 다운받아 진행해보았다.
// 로컬 터미널에서 카프카 바이너리 패키지 설치
$ curl https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz
--output kafka.tgz
// 압축풀기
$ tar -xvf kafka.tgz

// 카프카 브로커 정보 확인
$ cd kafka_2.12-2.5.0
$ bin/kafka=broker-api-versions.sh --bootstrap-server {퍼블릭IP}:9092

카프카 서버에서 Topic을 등록하고, 실제 채팅을 돌려서 다중 서버에서 사용하는 부분은 Kafka-채팅-구현에서 추가적으로 진행하겠다.