kafka는 다른 포스트에서 이미 구성하는 것을 작성하였습니다. 해당 포스트에서는 이어서 AWS EC2
환경 위에 메시지 브로커를 설치하는 내용을 정리하도록 하겠습니다.
Spring Cloud Config Server
에서 API Gateway를 사용하여 일괄적으로 모든 마이크로 서비스의 환경값을 변경하기 위해서 사용하려고 rabbitmq
를 선택하였습니다.
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
공식홈페이지에서 확인한 이미지 입니다.
아래 사진과 같이 필요한 데이터별로 폴더를 생성하였습니다.
.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=
docker-compose up -d
로 실행하였습니다.
설치하는 모습 확인
rabbitmq 사이트에 접속을 해보도록 하겠습니다.
rabbitmq 를 실행하는 과정에서 오류가 발생하였습니다.
해당 부분을 보니 볼륨으로 처리된 폴더에서 어떠한 일이 일어난 것 같습니다.
해당 볼륨 부분을 제거하고 실행하니 정상적으로 되었습니다.
그래서 권한 문제라고 파악을 하고 ( 사실 에러에도 보면 권한 문제인 것을 확인할 수 있습니다. ) 해당 폴더의 권한을 주었습니다.
chmod 777 logs
그 결과 정상적으로 실행되는 것을 확인할 수 있습니다.
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:
이제 재대로 실행이 됩니다!