본 포스팅은 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

 

대충 다 연결 됐단 이야기_abbf_240205

 

 

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만 제대로 적어주자..

 

 

728x90

+ Recent posts