반응형

/*
-- Title : [Kfk3.2] Kafka 설치-1(환경 설정 및 Zookeeper 설치)
-- Tag : apache kafka 아파치 카프카
*/


■ 클러스터 환경

  • 서버 : 가상서버 3대에 설치


■ 사용자 생성 (각 Instance 적용)

## 사용자 추가
[root@localhost ~]# useradd kafka
[root@localhost ~]# passwd kafka
kafka 사용자의 비밀 번호 변경 중
새  암호:
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[root@localhost ~]# pwconv
[root@localhost ~]#


■ kafka 계정에 sudo 권한 부여 (각 Instance 적용)

  • /etc/sudoers 편집
  • "kafka   ALL=(ALL)       ALL" 을 아래 위치에 추가
## kafka 사용자에 sudo 권한 부여
[root@localhost ~]# vi /etc/sudoers
## Allow root to run any commands anywhere 
root	ALL=(ALL) 	ALL
kafka   ALL=(ALL)       ALL   ## 여기 행 추가

## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
:wq!
[root@localhost ~]#


■ JAVA 확인 및 설치 (각 Instance 적용)

ㅁ JAVA 버전 확인

[root@localhost ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[root@localhost ~]#

 

ㅁ JAVA 설치 (버전이 설치되어 있지 않을 때)

## JAVA 패키지 설치
[root@localhost ~]# yum -y install java-1.8.0-openjdk-devel.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
...
Dependency Updated:
  java-1.8.0-openjdk.x86_64 1:1.8.0.342.b07-1.el7_9                                    
  java-1.8.0-openjdk-headless.x86_64 1:1.8.0.342.b07-1.el7_9                           
  tzdata-java.noarch 0:2022c-1.el7                                                     

Complete!
[root@localhost ~]# 

## JAVA 버전 확인
[root@localhost ~]# java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
[root@localhost ~]#


■ 호스트네임 변경 (각 Instance 적용)

  • 각  Instance에 호스트네임 변경
  • ka01(192.168.137.111), ka02(192.168.137.112), ka03(192.168.137.113) 지정
## 호스트명 변경
[root@localhost ~]# hostnamectl set-hostname ka01
[root@localhost ~]# cat /etc/hostname
ka01
[root@localhost ~]#

## hosts 파일 변경
[root@localhost ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.111 ka01
192.168.137.112 ka02
192.168.137.113 ka03

:wq!
[root@localhost ~]# 

## hosts 파일 변경 확인
[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.111 ka01
192.168.137.112 ka02
192.168.137.113 ka03
[root@localhost ~]#


■ Zookeeper 및 Kafka 서버간 방화벽 설정 (각 Instance 적용)

## 2181 : Zookeeper Client가 Zookeeper에 연결할 때 사용
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=2181/tcp
success

## 2888 : Zookeeper leader노드가 follower 노드를 위해 열어두는 포트(동기화용)
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=2888/tcp
success

## 3888 : Zookeeper 리더 선출을 위한 election 용 포트
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=3888/tcp
success

## 9092 : Kafka 기본 포트
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=9092/tcp
success

## 방화벽 재시작
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]#


■ Zookeeper 설치 파일 다운로드 및 압축 해제 (각 Instance 적용)

## Zookeeper 설치파일 다운로드
[root@localhost ~]# su - kafka
마지막 로그인: 화  9월 20 17:30:06 KST 2022 일시 pts/0
[kafka@ka02 ~]$
[kafka@ka02 ~]$ cd /tmp
[kafka@ka02 ~]$
[kafka@ka02 tmp]$ wget http://apache.mirror.cdnetworks.com/zookeeper/stable/apache-zookeeper-3.6.3-bin.tar.gz
...
Saving to: ‘apache-zookeeper-3.6.3-bin.tar.gz’

100%[===================================================================>] 12,516,362  7.49MB/s   in 1.6s   

2022-09-20 18:23:19 (7.49 MB/s) - ‘apache-zookeeper-3.6.3-bin.tar.gz’ saved [12516362/12516362]
[kafka@ka02 tmp]$ 

## 다운로드 확인
[kafka@ka02 tmp]$ ll *zoo*
-rw-rw-r--. 1 kafka kafka 12516362  4월 13  2021 apache-zookeeper-3.6.3-bin.tar.gz
[kafka@ka02 tmp]$

## 압축 해제
[kafka@ka01 tmp]$ sudo tar zxf apache-zookeeper-3.6.3-bin.tar.gz -C /opt

로컬 시스템 관리자에게 일반적인 지침을 받았으리라 믿습니다.
보통 세가지로 요약합니다:

    #1) 타인의 사생활을 존중하십시오.
    #2) 입력하기 전에 한 번 더 생각하십시오.
    #3) 막강한 힘에는 상당한 책임이 뒤따릅니다.

[sudo] kafka의 암호: 
[kafka@ka01 tmp]$ 

## 심볼릭 링크 설정
[kafka@ka01 tmp]$ ll /opt
합계 0
drwxr-xr-x. 8 root root 136  9월 12 21:34 VBoxGuestAdditions-6.1.36
drwxr-xr-x. 6 root root 133  9월 20 18:30 apache-zookeeper-3.6.3-bin
drwxr-xr-x. 2 root root   6 10월 31  2018 rh
[kafka@ka01 tmp]$
[kafka@ka03 tmp]$ cd /opt
[kafka@ka03 opt]$ sudo ln -s apache-zookeeper-3.6.3-bin zookeeper
[sudo] kafka의 암호: 
[kafka@ka03 opt]$ ll zoo*
lrwxrwxrwx. 1 root root 26  9월 20 18:35 zookeeper -> apache-zookeeper-3.6.3-bin
[kafka@ka03 opt]$

 


■ Zookeeper 구분 id 파일 생성 (각 Instance 적용)

  • ka01서버 : 1, ka02서버 : 2, ka03서버 : 3 으로 서버에 각 각 추가
[kafka@ka01 opt]$ mkdir /tmp/zookeeper
[kafka@ka01 opt]$ 
[kafka@ka01 opt]$ echo 1 > /tmp/zookeeper/myid
[kafka@ka01 opt]$ 
[kafka@ka01 opt]$ cat /tmp/zookeeper/myid
1
[kafka@ka01 opt]$


■ Zookeeper Configuration 파일 설정

  • #maxClientCnxns=60 주석 해제
  • 서버/포트 정보 추가
    server.1=ka01:2888:3888 
    server.2=ka02:2888:3888 
    server.3=ka03:2888:3888
## 구성 파일 복사
[kafka@ka01 opt]$ cd /opt/zookeeper/conf
[kafka@ka01 conf]$ sudo cp zoo_sample.cfg zoo.cfg
[sudo] kafka의 암호: 

## 구성 파일 변경
[kafka@ka01 conf]$ sudo vi zoo.cfg
...
maxClientCnxns=60        #uncomment
server.1=ka01:2888:3888  #add comment, possible ip address instead of ka01
server.2=ka02:2888:3888  #add comment, possible ip address instead of ka02
server.3=ka03:2888:3888  #add comment, possible ip address instead of ka03
...
:wq!
[kafka@ka01 conf]$ 

## 구성 파일 변경 확인
[kafka@ka01 conf]$ cat zoo.cfg
...
# the maximum number of client connections.
# increase this if you need to handle more clients
maxClientCnxns=60        #uncomment
server.1=ka01:2888:3888  #add comment, possible ip address instead of ka01
server.2=ka02:2888:3888  #add comment, possible ip address instead of ka02
server.3=ka03:2888:3888  #add comment, possible ip address instead of ka03
...
# Be sure to read the maintenance section of the 
[kafka@ka01 conf]$


■ Zookeeper 실행/중지/상태

ㅁ 서비스 실행/상태 확인

  • ./zkServer.sh start 시작
  • ./zkServer.sh status 상태확인
    - 인스턴스에 복제에 관련된 leader, follwer가 설정된 부분 확인 가능
[kafka@ka03 ~]$ cd /opt/zookeeper/bin
[kafka@ka03 bin]$ 

## 시작
[kafka@ka03 bin]$ sudo ./zkServer.sh start
[sudo] kafka의 암호: 
/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[kafka@ka03 bin]$

## 상태 확인
[kafka@ka02 bin]$ sudo ./zkServer.sh status
/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[kafka@ka03 bin]$

ㅁ 서비스 중지

## 서비스 중지
[kafka@ka03 bin]$ sudo ./zkServer.sh stop
/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[kafka@ka03 bin]$


■ Kafka 설치


※ Resources
https://jisootech.notion.site/jisootech/Kafka_3-2227884d67374f528357aca38298ef00
programacion.tistory.com/157
zookeeper.apache.org/doc/current/zookeeperStarted.html

 

 

 

 

반응형

+ Recent posts