Kafka

[Kafka] binary 설치 및 실행

흥부가귀막혀 2022. 3. 15. 15:12

1. Zookeeper 구축

1) Zookeeper 설치

2) Zookeeper 설정

  • zookeeper configuration 을 참고하여 zookeeper 설정 파일을 정의한다.
  • cluster 로 구축해야하므로 설정파일에 zookeeper 로 구축할 각 서버정보를 아래와 같이 정의한다.
server.{zookeeper-1.serverId}={zookeeper-host1}:{follower-port}:{leader-election-port}
server.{zookeeper-2.serverId}={zookeeper-host2}:{follower-port}:{leader-election-port}
server.{zookeeper-3.serverId}={zookeeper-host3}:{follower-port}:{leader-election-port}

** follower-port 와 leader-election-port 는 kafka 에서 쓰는게 아닌 zookeeper 내부 통신용이므로 보통 kafka 가 접근하는 port 설정인 clientPort 설정과 다르게 해주어야 합니다.
** serverId 는 각 zookeeper 서버에 정의해주어야 하는 ID 값이므로 숫자로 중복되지 않게 정의해줍니다.

  • 각 zookeeper 서버에 위 설정파일에서 정의한 dataDir 경로 하위에 myid 라는 파일명으로 serverId 값을 기록합니다.(예시에서는 $HOME/data/zookeeper 경로를 dataDir 로 정의)

** example(serverId 를 1로 설정한 zookeeper 노드)

$ pwd
$HOME/data/zookeeper
$ ll
-rw-rw-r-- 1 user user    1 Sep 25  2019 myid
$ cat myid 
1
  • zookeeper 설정 파일이 있는 경로에 필요한 JVM 환경변수를 정의한 파일이나, log4j.properties 파일을 같이 정의하고 zookeeper 설정 파일이 있는 경로를 ZOOCFGDIR 명으로 환경변수를 설정한다.

** ZOOCFGDIR 환경변수 설정은 설치한 zookeeper 의 conf 디렉토리 하위에 설정파일을 두었다면 하지 않아도 된다.(경로를 변경해야할때 정의한다.)
** JVM 환경변수로 설정해야할 내용은 설치한 zookeeper의 bin 디렉토리 하위에 있는 zkEnv.sh 내용을 참고해서 필요한 사항들을 정의한다.

3) Zookeeper 실행

  • 설치한 zookeeper 의 bin 디렉토리 하위에 있는 zkServer.sh 를 아래와 같이 실행한다.
[irteamsu@dev-ncs-wmgq-de1-005-ncl bin]$ ./zkServer.sh start {zoo-conf filename}

** {zoo-conf filename} 은 설정파일을 zoo.cfg 로 했을경우 정의하지 않아도 된다. 파일명이 zoo.cfg 가 아닐경우에만 정의한다.

4) Zookeeper 종료

  • 설치한 zookeeper 의 bin 디렉토리 하위에 있는 zkServer.sh 를 아래와 같이 실행한다.
[irteamsu@dev-ncs-wmgq-de1-005-ncl bin]$ ./zkServer.sh stop {zoo-conf filename}

** {zoo-conf filename} 은 설정파일을 zoo.cfg 로 했을경우 정의하지 않아도 된다. 파일명이 zoo.cfg 가 아닐경우에만 정의한다.

2. Apache Kafka 구축

1) Kafka 설치

2) Kafka 설정

  • kafka broker config 내용을 참고하여 properites 파일을 작성.
  • 설정값중 zookeeper.connect 는 위에서 구축한 주키퍼 서버를 '호스트:포트' 형태로 , 로 구분하여 정의한다.
  • 설정파일 정의시 각 broker 노드들을 구분할 수 있는 broker.id 를 숫자형태로 각 서버마다 고유하게 정의한다.
  • kafka 실행시 아래의 JVM 환경 변수들을 셋팅하여 적용할 수 있다.
    • KAFKA_JMX_OPTS : jmx 관련 설정 정의(단, jmx port 를 해당 환경변수로 설정하고자 한다면, JMX_PORT 환경변수는 설정하지 않는다.)
    • JMX_PORT : jmx port 정의(단, KAFKA_JMX_OPTS 에서 -Dcom.sun.management.jmxremote.port 를 정의했을 경우 설정하지 말아야 한다.)
    • KAFKA_LOG4J_OPTS : kafka log4j 설정 관련 정의
    • LOG_DIR : kafka log 경로 정의
    • JAVA_HOME : java home path 정의
    • KAFKA_HEAP_OPTS : kafka heap 설정 정의
    • KAFKA_JVM_PERFORMANCE_OPTS : kafka jvm 옵션 관련 설정 정의

3) Kafka 실행

  • 설치한 kafka 의 bin 하위에 있는 kafka-server-start.sh 를 실행한다.
  • 백그라운드 프로세스로 실행하기 위해서는 -deamon 설정을 추가한다.
  • 설정파일 경로를 파라미터로 추가한다.
  • 만약 설정파일에 정의한 내용을 override 할 설정이 있다면 --override property=value 형태의 옵션을 추가한다.
$ ./kafka-server-start.sh -deamon $CONFIG_DIR/kafka/kafka.properties

4) Kafka 종료

  • 설치한 kafka 의 bin 하위에 있는 kafka-server-stop.sh 를 실행한다.
  • 종료시 특별히 필요한 파라미터는 없다.
$ ./kafka-server-stop.sh