Kafka Broker Local 설치 및 실행
업데이트:
AWS EC2에 Kafka broker
를 설치해 보자.
AWS EC2에 대한 포스팅은 AWS EC2 인스턴스 시작 및 접속, 초기세팅을 참고하기 바란다.
운영체제 환경은 Amazon Linux 2 AMI
이다.
Kafka 브로커 설치
$ sudo vim ~/install-kafka-broker.sh
위의 명령어를 입력해 vim 창을 켠다.
install-kafka-broker.sh
#!/bin/bash
echo "sudo yum update -y"
sudo yum update -y
echo "sudo yum install -y java-1.8.0-openjdk-devel.x86_64 # Java 8 설치"
sudo yum install -y java-1.8.0-openjdk-devel.x86_64 # Java 8 설치
echo "java -version # 현재 Java 버전 확인"
java -version
echo "wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz # kafka 다운로드"
wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz # kafka 다운로드
echo "tar xvf kafka_2.12-2.5.0.tgz # 다운로드한 kafka 파일 압축 해제"
tar xvf kafka_2.12-2.5.0.tgz # 다운로드한 kafka 파일 압축 해제
# EC2 t2.micro 기준. 메모리가 1.5G 이상이라면 환경변수 지정을 하지 않아도 됨.
echo "echo -e \"\nexport KAFKA_HEAP_OPTS=\\\"-Xmx400m -Xms400m\\\"\" >> ~/.bashrc # kafka 힙 메모리 사이즈 설정"
echo -e "\nexport KAFKA_HEAP_OPTS=\"-Xmx400m -Xms400m\"" >> ~/.bashrc # kafka 힙 메모리 사이즈 설정
echo "source ~/.bashrc # .bashrc 파일 변경사항 적용"
source ~/.bashrc # .bashrc 파일 변경사항 적용
echo "echo \$KAFKA_HEAP_OPTS # kafka 힙 메모리 사이즈 설정 확인"
echo $KAFKA_HEAP_OPTS # kafka 힙 메모리 사이즈 설정 확인
위의 명령어들을 복사해서 붙여넣는다.
$ source ~/install-kafka-broker.sh
그리고 위의 명령어로 쉘 스크립트 파일을 실행한다.
Kafka 브로커 실행 옵션 설정
$ sudo vim ~/kafka_2.12-2.5.0/config/server.properties
위의 명령어를 입력해 파일을 연다.
위와 같이 수정한다.
-
카프카 브로커가 통신을 위해 열어둘 인터페이스 IP, port, 프로토콜을 설정한다.
따로 설정하지 않으면, 모든 IP와 port에서 접속할 수 있다.
-
카프카 클라이언트 또는 카프카 커맨드 라인 툴에서 접속할 때 사용하는 IP와 port 정보이다.
인스턴스를 생성할 때 발급받은 퍼블릭 IPv4값을 IP에 넣고, port에는 카프카 기본 포트인
9092
를 넣는다.필자 같은 경우 AWS EC2에서 실행시킬 것이기 때문에, EC2 인스턴스의 IPv4를 적는다.
-
SASL_SSL,SASL_PLAIN 보안 설정 시 프로토콜 매핑을 위한 설정이다.
$ ~/kafka_2.12-2.5.0/bin/zookeeper-server-start.sh ~/kafka_2.12-2.5.0/config/zookeeper.properties
위의 명령어를 입력해, 정상적으로 주키퍼가 실행되는지 로그를 확인한다.
에러 로그가 뜬다면, 해당 에러 로그를 참고해 수정한다.
주키퍼가 정상적으로 실행된다면,
$ ~/kafka_2.12-2.5.0/bin/zookeeper-server-start.sh -daemon ~/kafka_2.12-2.5.0/config/zookeeper.properties
위와 같이 -daemon
옵션 인자를 추가해 주키퍼를 백그라운드에서 실행한다.
아무 로그도 출력되지 않았다면,
$ jps -m
위의 명령어를 입력한다.
위의 명령어는 JVM 위에서 동작하는 프로세서의 main 메서드에 전달된 인자를 확인하는 명령어이다.
위와 같이 QuorumPeerMain
이 뜨면, 주키퍼가 정상적으로 실행된 것이다.
카프카 브로커 실행
$ ~/kafka_2.12-2.5.0/bin/kafka-server-start.sh -daemon ~/kafka_2.12-2.5.0/config/server.properties # 카프카 브로커 실행
$ jps -m # JVM 위에서 동작하는 프로세서의 main 메서드에 전달된 인자 체크
$ tail -f ~/kafka_2.12-2.5.0/logs/server.log # 로그 파일의 마지막 10줄 출력 (파일이 변하면 실시간으로 출력되고 있는 내용을 업데이트한다.)
로컬 PC에서 카프카와 통신하기
카프카와 정상적으로 통신되는지 확인하기 위해 카프카 브로커 정보를 요청해 보자.
카프카 브로커와 통신하기 위한 명령어를 로컬 PC에서 사용하기 위해서는
로컬 PC에 카프카 바이너리 패키지를 다운로드해야 한다.
download-kafka-local.sh
#!/bin/bash
echo "curl https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz --output kafka.tgz # kafka 다운로드"
curl https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz --output kafka.tgz # kafka 다운로드
echo "tar xvf kafka.tgz # 다운로드한 kafka 파일 압축 해제"
tar xvf kafka.tgz # 다운로드한 kafka 파일 압축 해제
echo "ls kafka_2.12-2.5.0/bin # 목록 출력"
ls kafka_2.12-2.5.0/bin # 목록 출력
위의 쉘 스크립트 파일을 생성하고,
$ bash download-kafka-local.sh
위의 명령어로 쉘 스크립트 파일을 실행한다.
$ kafka_2.12-2.5.0/bin/kafka-broker-api-versions.sh --bootstrap-server ${Kafka Public IPv4}:9092
위의 명령어를 입력한다.
위와 같이 카프카 브로커의 옵션들이 출력되면 통신을 성공한 것이다!
편의를 위한 hosts 설정
${Kafka Public IPv4}
부분을 매번 문자열로 일일이 입력하기 귀찮으니,
hosts 설정을 해보자.
$ sudo vim /etc/hosts
로컬 PC에서 위의 명령어를 입력한다.
그리고 위의 부분을 추가한다.
$ kafka_2.12-2.5.0/bin/kafka-broker-api-versions.sh --bootstrap-server my-kafka:9092
이제 위의 명령어를 입력하면,
위처럼 브로커 옵션들이 똑같이 잘 출력되는 것을 확인할 수 있다.
댓글남기기