이하의 과정은 모두 MacOS 기반으로 설명됩니다. 가상머신에서의 커맨드는 차이가 없지만 로컬 컴퓨터 터미널에서의 커맨드는 차이가 있습니다.
Amazon Linux AMI를 선택 후, t2.micro instance 선택 (1년 간 free tier 적용)
zookeeper와 kafka를 구동하기 위해서는 최소 1GB의 메모리가 필요하기 때문에 메모리가 1GB가 넘는지 확인!
chmod 400 kafkaKey.pem
(읽기 모드 권한 부여)
ssh -i kafkakey.pem ec2-user@{aws IP}
카프카 브로커를 실행하기 위해서는 JDK가 필요
운영체제마다 설치 커맨드가 다름 주의!
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
java -version
sudo apt-get install openjdk-8-jdk
java -version
(kafka_2.12-2.5.0 버전으로 실습 진행함)
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
cd kafka_2.12-2.5.0
2가지 방법
export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"
echo $KAFKA_HEAP_OPTS
vim ~/.bashrc
a
눌러 insert mode 진입
마지막 부분에
export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"
추가
esc :wq
source ~/.bashrc
echo $KAFKA_HEAPS_OPTS
vim config/server.properties
advertised.listeners=PLAINTEXT://{aws IP}:9092
으로 수정
zookeeper.connect=localhost:2181
kafka_2.12-2.5.0
디렉토리 위치에서
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
-daemon 옵션 추가 시 백그라운드로 주키퍼 실행 가능
jps
입력
QuorumPeerMain
Jps
출력되면 주키퍼 정상 실행 중
+) 추가
brew install zookeeper
로 설치했다면
brew services start zookeeper
로 실행
brew services stop zookeeper
로 중지
kafka_2.12-2.5.0
디렉토리 위치에서
bin/kafka-server-start.sh config/server.properties
bin/kafka-server-start.sh -daemon config/server.properties
-daemon 옵션 추가 시 백그라운드에서 브로커 실행
jps
입력
QuorumPeerMain
kafka
Jps
출력되면 카프카 브로커까지 정상 실행 중
tail -f logs/server.log
커맨드를 통해 카프카 브로커의 로그를 실시간으로 확인할 수 있다(ctrl-C를 통해 로그 기록 확인을 빠져나온다).
+) 추가
brew install kafka
로 설치했다면
brew services start kafka
로 실행
brew services stop kafka
로 중지
로컬 컴퓨터에서 kafka_2.12-2.5.0 설치 후 aws instance의 kafka와 통신 시도
로컬
curl https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz
tar -xvf kafka.tgz
cd kafka_2.12-2.5.0
ls
ls bin
kafka-broker-api-versions.sh 파일이 존재함을 확인
bin/kafka-broker-api-versions.sh --bootstrap-server {aws IP}:9092
{aws Ip}:9092 (id: 0 rack: null) -> ( ....과 비슷하게 출력되면 통신 성공!
꼭 필요한 부분은 아니지만 t2.micro 인스턴스의 경우 1년 간 free tier를 적용받기 때문에 매번 번거롭게 인스턴스 종료 후 재시작할 필요가 없다. 따라서 현재 인스턴스의 IP를 my-kafka라는 이름으로 지정해 줄 수 있다.
cd ~
vim /etc/hosts
a
insert mode 진입
{aws IP} my-kafka
esc :wq