카프카 클러스터를 구성하기 위해 먼저 VM(CE)를 구성 해 준다.
총 4대의 VM이 필요하며 이 중 3대는 카프카 클러스터 구성용, 1대는 SSH 접속을 위한 Public IP가 부여된 VM이다.
폐쇄망 VM과 공개망 VM을 만드는 것은 따로 상세히 기술하지는 않는다.
주의 할 점은 카프카 클러스터 구성용 VM에는 각각 30GB의 외부 볼륨이 붙는다.
아래 사진 한장으로 설명을 대체 한다.
각 서버에 SSH로 접속하기 위해 edge 서버에서 몇가지 작업을 해야한다. 아래 순서대로 진행 한다.
- kafka 클러스터용 VM에 SSH로 접속하기 위한 키 생성 및 키 배포 작업.
- 클러스터용 VM에 외부 볼륨 마운트 후 kafka 계정 생성 작업.
- 편리한 SSH 접속을 위한 Script 작성
- 폐쇄망에 VM 3대에 JDK와 Kafka 설치를 위해 SCP로 설치 파일 전송하기.
- 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 |
---|