● 준비 환경

 - Virtualbox를 통해 Centos7에 설치

 - 기본적으로 클러스트를 구성하기 위해서 3대 설치

 - 보통 주키퍼3, 카프카3대로 별도로 구성하는데 여기서는 그냥 테스트용도이므로 가상머신 3대에 주키퍼랑 카프카를 같이 설치 진행

 - Centos7OpenJDK8 혹은 Oracle JDK8 Java8 버전 설치

 

● 설치 전 작업(ROOT)

 - 각 서버의 호스트 명 지정(필수조건은 아닌데, 설정해두면 편리)

hostnamectl set-hostname kafka1(호스트명)

hostnamectl set-hostname kafka2

hostnamectl set-hostname kafka3

자기 자신은 0.0.0.0 으로 호스트명과 세팅하고 다른 서버는 각각 아이피를 등록

vi /etc/hosts

0.0.0.0 kafka1

10.0.2.102 kafka2

10.0.2.103 kafka3

 - 주키퍼와 카프카를 위한 방화벽 설정

## 주키퍼 포트

firewall-cmd --permanent --zone=public --add-port=2181/tcp

firewall-cmd --permanent --zone=public --add-port=2888/tcp

firewall-cmd --permanent --zone=public --add-port=3888/tcp

## 카프카 포트

firewall-cmd --permanent --zone=public --add-port=9092/tcp

## 방화벽 재시작

firewall-cmd --reload

 

● 주키퍼(ZOOKEEPER) 설치

 - 적당한 곳에 Zookeeper를 다운로드 후, 압축 해제(/opt)

wget http://apache.tt.co.kr/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz

tar zxf apache-zookeeper-3.5.5-bin.tar.gz

ln -s apache-zookeeper-3.5.5-bin zookeeper

 - 각각의 서버에 주기퍼 노드를 구분하기 위한 id필요 (루트 계정일 경우에는 mkdir -p /data)

#(1: kafka1, 2: kafka2, 3: kafka3)

echo 1 > /tmp/zookeeper/myid

 - 설정파일

 - zookeeper/conf 안에 zoo_sample.cfg가 있으니 zoo.cfg로 복사해서 사용

cd zookeeper/conf

cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

 - 아래처럼 주석을 풀고 추가작성을 하도록 한다. 3개의 서버에 모두 같은 설정

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/ tmp/zookeeper

# the port at which the clients will connect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

maxClientCnxns=60

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

server.1=kafka1:2888:3888

server.2=kafka2:2888:3888

server.3=kafka3:2888:3888

● 주키퍼 실행

 - 실행

./zookeeper/bin/zkServer.sh start

 - 정상 START

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

 - 서비스등록을 위해 종료

./zookeeper/bin/zkServer.sh stop

 

 설정파일

vi /etc/systemd/system/zookeeper.service

[Unit]

Description=zookeeper

After=network.target

[Service]

Type=forking

User=incon

Group=incon

SyslogIdentifier=zookeeper

WorkingDirectory=/tmp/zookeeper

Restart=always

RestartSec=0s

ExecStart=/opt/zookeeper/bin/zkServer.sh start

ExecStop=/opt/zookeeper/bin/zkServer.sh stop

[Install]

WantedBy=multi-user.target

 - 시스템부팅 시 자동실행 설정

# 서비스 데몬 재시작

systemctl daemon-reload

# 주키퍼 실행 (종료는 stop, 재시작은 restart)

systemctl start zookeeper.service

# 실행상태 확인

systemctl status zookeeper.service

# 시스템 부팅할 때 자동실행 설정

systemctl enable zookeeper.service

 

● 카프카(KAFKA) 설치

 - 적당한 곳에 kafka를 다운로드 후, 압축 해제(/opt)

wget http://mirror.apache-kr.org/kafka/2.2.0/kafka_2.11-2.2.0.tgz

tar xvf kafka_2.11-2.2.0.tgz

ln –s kafka_2.11-2.2.0.tgz kafka

 - /opt/data 디렉토리 생성(카프카에 메시지가 저장되는 장소)

mkdir data

 - 카프카도 별도서버에 설치하면 /myid 파일을 만들고 그 안에 숫자를 넣으면 되는데 여기선 주키퍼랑 같이 쓰니까 로 사용

 - 카프카 설정 파일 수정

vi kafka/config/server.properties

############################# Server Basics ############################

#서버 /myid에 값으로 각각 세팅

broker.id=1

############################# Logs Basics #############################

## 카프카 메시지저장분산디렉토리

log.dirs=/opt/data

############################# Zookeeper #############################

## 주기퍼 연결설정

## 서버1호스트명:서버1포트,서버2호스트명:서버2포트,서버3호스트명:서버2포트/주기퍼노드명

zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181/incon-kafka

 - zookeeper.connect 에서 마지막 /incon-kafka주기퍼 노드명이다. 작성하지 않으면 주기퍼 루트 노드에 저장된다. 그렇게 되면 관리하기가 어려우므로 이렇게 별도로 노드명을 기재

 카프카 실행

 - 실행 (실행 전에 주키퍼 먼저 실행)

bin/kafka-server-start.sh config/server.properties &

(& 를 붙일 시 백그라운드에서 실행)

 - 정상 START

....중략....

[KafkaServer id=1] started (kafka.server.KafkaServer)

* 주키퍼 및 카프카 실행확인 : jps

'* KAFKA > KAFKA 설치' 카테고리의 다른 글

KAFKA Manager 설치  (0) 2019.07.22
KAFKA 테스트  (0) 2019.07.22
KAFKA(카프카) & ZOOKEEPER(주키퍼)  (0) 2019.07.22

+ Recent posts