2020년 9월 20일 일요일

Apache Kafka [2] - 설치


환경

가상머신 : Virtualbox 6.2.12

운영체제 : CentOS-7-x86_64-Everything-2003.ios

3대설치 각 host는 hadoop01, hadoop02, hadoop03으로 지정


1. virtual machine에 centOS-7을 올리고 설치


2. Java설치

카프카를 설치하기 전 주키퍼(zookeeper)를 설치해야 하는데, 주키퍼는 자바(java)애플리케이션이기에 먼저 설치해준다.

$ yum -y install java-1.8.0-openjdb


3. 호스트 이름변경

vi /etc/hosts를 열어 

111.11.11.1111    hadoop01

222.22.22.2222    hadoop02

333.33.33.3333    hadoop03

을 추가한다. ( 3대 서버 모두 )


4. Zookeeper설치

설치와 환경설정 모두 3대 서버 동일하게 진행한다. 주키퍼는 과반수투표 프로세스 때문에 3대 5대 7대와 같이 홀수로 구성해야 한다.

설치할 path로 이동한다.

$cd /usr/local

$wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

$tar zxf zookeeper-3.4.14.tar.gz

심볼릭링크생성

ln -s zookeeper-3.4.14 zookeeper

설치경로와른 다른 별도의 주키퍼 데이터디렉토리를 추가한다. 여기엔 주키퍼지노드 복사본인 스냅샷과 트랜잭션 로그들이 저장된다. 

mkdir -p /data

myid라는 파일을 만들고 내용을 1이라고 한다.

echo 1> /data/myid    //host hadoop01

echo 2> /data/myid    //host hadoop02

echo 3> /data/myid    //host hadoop03


5. Zookeeper환경설정

$vi /usr/local/zookeeper/conf/zoo.cfg

tickTime=2000 : 주키퍼가 사용하는 시간에 대한 기본단위(밀리초)

initLimit=10 : 팔로워가 리더와 초기에 연결하는 시간에 대한 타임아웃 tick의 수

syncLimit=5 : 팔로워가 리더와 동기화하는 시간에 대한 타임아웃 tick의 수 (주키퍼에 저장된 데이터가 크면 수를 늘려야 함)

dataDir : 주기퍼의 트랜잭션 로그와 스냅샷이 저장되는 데이터 저장경로

clientPort : 주키퍼 사용 TCP포트

maxClientCnsxns=60 : 하나의 클라이언트에서 동시접속 수 제한. 0이면 unlimit로 설정

autopurge.purgeInterval=1 : 스냅샷 및 해당 트랜잭셕로그 자동 삭제 주기. 양수(1이상)로 설정하면 ON, 0은 OFF

server.N : 주기퍼 앙상플 구성을 위한 설정


기본설정은 수정하지 않고 

dataDir=/data

server.1=hadoop01:2888:3888

server.2=hadoop02:2888:3888

server.3=hadoop03:2888:3888

만 추가한다.

2888, 3888은 기본 포트이며 앙상블 내 노드끼리 연결(2888)하고, 리더선출(3888)에 사용한다.


6. Zookeeper 실행/중지

$ /usr/local/zookeeper/bin/zkServer.sh start    //실행

Using config: /usr/local/zookeeper/bin../conf/zoo.cfg

Starting zookeeper ... STARTED

$ /usr/local/zookeeper.bin/zkServer.sh stop    //중지


7. Kafka 설치

카프카 클러스터의 브로커 수를 3대로 구성

카프카 또한 자바 애플리케이션으로 자바가 설치되어야 함.

스칼라버전 2.13버전인 kafka2.6으로 다운로드.

$ cd /usrl/local

$ wget http://mirror.navercorp.com/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz

$ tar zxf kafka_2.13-2.6.0.tgz

심볼릭 링크

ln -s kafka_2.13-2.6.0


8. 카프카 환경설정

  • 서버별 브로커 아이디
  • 카프카 저장 디렉토리
  • 주키퍼정보

서버별 브로커 아이디

호스트        브로커ID

hadoop01    broker.id=1

hadoop02    broker.id=2

kadoop03    broker.id=3


카프카 저장디렉토리

카프카는 컨슈머가 메세지 소비 후에도 저장된 데이터를 임시로 보관할 수 있다.

이 데이터들은 디스크마다 별도로 저장할 수 있는데 예제에서는 디렉토리로 대체한다.

$ mkdir -p /data1

$ mkdir -p /data2


주키퍼정보

zookeeper.connect=주키퍼호스트:주키퍼포트/지노드네임

zookeeper.connect=172.30.1.17:2181,172.30.1.59:2181,172.30.1.40:2181/hadoop-kafka


server.properties 파일을 열어 3대 모두 카프카 환경설정을 해준다.

$ vi /usr/local/kafka/config/server.properties

broker.id = 1 / 2 / 3     각 서버별로 다르게 

log.dirs=/data1,/data2

zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181/hadoop-kafka


9. 카프카 실행

--daemon 옵션을 주어 백그라운드로 실행한다.

$/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties


중지하려면 다음 명령어를 입력한다.

$/usr/local/kafka/bin/kafka-server-stop.sh


10. 카프카 정보 확인

주키퍼에 접속하여 지노드를 확인해 카프카가 잘 작동하는지 확인해본다.

$/usr/local/zookeeper/bin/zkCli.sh

zk: localhost:2181(CONNECTED) 0] ls /

[ zookeeper, hadoop-kafka]


11. 카프카 로그 확인

$cat /usr/local/kafka/logs/server.log













댓글 없음:

댓글 쓰기