RabbitMQ 사용 가이드
    • PDF

    RabbitMQ 사용 가이드

    • PDF

    Article Summary

    Classic/VPC 환경에서 이용 가능합니다.

    사용하기 전에

    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 주소를 통해서 사용할 수 있습니다.
    • 콘솔에 접속한 후 다음의 단계를 통해 쉽게 서버를 생성할 수 있습니다.

    rabbitmq-1-1-01_ko

    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
        

    Q. RabbitMQ 설치 후 새로운 사용자를 등록하려면 어떻게 해야 하나요?

    • RabbitMQ 새로운 사용자를 등록하는 방법은 다음과 같습니다.
      1. 서버 접속
      2. (필요 시) 사용자 삭제
        $ /bin/bash /opt/rabbitmq/rabbitmq-delete-user.sh
        type your username to delete: admin
        # output message
        Deleting user "admin"
        
      3. 새로운 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를 변경하는 방법은 다음과 같습니다.
      1. 서버 접속
      2. 다음의 commands를 실행
      $ rabbitmqctl change_password <username> <newpassword>
      

    RabbitMQ 소개

    RabbitMQ는 AMQP 0-9-1 기반의 오픈소스 메시지 브로커로서, 메시지 큐 관리 및 Producer로부터 메시지를 수신하여 Consumer에게 라우트해주는 역할을 수행합니다. 이러한 기능은 서로 다른 컴포넌트 간의 메시지를 주고 받는 데 활용하거나, 작업에 대한 비동기 처리, 부하 분산, 데이터 손실 방지 등의 목적에 이용될 수 있습니다.

    해당 서비스는 RabbitMQ에 대한 설치형 이미지와 설정을 위한 가이드 및 Bash Script를 제공하여 손쉬운 시스템 구축을 지원합니다.

    RabbitMQ 서버 생성

    RabbitMQ 서버 생성 과정은 아래와 같습니다.

    Step 1. 콘솔 접속

    콘솔에 접속해서 Server 메뉴를 선택합니다.

    1. 서버를 생성하려면 [서버 생성] 버튼을 클릭해 주십시오.

    Step 2. 서버 이미지 선택

    RabbitMQ 서버 이미지를 선택해서 서버를 생성합니다.

    1. 이미지타입 Application, Application 이미지타입 RabbitMQ를 선택해 주십시오.

    2. [다음] 버튼을 클릭해 주십시오.

    3. 팝업 창의 안내(RabbitMQ 사용을 위한 공인 IP 주소와 ACG 신청, 초기 비밀번호 확인)를 확인해 주십시오.

    4. [확인] 버튼을 클릭하여 팝업 창을 닫해 주십시오.

    Step 3. 서버 설정

    스토리지 종류, 서버 타입, 요금제, Zone을 선택하고, 서버 이름을 입력합니다.

    rabbitmq-1-1-04_ko

    1. Zone을 선택해 주십시오.
    • 현재 제공하는 Zone은 ‘KR-1’, ‘KR-2’가 있습니다.
    1. 부팅 스토리지로 사용할 스토리지 종류를 선택해 주십시오.

    2. 원하는 서버 타입을 선택해 주십시오.

    • 일부 서버 스펙은 부팅 디스크 타입에 따라 지원되지 않을 수 있습니다.
    • 사용하는 목적에 따라 Compact, Standard 서버 타입 중 하나를 선택해 주십시오.
    1. 요금제는 월요금제 또는 시간 요금제 중 선택해 주십시오.

    2. 서버 이름을 입력해 주십시오.

    • 고객이 서버를 구별하기 위한 명칭으로, 중복해서 사용할 수 없습니다.
    1. 입력한 서버 이름으로 hostname을 설정하도록 체크해 주십시오. 이 호스트 이름은 RabbitMQ 초기 기본 비밀번호로 사용됩니다.

    2. [다음] 버튼을 클릭해 주십시오.

    Step 4. 인증키 설정

    보유하고 있는 인증키가 있는 경우 ‘보유하고 있는 인증키 이용’을 선택하고, 없는 경우 아래의 절차대로 새로운 인증키를 생성합니다.

    1. 새로운 인증키 생성을 선택해 주십시오.

    2. 인증키 이름을 입력해 주십시오.

    3. [인증키 생성 및 저장] 버튼을 클릭하여 로컬 PC에 인증키 파일을 저장해 주십시오.

    • 새로운 인증키를 발급받습니다.
    • 저장 후 인증키는 고객의 PC 안전한 위치에 보관해 주십시오.
    • 인증키는 최초의 관리자 비밀번호를 가져올 때 이용됩니다.
    1. [다음] 버튼을 클릭해 주십시오.

    Step 5. 방화벽 설정

    보유하고 있는 ACG를 이용하거나 신규 ACG를 생성하여 방화벽을 설정할 수 있습니다.

    보유하고 있는 ACG 이용

    1. ACG는 필수로 선택해야 하며, 기본으로 제공하는 ‘ncloud-default-acg’를 포함하여 보유하고 있는 ACG 중에서 하나를 선택해 주십시오.
    • 보유하고 있는 ACG는 최대 5개까지 선택할 수 있습니다.
    • 필수로 ACG를 선택해야 [다음] 버튼이 활성화되어 설정을 진행할 수 있습니다.
    1. 보유하고 있는 ACG 외에 신규 ACG를 생성하여 설정하고 싶다면, 신규 ACG 생성을 선택해 주십시오.

    2. [다음] 버튼을 클릭해 주십시오.

    새로운 ACG 생성

    1. 신규 ACG 생성에서 [ACG 생성] 버튼을 클릭해 주십시오.

    2. ACG 이름을 입력해 주십시오.

    3. ACG 설정에서 프로토콜, 접근 소스, 허용 포트를 입력하고 생성해 주십시오.

    • 프로토콜: TCP, UDP, ICMP에서 선택

    • 접근 소스: IP 주소 또는 ACG명 입력

    • 허용 포트: 단일 포트 또는 범위 지정

    • 터미널 접속을 위해서는 접속하려는 서버의 ACG에 SSH 'TCP/22'에 대한 규칙이 설정되어 있어야 하고, RabbitMQ 사용을 위해서는 'TCP/5672', 'TCP/15672' 규칙이 추가로 설정되어 있어야 합니다.

    • 규칙을 추가하려면 프로토콜, 접근 소스, 허용 포트를 기재하고 [추가] 버튼을 클릭해 주십시오.

    1. 22와 5672, 15672 포트가 모두 추가된 경우 [생성] 버튼을 클릭해 주십시오.
    주의

    RabbitMQ Management Plugin은 15672포트에서 동작하며, HTTP-base API와 RabbitMQ 서버에 대한 모니터링 그리고 이에 기반한 Web UI를 제공합니다.
    아이디 패스워드가 노출된 경우 Web UI 상에서 메시지 탈취 및 권한 제어 등이 가능하므로, ACG에서 접근 소스를 가급적 관리자가 사용하는 소스 IP를 사용하는 것을 권장합니다.

    Step 6. 최종 확인

    설정한 내용을 최종 확인합니다.

    1. 서버 이미지, 서버, 인증키, ACG가 정상적으로 설정되었는지 확인해 주십시오.

    2. 최종 확인 후에는 [서버 생성] 버튼을 클릭해 주십시오.

    • 서버가 생성되기까지는 수 분에서 수십 분이 소요됩니다.

    서버 목록에서 확인

    생성한 서버를 리스트에서 확인합니다.

    1. 생성한 서버가 목록에 표시됩니다.

    2. 서버가 생성되고 패키지가 설치 완료되어 서버 상태가 운영중이 될 때까지 대기해 주십시오.

    접속 환경 설정

    비공인 IP 주소에서 사용하는 경우

    다른 VM 인스턴스에서 생성한 RabbitMQ 인스턴스에 접근하기 위해서 비공인 IP 주소를 이용할 수 있습니다.

    1. 콘솔에 접속해서 Server 메뉴를 선택해 주십시오.

    2. 생성된 RabbitMQ 인스턴스를 클릭해 주십시오.

    3. 상세 정보에서 비공인 IP 주소를 확인해 주십시오. 해당 비공인 IP 주소를 RabbitMQ 클라이언트 설정의 Host로 사용해 주십시오.

    공인 IP 주소 사용 신청

    RabbitMQ에 공인 IP 주소를 부여하여 사용할 수 있습니다. VM 인스턴스 간의 메시지 전달만이 필요한 경우 공인 IP 주소를 부여하지 않고, 비공인 IP 주소로 RabbitMQ를 이용해도 무방합니다.

    그러나 RabbitMQ Management UI Plugin을 통해 웹 대시보드로 관리하는 기능이 필요하다면, 반드시 공인 IP 주소를 이용해서 접속해야 하며 공인 IP 주소 사용에 대한 요금이 별도로 부과됩니다.

    1. 좌측 메뉴에서 Server > Public IP 메뉴를 선택해 주십시오.

    2. 공인 IP를 할당 받으려면 [공인 IP 신청] 버튼을 클릭해 주십시오.

    3. 적용 서버 선택에서 공인 IP 주소를 할당할 RabbitMQ 서버를 선택해 주십시오.

    4. [다음] 버튼을 클릭해 주십시오.

    5. 적용 서버 이름을 확인하고 다시 [생성] 버튼을 클릭해 주십시오.

    포트 포워딩 설정

    터미널 프로그램(Putty 등)으로 서버에 접속하려면 포트 포워딩을 설정해야 합니다.

    1. 좌측 메뉴에서 Server > Server 메뉴를 선택해 주십시오.

    2. 서버에 접속하려면 [포트 포워딩 설정] 을 클릭해 주십시오.

    3. 포트 포워딩 설정 화면에서 외부 포트 번호를 설정해 주십시오. 외부 포트 번호의 입력 범위는 1024~65,534로, 서버 접속을 위한 기능 외에 서비스 용도로 사용할 수 없습니다. (내부 포트 번호는 22로 정해져 있습니다.)

    4. [추가] 버튼을 클릭하면 설정 내역이 하단에 추가되며 [수정], [삭제] 버튼을 클릭하여 설정 내역을 수정, 삭제할 수 있습니다.

    5. [적용] 버튼을 클릭하면 설정한 외부 포트로 터미널 프로그램을 이용하여 SSH 접속을 할 수 있습니다.

    ACG 생성

    ACG에 터미널 접속 SSH('TCP/22') 및 RabbitMQ('TCP/5672', 'TCP/15672') 규칙을 추가합니다.
    서버 생성 시 규칙을 이미 추가한 경우는 이 단계의 ACG 설정 작업을 수행할 필요가 없습니다.

    1. 좌측 메뉴에서 Server > ACG 메뉴를 선택해 주십시오.

    2. 서버 생성 시 선택한 ACG를 선택하고 상단의 [ACG 생성] 버튼을 클릭해 주십시오.

    3. ACG 이름을 입력해 주십시오.

    4. 설정이 완료되면 [생성] 버튼을 클릭해 주십시오.

    ACG 설정

    1. 생성한 ACG를 선택해 주십시오.

    2. 상단 [ACG 설정] 버튼을 클릭해 주십시오.

    3. ACG 규칙 설정에서 프로토콜, 접근 소스, 허용 포트를 입력하고 생성해 주십시오.

    • 프로토콜: TCP, UDP, ICMP에서 선택

    • 접근 소스: IP 주소 또는 ACG명 입력

    • 허용 포트: 단일 포트 또는 범위 지정

    • 터미널 접속을 위해서는 접속하려는 서버의 ACG에 SSH 'TCP/22'에 대한 규칙이 설정되어 있어야 하고, RabbitMQ를 사용하려면 'TCP/5672'와 'TCP/15672' 규칙이 추가로 설정되어 있어야 합니다.

    • 규칙을 추가하려면 프로토콜, 접근 소스, 허용 포트를 기재하고 [추가] 를 클릭해 주십시오.

    1. 설정이 완료되면 [적용] 버튼을 클릭해 주십시오.

    서버 관리자 비밀번호 확인

    터미널 프로그램(Putty 등)으로 서버에 접속하려면 관리자 비밀번호를 알아야 합니다.

    1. 좌측 메뉴에서 Server > Server 메뉴를 선택해 주십시오.

    2. 해당 서버를 선택하고, 서버 관리 및 설정 변경에서 관리자 비밀번호 확인을 선택해 주십시오.

    3. [마우스로 파일을 끌고 오거나 여기를 클릭하세요] 버튼을 클릭해 서버 생성 시 개인 PC에 저장한 인증키 파일(.pem)을 첨부해 주십시오.

    4. 첨부 후 [비밀번호 확인] 버튼을 클릭하면 터미널 프로그램으로 최초 서버 접속 시 사용할 비밀번호를 얻을 수 있습니다.

    • 서버에 접속 후 관리자가 기억할 수 있는 비밀번호로 변경하여 사용하는 것을 권장합니다.

    터미널 접속

    터미널 프로그램(Putty 등)으로 서버에 접속해서 RabbitMQ 프로세스를 관리할 수 있습니다.

    터미널 프로그램으로 서버 접속

    rabbitmq-1-1-21_ko

    1. 터미널 프로그램(Putty 등)을 실행해 주십시오.

    2. 서버 리스트 또는 내용 보기에서 확인한 서버 접속용 공인 IP와 외부 포트의 값을 입력하고 Open 버튼을 클릭하면 서버에 접속됩니다.

    • 서버 접속용 공인 IP 확인: 콘솔 > 서버 > 서버 리스트에서 서버 선택 후 내용보기에서 포트 포워딩 정보의 ‘서버 접속용 공인 IP’
    • 외부 포트 번호 확인: 콘솔 > 서버 > 서버 리스트에서 서버 선택 후 내용보기에서 포트 포워딩 정보의 ‘외부 포트’
    1. 사용자 정보 및 암호를 입력하고 로그인해 주십시오.
    • login as: root
    • password: 위에서 확인한 관리자 비밀번호
    1. 로그인 후에는 root 계정의 비밀번호를 기억할 수 있는 비밀번호로 변경할 것을 권장합니다.
      'passwd root' 명령어를 입력한 후 새 비밀번호를 입력합니다.

    RabbitMQ 프로세스 관리

    다음 명령어로 RabbitMQ 프로세스를 관리할 수 있습니다.

    • RabbitMQ 프로세스 기동

      • systemctl를 사용하여 프로세스를 시작하는 경우
      shell> systemctl start rabbitmq-server
      
    • RabbitMQ 프로세스 중지

      • systemctl 사용하여 시작한 프로세스를 종류하는 경우
      shell> systemctl stop rabbitmq-server
      
    • RabbitMQ 프로세스 확인

    shell> rabbitmqctl status
    
    • RabbitMQ Management UI Plugin 시작하기
    shell> /bin/bash /opt/rabbitmq/rabbitmq-start-management.sh
    

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.