
현재 근무중인 회사 개발 환경에서 원하는 기술 스택들을 다룰 수 없는 현실,
그렇다고 매일 하는거만 하면서 도태될 수는 없는 현실,
하지만 한 치 앞을 알 수 없는 현실,
어느 날 갑자기 새로운 기술 스택이 도입되거나 개발해야 하는 상황이 생길 가능성을 대비하여
미리 미리 준비하고 바로 적용할 수 있게 기본 지식은 공부해놓자 정도가 목적.
"준비된 자에게 기회가 온다."
💡 Kafka는 대규모 데이터를 처리할 수 있는
메시지 큐이다.
- LinkedIn에서 개발되어 현재는 오픈 소스로 관리되는 분산 스트리밍 플랫폼
💡
메시지 큐(Message Queue)는 큐 형태에 데이터를 일시적으로 저장하는 임시 저장소를 의미합니다.
우선 카프카 공부가 목적이니까 카프카 서버는 Aws ec2 대신 Docker에 Ubuntu 컨테이너를 띄우고 카프카 서버 환경을 구축해보겠습니다.
참고로
- apt update
- (update wget)
- apt-get install -y wget curl tar
- apt-get install -y vim nano
- apt-get install -y lsof
이유:
# ubuntu 최신 이미지로 컨테이너 만들고 터미널 접속
docker run -dit --name kafka-ubuntu -p 9092:9092 ubuntu:22.04 bash
docker exec -it kafka-ubuntu bash$ sudo apt update
$ sudo apt install openjdk-17-jdk
$ java -version # 잘 설치됐는 지 확인
$ wget https://dlcdn.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz
$ tar -xzf kafka_2.13-4.0.0.tgz # 압축 풀기
$ cd kafka_2.13-4.0.0
$ export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16 # 2GB짜리의 파일 생성
$ sudo chmod 600 /swapfile # 파일에 권한 부여
$ sudo mkswap /swapfile # 2GB 짜리 파일을 swap 공간의 형태로 전환
$ sudo swapon /swapfile # swap 활성화
# 시스템 부팅 시마다 자동으로 활성화 되도록 파일시스템 수정
$ sudo vi /etc/fstab
# 아래 내용을 추가하고 저장하기
/swapfile swap swap defaults 0 0
free

$ vi config/server.properties

# 초기 로그 폴더 셋팅 (카프카 첫 실행 때만 이 명령어를 입력하면 됨)
$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
$ bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties
# 카프카 서버 실행
$ cd ~/kafka_2.13-4.0.0
$ bin/kafka-server-start.sh config/server.properties # 포그라운드에서 실행
# 백그라운드에서 실행
$ bin/kafka-server-start.sh -daemon config/server.properties
# 백그라운드에서 실행되고 있는 kafka 서버의 로그 확인하기
$ tail -f logs/kafkaServer.out
$ sudo lsof -i:9092 # 9092번 포트에서 실행 중인 프로세스 조회
# 카프카 종료하기
$ bin/kafka-server-stop.sh
# 잘 종료됐나 확인
$ sudo lsof -i:9092
# 백그라운드에서 실행
$ bin/kafka-server-start.sh -daemon config/server.properties
# 잘 실행됐나 확인
$ sudo lsof -i:9092