본 포스팅은 GCP 사용 방법에 대한 내용은 일절 없으며
단순히 kafka,zookeeper 를 기존 개인 vm 2대에서 구성한걸 gcp에서 3대로 구성한 내용임.
기존 vm 2대 구성관련 포스팅 : https://abbf.tistory.com/26
[kafka] kafka+zookeeper 구성 및 설정 (240205_update)
[구성 참고 사이트 및 기타 출처] https://abbf.tistory.com/25 내용 참고 [테스트 형상] 구분 버전 비고 OS CentOS 7.9 (3.10.0-1160.90.1.el7.x86_64) vm 2대로 구성 server1 : 4c 4g server2 : 4c 4g kafka kafka_2.13-3.6.1 zookeeper apa
abbf.tistory.com
GCP가 고맙게도 90일 무료에 30만원정도 크레딧 제공.
사내 AWS 언제 쓸 수 있을지 모르겠어서 일단 GCP로 3node를 구성했다.
계정별로 무료/크레딧 증정해주니 여기서 하다가 크레딧 금액 다쓰면 다른 계정으로 넘겨야 하지 않을까 싶다..
구분 | 버전 | 비고 |
OS | Rocky Linux , release 8.9 | broker1 : 4c16g broker2 : 4c 4g broker3 : 4c 4g ** 선택 시 Rocky GCP 용(?)이 있었으나 일반 Rocky로 했다. |
kafka | kafka_2.13-3.6.1 | stable ver. (2023.12 확인 기준) |
zookeeper | apache-zookeeper-3.8.3 | stable ver. (2023.12 확인 기준) |
Disk | [kafka] /kafka 10G #엔진 영역 /kaf_data 20G #데이터영역 [zookeeper] /zookeeper 10G #엔진영역 /zoo_data 20G #데이터영역 |
kafka의 데이터영역은 토픽의 파티션과 produce된 데이터에 대한 메타데이터를 저장하는 공간으로, server.properties의 log.dirs에 경로를 지정 해줘야 한다. kafka의 서버로그는 kafka 영역의 logs 디렉토리에 있다. ex) /kafka/kafka_2.13-2.6.1/logs zookeeper의 데이터영역은 zookeeper의 snapshot 등의 메타데이터를 저장하며, zoo.cfg의 dataDir에 경로를 지정해줘야 한다. # zookeeper의 node번호 기입도 해당 디렉토리로 지정함 # kafka znode의 root dir을 위해 kafka server.properties zookeeper.connect 를 /zoo_data로 매핑 해줬는데, 단순 ls로는 확인할 수 없고 zkCli.sh 를 통해서 확인할 수 있다. |
jdk | openjdk 11 | kafka 구동 계정의 bash_profile에 export 해줌 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.22.0.7-2.el8.x86_64 export PATH=$PATH:$JAVA_HOME/bin |
1) 방화벽
네트워크/보안쪽은 잘 몰라서 방화벽오픈 시 CIDR을 전부 0.0.0.0/0 으로 맞추고 아래와 같이 포트 오픈 해줬다.
참고로 리눅스 방화벽은 내려버렸다. (firewalld disable)
- kafka 9092, zookeeper 2181 포트는 in/outbound 전부 설정
- zookeeper의 2888, 3888은 inbound 만 설정
근데 이게 하나씩 죽이면서 테스트 했을 때도 잘 될진 모르겠다.
2) 방화벽 test 관련
내부 IP 채번으로 봐서는 방화벽이 없는가 싶어서 nc로 가상 포트 띄우고
내부 IP로 각각 포트 오픈여부 체크 했는데, 계속 접속 실패가 났다. (echo $? 1)
방화벽 포트 오픈 후에도 동일해서 외부 IP로 바꿔 테스트 하니 정상으로 나왔다. (echo $? 0)
ping은 내부 IP를 쏴도 외부 IP를 쏴도 잘 나간다. ping테스트에 속지 말자.
- tcp 기준/broker1 # nc -v -t -l port# - broker2 # nc -z brokerip port |
3) /etc/hosts파일 설정 관련 이이잇슈...
아 좀 이상한데...ㅋㅋㅋ
처음에 /etc/hosts파일에 아래와 같이 설정했다.
broker1 | broker2 | broker3 |
broker1내부ip broker1 broker2외부ip broker2 broker3외부ip broker3 |
broker1외부 ip broker1 broker2내부 ip broker2 broker3외부ip broker3 |
broker1외부ip broker1 broker2외부ip broker2 broker3내부ip broker3 |
[kafka]
broker1 서버에서 topic 생성 테스트 진행 시
--bootstrap-server broker1:9092로는 생성이 되지 않아서 broker1을 외부 ip로 변경해고 테스트 했더니 정상으로 됐다.
나머지 브로커에서는 내부 ip를 변경하지 않고 토픽 생성시 예상은 똑같이 안되어야 하는데
너무 잘 생성이 되어서 당황했다...
그래서 다시 broker1도 내부 IP로 원복, 재 테스트시 정상...
뭐가 잘못된거였을까...
[zookeeper]
zookeeper는 자신 서버를 0.0.0.0:2888:3888 로 하고 정상.
hostname으로 설정한대로 해도 정상.
결론 : /etc/hosts 파일만 이슈 없음 잘 되고 properties, cfg 파일에 ip랑 port만 제대로 적어주자..
'업무 > kafka zookeeper' 카테고리의 다른 글
[zookeeper] zookeeper CLI (0) | 2024.02.08 |
---|---|
[zookeeper] zookeeper snapshot (0) | 2024.02.08 |
[kafka] 데이터 producer & consumer test (0) | 2024.01.12 |
[kafka] topic 생성 및 확인 (0) | 2024.01.12 |
[kafka] kafka+zookeeper 구성 및 설정 (240205_update) (0) | 2024.01.12 |