카프카 설치 방법에 대해 알아보겠습니다. 카프카는 아마존에서 제공하는 완전관리형 아파치 카프카 MSK, 컨플루언트에서 제공하는 카프카 솔루션이 있습니다. 여기서는 AWS에 실제 카프카를 설치하는 방법을 소개하겠습니다.
목차
Toggle1. AWS 환경에서 실습 환경 구성
- t2.medium(vCPU 2, MEM 4GB) 7대 설치, 아마존 리눅스 2
- 배포 서버 1대 : public
- 주키퍼 서버 3대 : private
- 카프카 서버 3대 : private
ssh -i keypair.pem -l ec2-user 13.125.209.60
#or
ssh -i keypair.pem [email protected]
- DNS 서버 설정
- 아래처럼 호스트 이름 변경하거나 Route53에서 프라이빗 도메인 설정하여 사용(비용과금)
# 확인
ping -c 2 pf-zk01.foo.bar
2. 카프카 클러스터 구성
- 앤서블 – Ansible : 서버 배포 자동화 도구
Installation Guide — Ansible Documentation
관리서버에 앤서블 설치
#ansible 설치
sudo amazon-linux-extras install -y ansible2
#실습 소스 설치
sudo yum install -y git
git clone <https://github.com/onlybooks/kafka2>
#키파일 배포서버 복사
scp -i keypair.pem key [email protected]:~
- 앤서블 Ansible
# 키페어 권한 설정
chmod 600 keypair.pem
# 키를 메모리에 등록
ssh-agent bash
# ssh-add 명령어를 이용해서 키를 등록
ssh-add keypair.pem
- 위 방법은 재접속하면 설정이 초기화되는 문제가 있음.
- 아래 방법대로 하면 비밀키없이 ssh 접근 가능 추천.
# 배포 서버에서 공개키 생성
ssh-keygen
cat /home/ec2-user/.ssh/id-rsa.pub
# 공개 키 내용을 접속하고자 하는 서버에 복사
vi /home/ec2-user/.ssh/authorized_keys
chmod 600 .ssh/authorized_keys
# ssh 접근 가능
ssh pf-kafka01
주키퍼 설치
# 설치 명령
ansible-playbook -i hosts zookeeper.yml
- hosts 파일
[zkhosts]
peter-zk01.foo.bar
peter-zk02.foo.bar
peter-zk03.foo.bar
[kafkahosts]
peter-kafka01.foo.bar peter-kafka02.foo.bar peter-kafka03.foo.bar
[kerberoshosts]
peter-zk01.foo.bar
- zookeeper.yml
---
- hosts: zkhosts
become: true
connection: ssh
roles:
- common
- zookeeper
- 주키퍼 설치 확인
sudo systemctl status zookeeper-server
#Active : active [running] 확인
- systemctl 명령
# 프로세스 상태 확인 명령어
systemctl status zookeeper-server
#프로세스 중지 명령어
systemctl stop zookeeper-server
#프로세스 시작 명령어
systemctl start zookeeper-server
#프로세스 재시작 명령어
systemctl restart zookeeper-server
Overview of systemd for RHEL 7 – Red Hat Customer Portal
카프카 설치
# 카프카 설치
ansible-playbook -t hosts kafka.yml
# 카프카 설치 확인
sudo systemctl status kafka-server
3. 카프카 테스트
1) 카프카 기본 구성
- 카프카 : 애플리케이션의 이름
- 브로커 : 카프카 애플리케이션이 설치된 서버 또는 노드
2) 메시지 보내고 받기
# 토픽 생성
kafka-topcis.sh --bootstrap-server pf-kafka01.sample.test:9092 --create - topic pf-overview01 --partition 1 --replication-factor 3
# 컨슈머 실행
kafka-console-consumer.sh --bootstrap-server pf-kafka01.sample.test --topic pf-overview01
# 프로듀서 실행
kafka-console-producer.sh --bootstrap-server pf-kafka01.sample.test --topic-overview01
- 카프카 기본 명령어
- kafka-topic.sh : 토픽을 생성하거나 포틱의 설정 등을 변경하기 위해 사용함.
- kafka-console-production.sh : 토픽으로 메시지를 전송하기 위해 사용함. 기본 옵션 외 추가 옵션을 지정할 수 있고, 이를 통해 다양한 프로듀서 옵션 적용 가능
- kafka-console-consumer.sh : 토픽에서 메시지를 가져오기 위해 사용함. 기본 옵션 외 추가 옵션을 지정할 수 있고, 이를 통해 다양한 컨슈머 옵션 적용 가능
- kafka-reassign-partition.sh : 토픽의 파티션과 위치 변경 등을 위해 사용함.
- kafka-dump-log.sh : 파티션에 저장된 로그 파일의 내용을 확인하기 위해 사용함.
카프카 도입 사례에 대한 설명이 필요하신 분은 여기 링크를 참고바랍니다.
좀더 자세한 설명을 원하시는 분은 실전 카프카 개발부터 운영까지 도서를 참고바립니다.
참고 : 실전 카프카 개발부터 운영까지
아래는 카프카 관련 국내 도서입니다.
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”