Mac(IOS) 환경 Docker + Kafka 환경 구성 (1)

Spring으로 실시간 메시지 전송 기능을 공부하면서 널리 사용되는 Kafka를 정리해 보겠습니다.

아래 이미지는 ZooKeeper의 구성도입니다.


출처: https://ssup2.github.io/theory_analysis/ZooKeeper/

이 사진에서 서버는 ZooKeeper, 클라이언트는 Kafka당신은 그것을 생각할 수 있습니다.

카프카란?

탈중앙화 스트리밍 플랫폼(분산 스트리밍 플랫폼)

– 링크드인다양한 구직 및 채용정보를 한자리에서 프로세스(출판하다구독하다) 개발은 다음을 수행할 수 있는 플랫폼에서 시작됩니다.

(출판하다/구독하다: 게시-구독 특정 수신자에게 직접 메시지를 보내는 시스템이 아닙니다., 해당 주제의 메시지를 받고 싶은 사람(주제)구독하면 메시지를 읽을 수 있습니다..)

특성

대용량 실시간 로그 처리를 위해 특별히 설계되었습니다. 메시징 시스템으로 TPS매우 좋다

메시지를 메모리에 저장하는 기존 방식 메시징 시스템과 달리 파일에 저장되기 때문에 카프카를 재시작해도 메시지가 유실될 위험이 적다.

대용량 처리에 특화 : 소비자(소비자)중개인에게 가다(브로커)에서 직접 메시지 가져오기 당기다방식으로 행동 > 소비자 처리 용량만큼 많은 메시지만 가져와서 최적의 성능 제공

확장성(스케일 아웃)수업 고가용성(고가용성)~을 위한 브로커클러스터에서 작동하도록 설계되었습니다.. 심지어 브로커가다 1개만 있는 경우에도 클러스터 역할을 함. 클러스터 내 브로커분산 처리 아파치 주키퍼담당

• 주키퍼무엇인가요

Zookeeper는 분산 조정 서비스를 제공하는 오픈 소스 프로젝트입니다. 이러한 응용 프로그램의 목적은 개발자가 조정 논리보다 비즈니스에 중요한 논리에 집중할 수 있도록 돕는 것입니다.


• 주키퍼 사용

– ZooKeeper는 주로 클러스터의 구성 서버 간에 공유되는 데이터를 유지하거나 특정 작업을 조정하는 데 사용됩니다.

– 상태 정보는 znode라는 곳에 key-value 형태로 저장됩니다. 분산 응용 프로그램은 이 gnode에 저장된 키-값을 사용하여 서로 데이터를 교환합니다.

– Gnode를 일반 컴퓨터의 파일이나 폴더 개념으로 생각하시면 됩니다.

출처: https://programacion.156

#Docker는 이미 설치되어 있다고 가정하고 Kafka 설치로 시작합니다.

1. 카파 도커 이미지 다운로드

터미널을 실행하고 아래 git 주소를 입력하여 이미지를 다운로드합니다.

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

설치 후

에스 명령으로 카프카 도커 폴더는 만들어진 물건 확인하다 숫자 있습니다.


2. docker-compose.yml 파일 수정

!!Kafka는 Kafka 클러스터와 ZooKeeper가 설치되어 있어야 하므로 컨테이너를 docker-compose로 연결해야 합니다.

Kafka 폴더에 접속 후

cd kafka-docker

편집기로 구성 파일을 엽니다.

vi docker-compose.yml

자신의 설정 파일과 아래 설정 파일의 내용이 다를 경우 수정하여 추가합니다.

docker-compose.yml

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    restart: unless-stopped

  kafka:
    container_name: kafka
    image: wurstmeister/kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      DOCKER_API_VERSION: 1.22
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_CREATE_TOPICS: "test-topic:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

제가 수정하고 추가한 항목은 다음과 같습니다.

컨테이너 이름: kafka //기본 컨테이너 이름

KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 // localhost IP 입력

KAFKA_CREATE_TOPICS: “test-topic:1:1” // 기본 주제 설정

삼. Docker로 Kafka 서버 시작

config 파일을 편집한 후 터미널에 다음 명령을 입력합니다.

Zookeeper도 다운되고 Kafka 이미지가 Docker 서버에 업로드됩니다.

docker-compose -f docker-compose.yml up -d


도커 컨테이너 확인

docker ps


위의 docker-compose.yml 구성 파일에 설정된 컨테이너 이름(container_name: kafka)으로 Docker에 업로드 되었는지 확인합니다.

다음 포스팅에서는 서버에서 직접 메시지를 보내고 받는 테스트를 해보겠습니다.