시작하기에 앞서 Docker 엔진을 설치해야한다.

윈도우 사용자의경우 Docker for Windows or Docker Toll Box 

Mac의 경우 Docker for MAC을 다운로드하고 설치하자

 

docker-compose 확인하기

$docker-compose version

위의 코드를 사용해서 해당 docker엔진에 docker-compose가 설치되어있는지 확인한다. 없다면  docker가 설치된 상태에서 아래의 방법으로 설치가 가능하다.

Docker for winodws 혹은 도커 툴박스를 설치했다면 최신버전의 경우 docker-compose가 자동적으로 설치되어있다. 하지만 혹시 모르니 버전확인은 필수

$ curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

kafka-docker 레파지토리 클론

$ git clone https://github.com/wurstmeister/kafka-docker

혹시 fatal: could not create work tree dir 'kafka-docker': Permission denied 이런 오류가뜬다면 docker계정이 root계정 혹은 루트 위치가 아닐경우다 오류검색을해보면 계정에 루트권한을 주라고 나오는거 밖에없었는데 필자 같은경우는 해결이 안되서 cd..으로 루트위치로 이동하니 해결이 되었다

레퍼지토리를 클론 받으면 이런 창이 뜨면 성공이다

docker-compose-single-broker.yml 수정

로컬에서 실행하기 위해 KAFKA_ADVERTISED_HOST_NAME 값을 127.0.0.1로 변경한다.

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    build: .
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

docker-compose-single-broker.yml을 어디서 수정해야하는지 몰랐서 좀 붕떳는데 그냥 내pc서 파일을 검색하던가 오래걸린다면 C드라이브/사용자폴더/kafka-docker 폴더안에가면 docker-compose-single-broker.yml폴더가있다.

메모장으로 실행후 KAFKA_ADVERTISED_HOST_NAME 의 ip값을 수정해주면된다

docker-compose 시작하기

$ cd kafka-docker
$ docker-compose -f docker-compose-single-broker.yml up # Single Broker

설정이 끝났으면 위 명령어로 zookeeper 1대, 카프카 클러스터 1대를 시작한다. docker-compose.yml에 정의된 대로 docker-compose를 통해 서버를 실행한다.

처음에 설치하려니 아예 진행이안되서 

$ docker-machine restart default  

를사용해 도커 엔진을 재실행하고 하니 일단 다운은 진행되었다.. 근데

...

이렇게 신나게 설치되다가 또 오류가 발생했다.. 하.. 해결법 찾아도 마땅한게없어서 무시하고 진행해보자

추가) git config --global core.autocrlf false 명령어를 사용하면 

캐리지 리턴 오류가 해결되서 정상적으로 다운로드된다.

그럼 zookeeper Server와 Kafka Server를 실행하는 수고를 안해도 Docker 컨테이너속에 로컬 서버가 만들어진다.

(아래 서버 2개 키는거 할 필요 x)

 

정상적으로 설치가 진행되는 화면

이 화면이 나왔다면 터미널을 하나 더켜주고 밑에내용을 진행하면 된다.

Kafka 다운로드

카프카 다운로드하기

필자는 window TollBox를 사용해서 카프카 서버를 생성해서 wget명령어가 사용이 안되었다.ㅜㅜ 그래서 위의 카프카 다운로드하기 주소를 클릭하면 다운로드 할수있다. download kafka_2.12-0.10.2.0.tgz 파일을 일단 다운받는다.

$ wget https://www.apache.org/dyn/closer.cgi?path=/kafka/0.10.2.0/kafka_2.12-0.10.2.0.tgz
$ tar xzvf kafka_2.12-0.10.2.0.tgz
$ cd kafka_2.12-0.10.2.0

 

wget명령어가 사용이 가능한 터미널이라면 위의 코드를 사용한다.

다운받은 파일을 kafka-docker 폴더에 직접 넣어준후

$ tar xzvf kafka_2.12-0.10.2.0.tgz

명령어를 실행해주면

이렇게 다운로드가시작된다.

다운로드가 끝나면 위의 cd명령어로 설치한 카프카에 접속한다.

 

 

 

 

잘되나 싶더니 또 막혔다. 파일을 못찾는다고한다.. 확인해보면 kafaka-run-class.sh파일 제위치에 잘있는데 왜 오류라뜨는건지 모르겠다

타블로그 보고 따라하다가 윈도우의 경우 명령어 자체가 다른걸 늦게 확인했다. 다 mac o/s 만 쓰나보다..

https://kafka.apache.org/quickstart

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

위 사이트를 확인해보면 windows의 경우 bin앞에 winodws폴더로 접근하고 sh 대신 bat을 사용하라한다 이런

 

서버 실행하기 

bin/windows/zookeeper-server-start.bat config/zookeeper.properties   //zookeeper실행 
bin/windows/kafka-server-start.bat config/server.properties //  터미널 하나 더열고 kafaka server 실행

 서버를 실행할때는 반드시 터미널을 하나 더 실행시켜줘야하는걸 숙지하자

토픽 생성 및 생성된 토픽확인

$ bin/windows/kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test12
3 // 토픽 생성 "test123"
Created topic "test123". 

$ bin/windows/kafka-topics.bat --list --zookeeper localhost:2181 //생성된 토픽확인
test123 // 출력물

Producer와 Consumer 연결

bin/windows/kafka-console-producer.bat --broker-list localhost:9092 --topic test123//프로듀서 연결

터미널 하나더키고

$ bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test123 --from-beginning
//컨슈머 연결해준다

필자같은경우는 서버를켰던 터미널은 그대로 두고 새로 터미널창을 열어서 producer를 연결했다.

그리고 터미널창을 또 연결해서 컨슈머를 연결했다(cd kafka-docker/kafka_2.12-0.10.2.0) 으로 접속해서 ㅇㅇ

왼쪽이 porducer 오른쪽이 consumer 결과화면

위 화면을 보면 프로듀서 입력한내용이 컨슈머로 가는걸 확인했다. 

반대로 컨슈머서는 채팅자체가 안쳐진다.

 

막상 연결되니 간단한데 대부분 블로그서 bin..../.sh 를 사용하니 오래 해맸다...

zookeeper 와 kafka Server연결은 서버단 만들때 터미널창 2개띄우는거 필수(docker-compose)가 정상적으로되면 이번 목적은 로컬 연결로 테스트하기 때문에 Server단 연결은 필요없어보임

 

'Coding > Server' 카테고리의 다른 글

Docker DB 생성 연결  (0) 2019.11.08
REST API 를 쓰는이유  (0) 2019.11.08
Docker 메모  (0) 2019.11.07

+ Recent posts