● 준비 환경
- Virtualbox를 통해 Centos7에 설치
- 기본적으로 클러스트를 구성하기 위해서 3대 설치
- 보통 주키퍼3대, 카프카3대로 별도로 구성하는데 여기서는 그냥 테스트용도이므로 가상머신 3대에 주키퍼랑 카프카를 같이 설치 진행
- Centos7에 OpenJDK8 혹은 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 |