Message Broker 설치

Sei Kim·2024년 1월 28일
0

AWS EC2

목록 보기
7/8
post-thumbnail

들어가며


kafka는 다른 포스트에서 이미 구성하는 것을 작성하였습니다. 해당 포스트에서는 이어서 AWS EC2 환경 위에 메시지 브로커를 설치하는 내용을 정리하도록 하겠습니다.

1. rabbitmq


Spring Cloud Config Server에서 API Gateway를 사용하여 일괄적으로 모든 마이크로 서비스의 환경값을 변경하기 위해서 사용하려고 rabbitmq를 선택하였습니다.

1.1. docker-compose


docker-compose.yml 파일에 해당 내용을 작성하였습니다.

version: "3"
services:
  zookeepre_cluster_1:
	...

  rabbitmq_container:
    image: rabbitmq:3.12-management
    container_name: rabbitmq_container
    ports:
      - ${RABBITMQ_BINDING_PORT}:5672 # 1)
      - ${RABBITMQ_WEB_BINDING_PORT}:15672 # 2)
    environment:
      - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER} # 3)
      - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS} # 4)
    volumes: # 5)
      - ${RABBITMQ_DATA_PATH}:/etc/rabbitmq/ 
      - ${RABBITMQ_CONFIG_PATH}:/var/lib/rabbitmq/
      - ${RABBITMQ_LOGS_PATH}:/var/log/rabbitmq/

천천히 하나씩 확인해보도록 하겠습니다.

먼저 이미지는 rabbitmq 공식홈페이지에서 확인한 이미지 입니다.

  1. rabbitmq에 접속할 수 있는 기본 포트는 5672이고 원하는 포트를 따로 설정할 수 있도록 하였습니다.
  2. rabbitmq를 모니터링할 수 있는 사이트의 기본 포트는 15672이고 원하는 포트를 따로 설정할 수 있도록 하였습니다.
  3. rabbitmq의 기본 유저 아이디입니다.
  4. rabbitmq의 기본 유저 비밀번호입니다.
  5. 컨테이너가 삭제되어도 데이터 유실을 방지하기 위해 볼륨으로 설정을 해두었습니다.

1.2. volume 폴더 생성


아래 사진과 같이 필요한 데이터별로 폴더를 생성하였습니다.

1.3. .env


다음과 같이 .env 파일을 작성하였습니다.

#####
# Rabbitmq
#####

RABBITMQ_BINDING_PORT=
RABBITMQ_WEB_BINDING_PORT=

RABBITMQ_DEFAULT_USER=
RABBITMQ_DEFAULT_PASS=

RABBITMQ_DATA_PATH=
RABBITMQ_CONFIG_PATH=
RABBITMQ_LOGS_PATH=

2. 실행하기


docker-compose up -d 로 실행하였습니다.


설치하는 모습 확인

rabbitmq 사이트에 접속을 해보도록 하겠습니다.

2.1. rabbitmq 실행 실패


rabbitmq 를 실행하는 과정에서 오류가 발생하였습니다.

해당 부분을 보니 볼륨으로 처리된 폴더에서 어떠한 일이 일어난 것 같습니다.
해당 볼륨 부분을 제거하고 실행하니 정상적으로 되었습니다.

그래서 권한 문제라고 파악을 하고 ( 사실 에러에도 보면 권한 문제인 것을 확인할 수 있습니다. ) 해당 폴더의 권한을 주었습니다.

chmod 777 logs

그 결과 정상적으로 실행되는 것을 확인할 수 있습니다.

2.2. 권한 주기 실패..


2.1.에서 성공한 것 처럼 보였으나.. 재대로 동작하지 않았습니다. 그래서 volume을 직접 설정하지 않고 docker에게 위임하였습니다.

version: "3"
services:
  rabbitmq_container:
    image: rabbitmq:3.12-management
    container_name: rabbitmq_container
    ports:
      - ${RABBITMQ_BINDING_PORT}:5672
      - ${RABBITMQ_WEB_BINDING_PORT}:15672
    environment:
      - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
      - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
    volumes:
      - rabbitmq_volume_config:/etc/rabbitmq/
      - rabbitmq_volume_data:/var/lib/rabbitmq/
      - rabbitmq_volume_log:/var/log/rabbitmq/

volumes:
  rabbitmq_volume_config:
  rabbitmq_volume_data:
  rabbitmq_volume_log:

이제 재대로 실행이 됩니다!

0개의 댓글