RabbitMQ(Massage System)를 구축해 보자.
비용과 UI로 관리가 쉬운 오픈소스 메시지 브로커를 알아보자.
RabbitMQ는 가장 널리 퍼져있는 오픈소스 메시지 브로커 방식입니다. 즉, 메시지 브로커 방식이란, 응용프로그램, 서비스 및 시스템이 정보를 통신하고 교환할 수 있도록 하는 소프트웨어 모듈입니다.
이와 같은 Massage System을 사용하는 이유는, 독립된 애플리케이션을 RabbitMQ라는 메시지 시스템을 통해 실시간으로 데이터를 주고받음으로써,
데이터 교환 엔드포인트를 하나로 통합해 비용이 들지 않으며, 관리가 수월해집니다.
RabbitMQ의 장점을 정리해 보면, 라우팅, 클러스터링, 관리 UI와 가벼운 오픈소스입니다.
RabbitMQ는 kafka와 비슷한 방식이지만, 대용량 데이터를 사용하지 않는다면, 가벼운 RabbitMQ를 사용하는 것이 좋습니다.
RabbitMQ는 서버가 죽는 경우 메모리에 저장돼 있던 메시지들은 모두 사라지지만, MessageDurability라는 옵션으로 디스크에도 저장이 되게 하여, 메시지 손실을 막아줍니다.
(하지만, 디스크에 저장될 때 서버가 죽는 경우 손실을 막을 순 없습니다.
- 따라서, RabbitMQ의 환경 구축을 해보겠습니다.
![](https://erevent.co.kr/230623_itmaya/img/icon.png)
- 구축환경은 아래와 같습니다.
- OS:(VM) Ubuntu22.04 GUI (GDM3)
- CPU:8 core
- RAM:4GB
- (tip) RabbitMQ(Massage System)을 구축하기 전, 손쉬운 모니터링을 위해 GUI를 설치하는 것이 좋습니다.
- 1. 우선 최신버전 설치를 위해, 업데이트를 진행해 줍니다.
- 2. 그 후, rabbitmq를 설치해 줍니다.
- #sudo apt-get install rabbitmq-server
- 3. 재부팅 후에도, 서비스가 동작하도록 하기 위해 아래와 같은 명령어를 입력해 줍니다.
- #sudo systemctl restart rabbitmq-server
- #sudo rabbitmq-plugins enable rabbitmq_management
- 4. 아래 명령어로 플러그인이 켜졌는지 확인이 가능합니다.(그림 참고)
- #sudo rabbitmp-plugins list
- 4. rabbitmq 계정 생성(기본적으로 rabbitmq는 gui모드에서 기본계정이 ID,PW:guest로 생성되지만,
이 계정으로는 외부에서 접속이 불가능 함으로, 계정을 따로 생성해 줍니다.)
#sudo rabbitmqctl add_user (id)(pw)
(예시) sudo rabbitmqctl add_user test test
- #sudo rabbitmqctl set_user_tags (id) administrator
(예시) sudo rabbitmqctl set_user_tags test administrator
- 저는 예시와 같이 #sudo rabbitmqctl add_user test test 로 id,pw 둘다 test계정으로 생성했습니다.
- 5. Rabbitmq는 기본 포트가 5672, GUI는 15672입니다.
저는 GUI로, 아래 그림과 같이 localhost:15672로 접속할 수 있습니다.
- 로그인 후, 아래처럼 웹으로 잘 접속되는 것을 확인할 수 있습니다.
- 그 외, 포트 변경 방법입니다. (아래 그림 참고)
- #sudo vi /etc/rabbitmq/rabbitmq-env.conf
- #NODE_PROT=5672 의 주석을 해제후, 원하는 포트 번호를 적어주세요.
- 아래의 명령어로 rabbitmq를 재시작 해주세요.
- #sudo systemctl restart rabbitmq-server
- Rabbitmq service가 동작하지 않을시.
- 만약, 아래 그림과 같이 Rabbitmq에 (e)라고 적혀있지 않다면 서비스가 실행 중이지 않다는 겁니다.
다시 한번 아래와 같은 명령어를 입력해 주시면 됩니다.
- #sudo systemctl restart rabbitmq-server
- #sudo rabbitmq-plugins enable rabbitmq_manageme
- 아래와 같이 [e]또는 [E]라고 되어있으면 정상적으로 실행 중입니다.