-
Mac(IOS-M1칩)환경 도커(docker) + 카프카(kafka) 환경 구성하기 (1)Web Server 2023. 4. 16. 15:01반응형
스프링으로 실시간 메세지 전송기능을 공부하다가 많이 사용하는 카프카의 대해 정리해본다.
아래의 이미지는 주키퍼의 구성도다
이 그림에서 Server는 주키퍼, Client는 카프카라고 생각하면 된다.
• 카프카란?
- 분산형 스트리밍 플랫폼(A distributed streaming platform)
- LinkedIn에서 여러 구직 및 채용 정보들을 한곳에서 처리(발행-구독) 할 수 있는 플랫폼으로 개발이 시작
(발행/구독: publish-subscribe 은 메시지를 특정 수신자에게 직접적으로 보내주는 시스템이 아니고, 메시지를 받기를 원하는 사람이 해당 토픽(topic)을 구독함으로써 메시지를 읽어 올 수 있다.)
• 특징
- 대용량 실시간 로그처리에 특화되어 설계된 메시징 시스템으로 TPS가 매우 우수
- 메시지를 메모리에 저장하는 기존 메시징 시스템과는 달리 파일에 저장을 하는데 그로 인해 카프카를 재 시작해도 메시지 유실 우려가 감소
- 대용량처리에 특화 : 컨슈머(Consumer)가 브로커(Broker)로부터 메시지를 직접 가져가는 PULL방식으로 동작 > 컨슈머는 자신의 처리능력만큼의 메시지만 가져와 최적의 성능
- 확장성(scale-out)과 고가용성(high availability)을 위하여 broker들이 클러스터로 구성되어 동작하도록 설계되어있다. 심지어 broker가 1개 밖에 없을 때에도 클러스터로써 동작한다. 클러스터 내의 broker에 대한 분산 처리는 Apache ZooKeeper가 담당
• 주키퍼란?
- 주키퍼는(Zookeeper)는 분산 코디네이션 서비스를 제공하는 오픈소스 프로젝트다. 이러한 어플리케이션의 목적은 개발자가 코디네이션 로직보다는 비즈니스 핵심 로직에 집중하게끔 지원하는 역할
• 주키퍼 사용용도- 주키퍼는 클러스터에서 구성 서버들끼리 공유되는 데이터를 유지하거나 어떤 연산을 조율하기 위해 주로 사용
- 상태 정보를 지노드(znode)라 불리는 곳에 key-value 형태로 저장한다. 이 지노드에 저장된 key-value를 이용하여 분산 애플리케이션은 서로 데이터를 주고 받는다.
- 지노드는 일반 컴퓨터의 파일이나 폴더 개념으로 생각하자.
출처 https://programacion.tistory.com/156
#도커는 이미 설치되었다는 가정하에 카프카 설치부터 시작함
1. kafa docker 이미지 다운
터미널을 실행하고 아래의 git주소를 입력하여 이미지를 다운 받는다
git clone https://github.com/wurstmeister/kafka-docker
설치 후
ls 명령어로 kafka-docker 폴더가 생성된 것을 확인하실 수 있다.
2. docker-compose.yml 파일 수정
!!카프카는 카프카클러스터와 주키퍼가 설치되어 있어야해서 docker-compose로 컨테이너간의 연결작업이 필요하다.
카프카 폴더 접근 후
cd kafka-docker
vi편집기로 설정 파일을 연다.
vi docker-compose.yml
본인의 설정파일와 아래의 설정파일 내용이 상이하면 수정 및 추가한다.
docker-compose.yml
version: '2' services: zookeeper: image: wurstmeister/zookeeper container_name: zookeeper ports: - "2181:2181" restart: unless-stopped kafka: build: . container_name: kafka ports: - "9092:9092" environment: DOCKER_API_VERSION: 1.22 KAFKA_ADVERTISED_HOST_NAME: localhost KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped
본인이 수정 및 추가한 항목은 아래와 같다.
container_name: zookeeper
container_name: kafka
KAFKA_ADVERTISED_HOST_NAME:localhost
3. Docker로 카프카 서버띄우기
설정파일을 수정 후 아래의 명령어를 터미널에 입력하면
zookeeper도 함께 다운이 되고 카프카 이미지가 도커 서버에 올라간다.
docker-compose -f docker-compose.yml up -d
도커 컨테이너 확인하기
docker ps
위에 docker-compose.yml 설정파일에서 설정했던 컨테이너명(container_name: kafka, zookeeper)으로
도커에 올라간걸 확인한다.
다음 포스팅에서는 서버에서 직접 메세지를 주고 받는 테스틑 해보겠다.
반응형'Web Server' 카테고리의 다른 글
윈도우(WinDows7) 방화벽 포트(Port) 오픈하기 (0) 2017.05.13 아파치 Apache start시 request operation has failed 오류 해결방법 (0) 2017.05.09