IT/Kafka

[Kafka] 폐쇄망에 3 Node로 카프카 클러스터 구성하기

고슴도치 엔지니어 2022. 5. 30. 10:45

카프카 클러스터를 구성하기 위해 먼저 VM(CE) 구성 준다.

4대의 VM 필요하며 3대는 카프카 클러스터 구성용, 1대는 SSH 접속을 위한 Public IP 부여된 VM이다.

 

폐쇄망 VM 공개망 VM 만드는 것은 따로 상세히 기술하지는 않는다.

주의 점은 카프카 클러스터 구성용 VM에는 각각 30GB 외부 볼륨이 붙는다.

아래 사진 한장으로 설명을 대체 한다.

 

 

 

서버에 SSH 접속하기 위해 edge 서버에서 몇가지 작업을 해야한다. 아래 순서대로 진행 한다.

  1. kafka 클러스터용 VM SSH 접속하기 위한 생성 배포 작업.
  2. 클러스터용 VM 외부 볼륨 마운트 kafka 계정 생성 작업.
  3. 편리한 SSH 접속을 위한 Script 작성
  4. 폐쇄망에 VM 3대에 JDK Kafka 설치를 위해 SCP 설치 파일 전송하기.
  5. JDK kafka 설치 로그 위치, 데이터 위치 설정값 잡아주기.

 

먼저 키를 생성 필요 없이 윈도우 클라이언트 PC에서 edge 서버로 접속하기 위한 key id_rsa_2048(GCP 모든 CE 접근 있는 key)

재활용 하여 사용 한다.

 

윈도우 클라이언트 환경 에서 scp 통해 edge 서버로 key 파일 전송

$ scp -i id_rsa_2048 [전송할 파일 이름] g-cloud@[목적지 서버IP]:[목적지 디렉토리]

 

전송 완료 edge 서버의 디렉토리의 .ssh 디렉토리에서 전송 key 파일 확인.

 

해당 key 파일을 이용하여 ssh kafka 클러스터용 VM들에 접속 있다.

$ ssh -i id_rsa_2048 g-cloud@10.12.0.2

$ ssh -i id_rsa_2048 g-cloud@10.12.0.3

$ ssh -i id_rsa_2048 g-cloud@10.12.0.4

 

클러스용 VM 접속 뒤에는 클러스터용 VM들에 대한 setting 해줘야한다.(볼륨 Mount, Kafka User 계정 생성 )

해당 문서 참조

 

볼륨 Mount 계정 생성이 끝났으면 편리한 운영을 위해 SSH 접속용 Script 작성을 준다. 당연히 Edge 서버에서 작업한다.

 

 

edge 서버에서 원하는 디렉토리에 간단히 shell script 파일을 작성 준다.

3대에 접속해야 하므로 3개가 필요하다.

 

 

스크립트 작성 작업이 완료 되었으면 kafka 클러스터용 VM 3대에 각각 JDK Kafka 설치 파일을 전송 줘야 한다.

왜냐하면 3대의 VM 내부망이라 직접 다운로드가 불가능하며 apt yum같은 패키지 관리자도 사용 할 없기 때문.

전부 압축 파일을 edge 서버에서 전송 줘야한다.

 

아래의 파일을 각각 kafka 홈페이지, openjdk 홈페이지에서 wget 통해 다운로드 받는다.

 

scp 명령어를 통해 VM 전송한다.

$ scp -i kafka_rsa kafka_2.13-3.2.0.tgz kafka@10.12.0.2:~

$ scp -i kafka_rsa openjdk-11.0.2_linux-x64_bin.tar.gz kafka@10.12.0.2:~

$ scp -i kafka_rsa kafka_2.13-3.2.0.tgz kafka@10.12.0.3:~

$ scp -i kafka_rsa openjdk-11.0.2_linux-x64_bin.tar.gz kafka@10.12.0.3:~

$ scp -i kafka_rsa kafka_2.13-3.2.0.tgz kafka@10.12.0.4:~

$ scp -i kafka_rsa openjdk-11.0.2_linux-x64_bin.tar.gz kafka@10.12.0.4:~

 

 

이제부터 클러스터 VM 접속해서 작업을 하면 된다.

먼저 JDK 설치부터 시작한다.

적당한 경로에 압축을 풀어준다.

 

 

그리고 .profile 파일에 환경변수를 등록 준뒤 source .profile 통해 적용.

$ vi .profile

$ source .profile

 

 

$ java -version 명령어를 통해 정상 설치 되었는지 확인.

 

 

JDK 설치가 완료 되었으면 Kafka 설치를 시작한다.

카프카 설치 파일 압축해제.

$ tar -xzvf kafka_2.13.-3.2.0.tgz

 

주키퍼 서버 설정

$ vi config/zookeeper.properties

원본 설정 파일은 백업 두자.

아래는 1 서버 설정 예시. 2번과 3 서버는 맨아래 server2 server3 부분을 0.0.0.0으로 작성.

 

 

주키퍼 서버 ID 설정

zookeeper.proerties 에서 마지막에 server.myid 형식으로 서버를 선언하여 클러스터를 구축하였는데.

해당 myid 부분을 설정해야한다.

dataDir에서 선언한 디렉터리 하위에 myid 라는 파일을 만든후 해당 파일에 서버id 입력하면 된다.

 

1 서버의 경우

$ echo 1 > /datalog/zookeeperlogs/myid

 

2 서버의 경우

$ echo 2 > /datalog/zookeeperlogs/myid

 

주키퍼 서버 구동

$ bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

 

주키퍼 서버 정상 구동하는지 확인

$ bin/zookeeper-shell.sh 10.12.0.2.2181

 

 

주키퍼 구동이 완료되면 카프카 서버 설정을 시작한다.

카프카 서버 설정

$ vi config/server.properties

 

broker.id 서버 별로 1, 2, 3으로 값을 주었다.

파티션은 클러스터가 3 이므로 3으로 설정 하였다.

로그 경로 zookeeper.connect 설정값 주의

 

그외 kafka 앱에서 발생하는 로그 경로를 설정하는 방법이 있는데 아래 링크를 참조한다.

카프카 애플리케이션 로그 경로 설정 방법

 

 

카프카 서버 메모리 설정(옵션)

$ vi bin/kafka-server-start.sh

기본값은 1G 이지만 클러스터 VM 스펙이 4GB 메모리 이므로 2G 할당 주었다.

 

카프카 서버 구동

$ bin/kafka-server-start.sh -daemon config/server.properties

 

 

 

'IT > Kafka' 카테고리의 다른 글

[Kafka] 아파치 카프카 로그 경로 바꾸기.  (2) 2022.05.25