2021.06.30 - [프로그래밍 노트/인프라] - [kafka] 주키퍼(zookeeper) 설치 및 실행 (환경설정)
카프카 설치하기
$ wget http://apache.mirror.cdnetworks.com/kafka/2.8.0/kafka_2.12-2.8.0.tgz
$ tar xzvf kafka_2.12-2.8.0.tgz
$ ln -s kafka_2.12-2.8.0 kafka
카프카 환경설정
환경설정 파일을 열어 필요한 정보들을 수정해야 한다.
- 서버별 브로커 아이디
- 카프카 저장 디렉터리
- 주키퍼 정보
1. 서버별 브로커 아이디
카프카도 주키퍼가 myid를 지정한것과 비슷하게 id를 매칭시켜야 한다.
3대의 서버가 있다고 가정해보자. 아래와 같이 broker.id를 매핑한다고 기억해두었다가 나중에 카프카 환경설정에 적용해야한다.
kafka-server1 -> broker.id=1
kafka-server2 -> broker.id=2
kafka-server3 -> broker.id=3
2. 카프카 저장 디렉터리
카프카는 컨슈머가 메시지를 가져가더라도 저장된 데이터를 임시로 보관하는 기능이 있다. (다른 컨슈머가 offset 0 부터 다시 읽을 수 있는 이유)
서버에 디스크가 하나인 경우 - 디렉터리를 하나만 구성하거나 여러 디렉터리에 만들어 구성 가능
서버에 디스크가 여러개인 경우 - 디스크 수만큼 디렉터리를 만들면 각 디스크별로 I/O를 분산할 수 있음
/data1, /data2 를 만들어 저장 디렉터리로 사용해보자.
모든 클러스터(kafka-server1, kafka-server2, kafka-server3)에 동일하게 생성해주자.
$ mkdir -p /data1
$ mkdir -p /data2
3. 주키퍼 설정
카프카가 바라보는 주키퍼의 정보를 어떻게 구성해야하는지 설정해야 한다.
주키퍼 3대(앙상블), 카프카 3대(클러스터) 가 존재하는 상태에서, 카프카가 3번째 주키퍼만 바로보고있으면 문제가 생길수도 있다. (3번째 주키퍼가 다운되면, 카프카 3대 서버 모두 다운이 된다.)
따라서 주키퍼 정보를 입력할 때에는 주키퍼 앙상블 서버 리스트를 모두 입력해야 한다.
아래와 같이 환경설정을 해준다.(config/server.properties)
기본적으로 셋팅할 것은 앞에서 살펴본 브로커 아이디, 디렉토리, 주키퍼 정보들이다.
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# see kafka.server.KafkaConfig for additional details and defaults
############################# Server Basics #############################
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1 -(1)
...
############################# Log Basics #############################
# A comma separated list of directories under which to store log files
log.dirs=/tmp/kafka-logs -(2)
# The default number of log partitions per topic. More partitions allow greater
# parallelism for consumption, but this will also result in more files across
# the brokers.
num.partitions=1
# The number of threads per data directory to be used for log recovery at startup and flushing at shutdown.
# This value is recommended to be increased for installations with data dirs located in RAID array.
num.recovery.threads.per.data.dir=1
...
############################# Zookeeper #############################
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=zookeeper-server1:2181,zookeeper-server2:2181,zookeeper-server3:2181 -(3)
# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=18000
...
(1) - 준비한 카프카 호스트 이름과 broker.id를 매핑한 숫자로 변경한다. kafka-server1 에서는 broker.id를 1로 바꿔준다.
(2) - 디렉토리에 대한 수정이며, 여러개의 디스크를 사용하는 경우 /data1,/data2 이런식으로 입력한다.
(3) - 지노드 설정 부분
다른 주요환경설정은 아래를 참고
https://kafka.apache.org/documentation/#brokerconfigs
카프카 실행 및 중지
실행시 환경설정 properties 경로를 설정해 준다.
$ ${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties
$ ${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties -daemon
$ ${KAFKA_HOME}/bin/kafka-server-stop.sh
'프로그래밍 노트 > 인프라' 카테고리의 다른 글
[kafka] 콘솔, 자바를 이용하여 프로듀서(producer) 구현 (0) | 2021.07.16 |
---|---|
[kafka] Docker 사용하여 카프카 클러스터 구성하기 (1) | 2021.07.16 |
[kafka] 주키퍼(zookeeper) 설치 및 실행 (환경설정) (0) | 2021.06.30 |
[kafka] Docker 사용하여 카프카 실행하기 (0) | 2021.06.20 |
[kafka] 카프카 고가용성과 리플리케이션(장애 극복 방법) (0) | 2021.05.04 |