사용하기 전에
Q. RabbitMQ 상품은 무엇인가요?
- 메시지 시스템을 구성할 수 있는 AMQP 0-9-1 기반의 오픈소스 메시지 브로커인 RabbitMQ가 설치된 서버를 제공하는 상품입니다.
- RabbitMQ는 메시지 브로커로서 메시지 큐들을 관리하며, 서로 다른 시스템 혹은 컴포넌트 간에 효율적으로 메시지를 교환할 수 있는 다양한 기능을 제공합니다.
- RabbitMQ는 컴포넌트 간의 메시지 전달을 위한 브로커 역할을 수행하며 이를 통해 시스템에 높은 신뢰성을 제공할 수 있습니다. 또한 컴포넌트 간 느슨한 연결을 가능하게 하여 시스템의 손쉬운 확장을 가능하게 합니다.
- 초기 설정을 위한 Bash Script를 제공하여 RabbitMQ 서버 기동 및 Management UI Plugin을 쉽게 활용하실 수 있습니다.
- "RabbitMQ"는 Pivotal에서 개발한 오픈 소스 메시지 브로커 소프트웨어인 RabbitMQ를 이용하고 있습니다.
Q. RabbitMQ를 사용하면 어떤 이점이 있나요?
- 메시지 브로커로서 서로 다른 컴포넌트 간의 메시지를 효율적으로 주고 받는 데 이용될 수 있으며, 이에 따라 느슨한 연결(loosely coupled) 시스템을 가능하게 합니다. 이를 통해 컴포넌트 간 독립성을 확보하고 시스템을 쉽게 확장할 수 있습니다.
- RabbitMQ를 통해 컴포넌트 간의 메시지 전달, 발행 및 구독 모델, 비동기 처리, 작업 큐 등을 쉽게 구현할 수 있으며, 이를 통해 시스템에 고가용성 및 로드 스파이크 처리, 전체 시스템의 지속적인 실행, Worker들을 이용한 동시성 등의 장점을 가져올 수 있습니다.
- RabbitMQ에는 많은 커뮤니티가 있으며, 이들이 제공하는 클라이언트, 어댑터, 도구들은 보다 편리한 개발을 가능하게 합니다. 다양한 언어로 작성된 클라이언트들을 통해 시스템에 상호운용성을 가져올 수 있습니다.
Q. RabbitMQ 서버는 어떻게 생성하나요?
- 콘솔 > Server > Server 메뉴에서 RabbitMQ 서버 이미지를 선택하여 생성할 수 있습니다.
- 원하는 사양의 서버를 생성하고 필요에 따라 스토리지를 추가합니다.
- 월 요금제와 시간 요금제로 청구되며, 서버를 생성한 후 접속 환경을 설정하여 이용할 수 있습니다.
- RabbitMQ를 이용하기 위해서 공인 IP 주소를 신청하고 ACG 설정에서 5672, 15672(Management UI Plugin 사용 시) 포트를 추가해야 합니다.
- RabbitMQ의 Management UI를 사용하지 않으며, RabbitMQ를 VM 간에서만 이용하는 경우에는 공인 IP 주소 할당 없이 <비공인 IP>:5672 주소를 통해서 사용할 수 있습니다.
- 콘솔에 접속한 후 다음의 단계를 통해 쉽게 서버를 생성할 수 있습니다.
Q. RabbitMQ 접속이 안 됩니다.
- RabbitMQ를 외부 네트워크와 연동하여 사용하기 위해서는 공인 IP 주소를 신청하여 서버에 할당해야 하며, ACG에 5672 포트가 추가되어 있어야 합니다('접속 환경 설정' 참고).
- 비공인 IP 주소를 사용하여 VM 간에 RabbitMQ와 연동하는 경우에는, <비공인 IP>:5672 주소를 통해 접속할 수 있습니다.
- RabbitMQ의 Management UI Plugin은 Web 대시보드를 통해 관리할 수 있는 도구를 제공합니다. 이를 위해서는 ACG에 15672 포트가 추가되어 있어야 하며 공인 IP 주소를 할당받아 서버에 부여해야 합니다.
- RabbitMQ의 Management UI Plugin의 주소는 http://<공인IP주소>:15672/입니다. 접속되지 않는다면 ACG가 추가되어 있는지 확인하거나, 터미널에서 Management UI가 실행되어 있는지를 확인합니다.
- 공인 IP 주소와 ACG를 확인한 후에도 접속되지 않는 경우 RabbitMQ 프로세스가 정지된 상태일 수 있으니, 터미널에서 재시작 명령어를 실행하여 프로세스를 다시 시작하십시오. ('RabbitMQ 프로세스 관리' 참고).
Q. RabbitMQ Management UI 화면에서 필요한 Administrator user 및 password는 어디에서 찾을 수 있나요?
- RabbitMQ의 초기 설정은 ID(user): admin, Password: <호스트 이름>입니다. 터미널 혹은 Management UI를 이용하여 초기 유저 설정을 제거 후 새로운 user와 password를 생성하여 사용할 것을 권장합니다.
- 터미널에서 사용자 삭제 및 추가를 위한 Bash script를 제공합니다. user "admin"를 삭제 후, 새로운 user를 생성하여 사용할 것을 권장합니다.
Q. RabbitMQ 어느 디렉터리에 설치되나요?
/usr/lib/rabbitmq
디렉터리입니다.
Q. RabbitMQ에서 생성된 로그는 어디서 확인할 수 있나요?
- RabbitMQ에서 생성된 로그는
/var/log/rabbitmq
에서 찾을 수 있습니다.
Q. RabbitMQ 프로세스를 시작하려면 어떻게 해야 하나요?
- 일반적인 실행 방법
- RabbitMQ 서버를 시작하기 위해서, 터미널에서 다음과 같이 입력합니다.
$ systemctl start rabbitmq-server
- RabbitMQ 서버를 시작하기 위해서, 터미널에서 다음과 같이 입력합니다.
Q. RabbitMQ 설치 후 새로운 사용자를 등록하려면 어떻게 해야 하나요?
- RabbitMQ 새로운 사용자를 등록하는 방법은 다음과 같습니다.
- 서버 접속
- (필요 시) 사용자 삭제
$ /bin/bash /opt/rabbitmq/rabbitmq-delete-user.sh type your username to delete: admin # output message Deleting user "admin"
- 새로운 user 추가 및 password 설정
$ /bin/bash /opt/rabbitmq/rabbitmq-add-user.sh type your username: myuser type your password: mypass # output messages Creating user "myuser" Setting tags for user "myuser" to [administrator] Setting permissions for user "myuser" in vhost "/"
Q. RabbitMQ 설치 후 Password를 변경하려면 어떻게 해야 하나요?
- RabbitMQ의 password를 변경하는 방법은 다음과 같습니다.
- 서버 접속
- 다음의 commands를 실행
$ rabbitmqctl change_password <username> <newpassword>
RabbitMQ 상품 소개
RabbitMQ는 AMQP 0-9-1 기반의 오픈소스 메시지 브로커로서, 메시지 큐 관리 및 Producer로부터 메시지를 수신하여 Consumer에게 라우트해주는 역할을 수행합니다. 이러한 기능은 서로 다른 컴포넌트 간의 메시지를 주고 받는 데 활용하거나, 작업에 대한 비동기 처리, 부하 분산, 데이터 손실 방지 등의 목적에 이용될 수 있습니다.
해당 상품은 RabbitMQ에 대한 설치형 이미지와 설정을 위한 가이드 및 Bash Script를 제공하여 손쉬운 시스템 구축을 지원합니다.
RabbitMQ 서버 생성
RabbitMQ 서버 생성 과정은 아래와 같습니다.
Step 1. 콘솔 접속
콘솔에 접속해서 Server 메뉴를 선택합니다.
① 서버를 생성하려면 서버 생성 버튼을 클릭합니다.
Step 2. 서버 이미지 선택
RabbitMQ 서버 이미지를 선택해서 서버를 생성합니다.
① Application > RabbitMQ 을 선택합니다.
② 다음 버튼을 클릭합니다.
③ 팝업 창의 안내(RabbitMQ 사용을 위한 공인 IP 주소와 ACG 신청, 초기 비밀번호 확인)를 확인합니다.
④ 확인 버튼을 클릭하여 팝업 창을 닫습니다.
Step 3. 서버 설정
스토리지 종류, 서버 타입, 요금제, Zone을 선택하고, 서버 이름을 입력합니다.
① Zone을 선택합니다.
- 현재 제공하는 Zone은 ‘KR-1’, ‘KR-2’가 있습니다.
② 부팅 스토리지로 사용할 스토리지 종류를 선택합니다.
③ 원하는 서버 타입을 선택합니다.
- 일부 서버 스펙은 부팅 디스크 타입에 따라 지원되지 않을 수 있습니다.
- 사용하는 목적에 따라 Compact, Standard 서버 타입 중 하나를 선택하세요.
④ 요금제는 월요금제 또는 시간 요금제 중 선택할 수 있습니다.
⑤ 서버 이름을 입력합니다.
- 고객이 서버를 구별하기 위한 명칭으로, 중복해서 사용할 수 없습니다.
⑥ 입력하신 서버 이름으로 hostname을 설정하도록 체크합니다. 이 호스트 이름은 RabbitMQ 초기 기본 비밀번호로 사용됩니다.
⑦ 다음 버튼을 클릭합니다.
Step 4. 인증키 설정
보유하고 있는 인증키가 있는 경우 ‘보유하고 있는 인증키 이용’을 선택하고, 없는 경우 아래의 절차대로 새로운 인증키를 생성합니다.
① 새로운 인증키 생성을 선택합니다.
② 인증키 이름을 입력합니다.
③ 인증키 생성 및 저장 버튼을 클릭하여 로컬 PC에 인증키 파일을 저장합니다.
- 새로운 인증키를 발급받습니다.
- 저장 후 인증키는 고객의 PC 안전한 위치에 보관해 주십시오.
- 인증키는 최초의 관리자 비밀번호를 가져올 때 이용됩니다.
④ 다음 버튼을 클릭합니다.
Step 5. 방화벽 설정
보유하고 있는 ACG를 이용하거나 신규 ACG를 생성하여 방화벽을 설정할 수 있습니다.
먼저, 보유하고 있는 ACG를 이용하여 방화벽을 설정하는 경우입니다.
① ACG는 필수로 선택해야 하며, 기본으로 제공하는 ‘ncloud-default-acg’를 포함하여 보유하고 있는 ACG 중에서 하나를 선택합니다.
- 보유하고 있는 ACG는 최대 5개까지 선택할 수 있습니다.
- 필수로 ACG를 선택해야 다음 버튼이 활성화되어 설정을 진행할 수 있습니다.
② 보유하고 있는 ACG 외에 신규 ACG를 생성하여 설정하고 싶다면, 신규 ACG 생성을 선택합니다.
③ 다음 버튼을 클릭합니다.
새로 ACG를 생성하여 방화벽을 설정하는 방법은 다음과 같습니다.
① 신규 ACG 생성에서 ACG 생성 버튼을 클릭합니다.
② ACG 이름을 입력합니다.
③ ACG 설정에서 프로토콜, 접근 소스, 허용 포트를 입력하고 생성합니다.
- 프로토콜: TCP, UDP, ICMP에서 선택
- 접근 소스: IP 주소 또는 ACG명 입력
허용 포트: 단일 포트 또는 범위 지정
터미널 접속을 위해서는 접속하려는 서버의 ACG에 SSH 'TCP/22'에 대한 규칙이 설정되어 있어야 하고, RabbitMQ 사용을 위해서는 'TCP/5672', 'TCP/15672' 규칙이 추가로 설정되어 있어야 합니다.
- 규칙을 추가하려면 프로토콜, 접근 소스, 허용 포트를 기재하고 추가 버튼을 클릭합니다.
④ 22와 5672, 15672 포트가 모두 추가된 경우 생성 버튼을 클릭합니다.
주의 사항
RabbitMQ Management Plugin은 15672포트에서 동작하며, HTTP-base API와 RabbitMQ 서버에 대한 모니터링 그리고 이에 기반한 Web UI를 제공합니다.
아이디 패스워드가 노출된 경우 Web UI 상에서 메시지 탈취 및 권한 제어 등이 가능하므로, ACG에서 접근 소스를 가급적 관리자가 사용하는 소스 IP를 사용하는 것을 권장합니다.
Step 6. 최종 확인
설정한 내용을 최종 확인합니다.
① 서버 이미지, 서버, 인증키, ACG가 정상적으로 설정되었는지 확인합니다.
② 최종 확인 후에는 서버 생성 버튼을 클릭합니다.
- 서버가 생성되기까지는 수 분에서 수십 분이 소요됩니다.
서버 목록에서 확인
생성한 서버를 리스트에서 확인합니다.
① 생성한 서버가 목록에 표시됩니다.
② 서버가 생성되고 패키지가 설치 완료되어 서버 상태가 운영중이 될 때까지 대기합니다.
접속 환경 설정
비공인 IP 주소에서 사용하는 경우
다른 VM 인스턴스에서 생성한 RabbitMQ 인스턴스에 접근하기 위해서 비공인 IP 주소를 이용할 수 있습니다.
① 콘솔에 접속해서 Server 메뉴를 선택합니다.
② 생성된 RabbitMQ 인스턴스를 클릭합니다.
③ 상세 정보에서 비공인 IP 주소를 확인합니다. 해당 비공인 IP 주소를 RabbitMQ 클라이언트 설정의 Host로 사용합니다.
공인 IP 주소 사용 신청
RabbitMQ에 공인 IP 주소를 부여하여 사용할 수 있습니다. VM 인스턴스 간의 메시지 전달만이 필요한 경우 공인 IP 주소를 부여하지 않고, 비공인 IP 주소로 RabbitMQ를 이용해도 무방합니다.
그러나 RabbitMQ Management UI Plugin을 통해 웹 대시보드로 관리하는 기능이 필요하다면, 반드시 공인 IP 주소를 이용해서 접속해야 하며 공인 IP 주소 사용에 대한 요금이 별도로 부과됩니다.
① 좌측 메뉴에서 Public IP 메뉴를 선택합니다.
② 공인 IP를 할당 받으려면 공인 IP 신청 버튼을 클릭합니다.
③ 적용 서버 선택에서 공인 IP 주소를 할당할 RabbitMQ 서버를 선택합니다.
④ 다음 버튼을 클릭합니다.
⑤ 적용 서버 이름을 확인하고 다시 생성 버튼을 클릭합니다.
포트 포워딩 설정
터미널 프로그램(Putty 등)으로 서버에 접속하려면 포트 포워딩을 설정해야 합니다.
① 좌측 메뉴에서 Server 메뉴를 선택합니다.
② 서버에 접속하려면 포트 포워딩 설정을 클릭합니다.
③ 포트 포워딩 설정 화면에서 외부 포트 번호를 설정합니다. 외부 포트 번호의 입력 범위는 1024~65,534로, 서버 접속을 위한 기능 외에 서비스 용도로 사용할 수 없습니다.
(내부 포트 번호는 22로 정해져 있습니다.)
④ 추가 버튼을 클릭하면 설정 내역이 하단에 추가되며 수정, 삭제 버튼을 클릭하여 설정 내역을 수정, 삭제할 수 있습니다.
⑤ 적용 버튼을 클릭하면 설정한 외부 포트로 터미널 프로그램을 이용하여 SSH 접속을 할 수 있습니다.
ACG 설정
ACG에 터미널 접속 SSH('TCP/22') 및 RabbitMQ('TCP/5672', 'TCP/15672') 규칙을 추가합니다.
서버 생성 시 규칙을 이미 추가한 경우는 이 단계의 ACG 설정 작업을 수행할 필요가 없습니다.
① 좌측 메뉴에서 ACG 메뉴를 선택합니다.
② 서버 생성 시 선택한 ACG를 선택하고 상단의 ACG 생성 버튼을 클릭합니다.
③ ACG 이름을 입력합니다.
④ 설정이 완료되면 생성 버튼을 클릭합니다.
① 생성한 ACG를 선택합니다.
② 상단 ACG 설정 버튼을 클릭합니다.
③ ACG 규칙 설정에서 프로토콜, 접근 소스, 허용 포트를 입력하고 생성합니다.
- 프로토콜: TCP, UDP, ICMP에서 선택
- 접근 소스: IP 주소 또는 ACG명 입력
허용 포트: 단일 포트 또는 범위 지정
터미널 접속을 위해서는 접속하려는 서버의 ACG에 SSH 'TCP/22'에 대한 규칙이 설정되어 있어야 하고, RabbitMQ를 사용하려면 'TCP/5672'와 'TCP/15672' 규칙이 추가로 설정되어 있어야 합니다.
규칙을 추가하려면 프로토콜, 접근 소스, 허용 포트를 기재하고 추가를 클릭합니다.
④ 설정이 완료되면 적용 버튼을 클릭합니다.
서버 관리자 비밀번호 확인
터미널 프로그램(Putty 등)으로 서버에 접속하려면 관리자 비밀번호를 알아야 합니다.
① 좌측 메뉴에서 Server 메뉴를 선택합니다.
② 해당 서버를 선택하고, 서버 관리 및 설정 변경에서 관리자 비밀번호 확인을 선택합니다.
③ Drop files here or click to upload 버튼을 클릭해 서버 생성 시 개인 PC에 저장한 인증키 파일(.pem)을 첨부합니다.
④ 첨부 후 비밀번호 확인 버튼을 클릭하면 터미널 프로그램으로 최초 서버 접속 시 사용할 비밀번호를 얻을 수 있습니다.
- 서버에 접속 후 관리자가 기억할 수 있는 비밀번호로 변경하여 사용하는 것을 권장합니다.
터미널 접속
터미널 프로그램(Putty 등)으로 서버에 접속해서 RabbitMQ 프로세스를 관리할 수 있습니다.
터미널 프로그램으로 서버 접속
① 터미널 프로그램(Putty 등)을 실행합니다.
② 서버 리스트 또는 내용 보기에서 확인한 '서버 접속용 공인 IP'와 '외부 포트'의 값을 입력하고 Open 버튼을 클릭하면 서버에 접속됩니다.
- 서버 접속용 공인 IP 확인: 콘솔 > 서버 > 서버 리스트에서 서버 선택 후 내용보기에서 포트 포워딩 정보의 ‘서버 접속용 공인 IP’
- 외부 포트 번호 확인: 콘솔 > 서버 > 서버 리스트에서 서버 선택 후 내용보기에서 포트 포워딩 정보의 ‘외부 포트’
③ 사용자 정보 및 암호를 입력하고 로그인합니다.
- login as: root
- password: 위에서 확인한 관리자 비밀번호
④ 로그인 후에는 root 계정의 비밀번호를 기억할 수 있는 비밀번호로 변경할 것을 권장합니다. 'passwd root' 명령어를 입력한 후 새 비밀번호를 입력합니다.
RabbitMQ 프로세스 관리
다음 명령어로 RabbitMQ 프로세스를 관리할 수 있습니다.
RabbitMQ 프로세스 기동
- systemctl를 사용하여 프로세스를 시작하는 경우
shell> systemctl start rabbitmq-server
- systemctl를 사용하여 프로세스를 시작하는 경우
RabbitMQ 프로세스 중지
- systemctl 사용하여 시작한 프로세스를 종류하는 경우
shell> systemctl stop rabbitmq-server
- systemctl 사용하여 시작한 프로세스를 종류하는 경우
RabbitMQ 프로세스 확인
shell> rabbitmqctl status
RabbitMQ Management UI Plugin 시작하기
shell> /bin/bash /opt/rabbitmq/rabbitmq-start-management.sh
연관 정보 바로가기
아래 가이드에서 연관 정보를 확인할 수 있습니다.