- 이제 도커가 아닌 AWS EC2 인스턴스를 발급받아서 Kafka를 운영할 것이다.
- 본인은 EC2에서 t2.micro유형의 인스턴트를 3개 발급받았다. 발급받은 pem키를 원하는 디렉토리에 위치시킨 후 윈도우 유저이므로 OpenSSH를 사용하여 인스턴스에 접속한다(맥북 사고싶다 ㅠㅠ).
- Open SSH의 설치는 링크를 참고하자.
- 인스턴스에 "연결"을 클릭하면 SSH 클라이언트를 통해 연결하는 방법이 나와있다. 하지만 그냥 접속하면 아마 접근이 안 될 것이다. EC2 대시보드에 들어가 "보안" 에서 인바운드 규칙을 편집해야한다. 처음 생성했을때 default로 생성된 보안 그룹에 들어가 유형을 "SSH", 소스 내 IP로 설정하면 된다. 참고로 AWS 콘솔을 사용해 접근하려면 추가적으로 설정이 필요하다.
- 아래 명령어로 모든 인스턴스에 zookeeper를 설치 후 압축을 해제한다. (반드시 bin이 들어간것으로 다운, 아닌거로 했다가 완전 고생했음)
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
tar xvf apache-zookeeper-3.8.0-bin.tar.gz
- 이제 zookeeper 앙상블을 구축하기 위해 zoo.cfg 파일을 만들어준다. 이때 zookeeper디렉토리의 권한을 바꿔줘야 sudo없이 접근이 가능하다
# /home/ec2-user/apache-zookeeper-3.8.00-bin/conf/zoo.cfg
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=20
syncLimit=5
server.1=kafka-broker01:2888:3888
server.2=kafka-broker02:2888:3888
server.3=kafka-broker03:2888:3888
- 다음으로 IP가아닌 hostname으로 인스턴스간 통신을 하기 위해서 hosts를 수정해준다. 각 인스턴스의 퍼블릭IPv4 주소를 다음과 같이 입력한다.
# /etc/hosts
# 인스턴스1의 경우 아래와 같이 설정
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
0.0.0.0 kafka-broker01
[인스턴스2의퍼블릭IP] kafka-broker02
[인스턴스3의퍼블릭IP] kafka-broker03
# 인스턴스2의 경우 아래와 같이 설정
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
[인스턴스1의퍼블릭IP] kafka-broker01
0.0.0.0 kafka-broker02
[인스턴스3의퍼블릭IP] kafka-broker03
# 인스턴스3의 경우 아래와 같이 설정
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
[인스턴스1의퍼블릭IP] kafka-broker01
[인스턴스2의퍼블릭IP] kafka-broker02
0.0.0.0 kafka-broker03
- 이제 zookeeper를 위한 인바운드 규칙을 추가해주어야한다. 아래 그림은 인스턴스1에대한 설정이다. kafka를 위해 9091~9093 포트를 미리 열어놨다. 9092포트만 열어도 상관없고 추후 확장을 가능성을 위해 9091 ~ 9093 포트를 열었다.
- zookeeper를 실행하기 전에 myid 파일을 만들어야한다. /var/lib 디렉토리에 zookeeper 디렉토리를 만든 다음 myid 파일을 생성하고 숫자를 입력한다. 예를 들어 인스턴스1의 myid 파일에는 1이 들어가면 된다. 모든 인스턴스에 대해 수행해준다.
- apache-zookeeper-3.8.0-bin/bin로 돌아와 zookeeper를 실행해줬는데, java가 설치되어 있지 않다는 에러가 떴다.
- "java -version"으로 확인해보니 설치가 안 되어있었다. 아래 명령어를 통해 설치하자. (버전 8이상 필수)
# 설치가능한 java 확인
yum list java*
# java 설치
sudo yum install java-1.8.0-amazon-corretto-devel.x86_64
sudo yum isntall java-1.8.0-amazon-corretto.x86_64
- 설치 후 아래 명령어로 모든서버에서 zookeeper를 시작한다.
./zkServer.sh start
- 이제 정상적으로 zookeeper가 실행됐는지 확인하기위해 접속해보자. 정상적으로 접속되면 아래와 같이 뜬다.
./zkCli.sh -server [인스턴스N의IP]
ref)
https://www.youtube.com/watch?v=Qr0HVvtMFhg&list=PLRJs_55kmROomTtCz46lJTjxL8gAUyGQV&index=49&t=193s
'AWS' 카테고리의 다른 글
MySQL With AWS EC2 (0) | 2023.05.19 |
---|---|
Kafka With AWS EC2 #2 (0) | 2023.05.16 |