이번 글에서는 Docker Swarm 환경에서 ELK(Elasticsearch, Logstash, Kibana) 스택을 설치하고, Kibana 접속 시 자주 발생하는 문제인 'Kibana server is not ready yet'를 해결한 경험을 공유하고자 합니다. 1. Docker Swarm에서 ELK 스택 설치ELK 스택은 로그 수집, 분석, 시각화에 널리 사용되는 도구입니다. 아래는 제가 사용한 docker-compose.yml 설정입니다.ELK 스택 구성 파일version: '3.9'networks: elk: driver: overlayvolumes: elk-data: driver: local driver_opts: type: none o: bind ..
전체 글
RabbitMQ 관리 플러그인은 RabbitMQ의 동작을 직관적으로 이해하고 관리할 수 있도록 돕는 도구입니다.Docker를 사용해 RabbitMQ를 설치했다면, 기본적으로 이 플러그인은 활성화되며 포트 15672에서 작동합니다. 이전 게시물에 Docker 에서 RabbitMQ를 설치하였습니다. https://float.tistory.com/313 rabbitmq[4] Docker를 사용하여 RabbitMQ를 설치하고 설정하는 방법Docker를 사용하여 RabbitMQ를 설치하고 설정하는 방법 Docker Stack을 사용하여 RabbitMQ를 설치 및 설정하는 방법을 소개합니다. RabbitMQ는 Windows, Linux, macOS 등 다양한 환경에서 설치가 가능하지만,float.tistory...
Docker Compose 파일에서 Volume(볼륨)을 정의하는 것은 컨테이너의 데이터를 영구적으로 저장하거나 호스트 시스템과 공유하기 위해 매우 중요합니다.볼륨을 정의하지 않으면, 컨테이너가 삭제되거나 재시작될 때 모든 데이터가 사라질 위험이 있습니다. 아래에서는 볼륨을 사용하는 주요 이유를 설명합니다. 본 글은 아래 게시물에서 이어집니다. https://float.tistory.com/313 rabbitmq[4] Docker를 사용하여 RabbitMQ를 설치하고 설정하는 방법Docker를 사용하여 RabbitMQ를 설치하고 설정하는 방법 Docker Stack을 사용하여 RabbitMQ를 설치 및 설정하는 방법을 소개합니다. RabbitMQ는 Windows, Linux, macOS 등 다양한 환..
Docker를 사용하여 RabbitMQ를 설치하고 설정하는 방법 Docker Stack을 사용하여 RabbitMQ를 설치 및 설정하는 방법을 소개합니다. RabbitMQ는 Windows, Linux, macOS 등 다양한 환경에서 설치가 가능하지만, 저는 Linux 환경에서 Docker Stack를 활용해 설정을 진행했습니다. 아래에서는 RabbitMQ를 Docker Swarm 환경에서 YAML 파일을 이용해 설치하고, Traefik으로 라우팅을 설정하는 방법을 상세히 설명합니다. 1. Docker Network 생성 다음 명령어를 사용하여 네트워크를 생성합니다docker network create --driver overlay --attachable rabbotmq-network--driv..
1. RabbitMQ와 메시지 큐의 이해 https://float.tistory.com/309 RabbitMQ[1] RabbitMQ와 메시지 큐의 이해: 마이크로서비스를 위한 비동기 통신RabbitMQ와 **메시지 큐(Message Queue)**에 대해 알아보고, 마이크로서비스 아키텍처에서 어떻게 활용되는지 공부 및 정리한 내용입니다. RabbitMQ를 이해하기 전에, 먼저 메시지 큐가 무엇인지 간단히float.tistory.com 2. RabbitMQ의 핵심 개념https://float.tistory.com/310 RabbitMQ[2] RabbitMQ의 핵심 개념Producer (생산자)Producer는 메시지를 전송하는 애플리케이션입니다.Producer는 Consumer(소비자)에게 직접 메시지를..
일반적인 메시징 시스템 아키텍처우선, 일반적인 메시징 시스템 아키텍처를 살펴봅시다. Producer(생산자): 메시지를 생성하고 보냅니다.Consumer(소비자): 메시지를 읽어들이고 처리합니다.Message Broker(메시지 브로커): Producer와 Consumer 사이에서 메시지를 중계합니다.흐름: Producer는 메시지를 브로커로 보내고, Consumer는 브로커에서 메시지를 읽습니다.이것이 일반적인 메시징 시스템의 구조입니다.RabbitMQ 메시징 시스템 아키텍처RabbitMQ 아키텍처에서는 위 구조에 추가적으로 Exchange(교환기)라는 컴포넌트가 있습니다.RabbitMQ의 흐름은 다음과 같습니다Producer가 메시지를 Exchange에 보냅니다.Exchange는 메시지를 적절한 Q..
Producer (생산자)Producer는 메시지를 전송하는 애플리케이션입니다.Producer는 Consumer(소비자)에게 직접 메시지를 보내지 않습니다.대신, 메시지를 RabbitMQ 브로커로 전송합니다.Producer는 메시지를 RabbitMQ 브로커로만 보냅니다.이후 Consumer가 RabbitMQ 브로커에서 메시지를 읽어 처리합니다.2. Consumer (소비자)Consumer는 RabbitMQ 브로커로부터 메시지를 읽어들이는 애플리케이션입니다.Producer가 메시지를 브로커에 보낸 후, Consumer는 브로커에 저장된 메시지를 읽어 처리합니다.여러 Consumer가 RabbitMQ 브로커에 동시에 연결될 수 있습니다.예: Consumer1, Consumer2 등이 RabbitMQ 브로커에..
RabbitMQ와 **메시지 큐(Message Queue)**에 대해 알아보고, 마이크로서비스 아키텍처에서 어떻게 활용되는지 공부 및 정리한 내용입니다. RabbitMQ를 이해하기 전에, 먼저 메시지 큐가 무엇인지 간단히 알아보겠습니다. 메시지 큐메시지 큐(Message Queue)는 애플리케이션들이 서로 메시지를 주고받으며 소통할 수 있도록 돕는 시스템입니다.이 시스템은 메시지를 임시로 저장하여, 대상 애플리케이션(소비자)이 바쁘거나 연결이 끊어진 경우에도 메시지를 안전하게 전달할 수 있습니다.메시지 큐의 주요 특징임시 저장: 메시지는 큐에 저장되며, 필요할 때 소비자에 의해 처리됩니다.비동기 통신 지원: 메시지를 보낸 생산자는 응답을 기다리지 않고 다른 작업을 계속 진행할 수 있습니다.메시지 큐의 구..
운영 환경 오픈 후, 속도가 급격히 저하되거나 쿼리 조회가 멈추는 현상이 발생했습니다. 이를 모니터링하면서 문제가 심화되는 것을 확인했고, 이에 따라 원인을 분석하고 해결책을 모색하게 되었습니다. 함수와 배치에서의 쿼리 조회 방식을 변경하여 성능을 크게 개선할 수 있었습니다. 이번 글에서는 제가 진행한 함수 및 쿼리 최적화 과정을 공유하려고 합니다. 문제 분석 및 원인 파악운영 환경에서 배치 작업 중 속도 저하와 조회 멈춤 현상을 겪으면서, 먼저 시스템의 성능을 모니터링하며 문제의 원인을 분석했습니다. 조회 대상은 약 200건 정도였으며, 상태가 '전송완료'인 건들 중 '상태 전송대상'으로 변경된 값들을 조회하는 쿼리였습니다. 이때 대상 건들이 많아지면서 조회 속도가 급격히 떨어지거나, 아예 멈추는 현..
Docker Swarm에서 비밀번호를 안전하게 관리하는 방법: Docker Secrets 사용법 Docker Swarm 환경에서는 env 파일로 민감한 정보를 관리하는 것에 제한이 있습니다. 특히, 패스워드와 같은 정보는 명령문으로 선언할 수도 있지만, 보안을 위해 Docker Secrets을 활용하여 관리하는 것이 좋습니다. 이 글에서는 Docker Secrets를 사용해 비밀번호를 안전하게 저장하고 사용하는 방법을 설명합니다. 1. Docker Secrets를 사용해 비밀번호 관리하기Docker Secrets는 Docker Swarm에서 민감한 정보를 보호하는 방법으로, docker secret create 명령어를 사용하여 비밀번호 등의 중요한 데이터를 안전하게 관리할 수 있습니다. 아래의 단계..