본문 바로가기

리눅스

[draft] 우분투에서 RabbitMQ를 설치하고 테스트하는 방법

728x90

우분투 22.04에서 RabbitMQ를 설치하고 테스트하는 방법

테스트 환경

$ lsb_release -d
Description:	Ubuntu 22.04.2 LTS

1. RabbitMQ 설치

RabbitMQ는 공식 리포지터리에서 설치할 수 있습니다.

의존 패키지 설치

sudo apt update
sudo apt install -y curl gnupg apt-transport-https

RabbitMQ 및 Erlang 리포지터리 추가

RabbitMQ는 Erlang이 필요하므로 RabbitMQ와 Erlang의 공식 리포지터리를 추가합니다.

 

Team RabbitMQ의 주요 서명 키

curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" \
  | sudo gpg --dearmor \
  | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null

Erlang 리포지토리의 서명 키

curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key \
   | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null

RabbitMQ 리포지토리의 서명 키

curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key \
   | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null

Erlang repository 추가

sudo tee /etc/apt/sources.list.d/erlang.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu $(lsb_release -cs) main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu $(lsb_release -cs) main

# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu $(lsb_release -cs) main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu $(lsb_release -cs) main
EOF

RabbitMQ repository 추가

sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides RabbitMQ
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu $(lsb_release -cs) main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu $(lsb_release -cs) main

# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu $(lsb_release -cs) main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu $(lsb_release -cs) main
EOF

설치 및 확인

sudo apt update
sudo apt install -y erlang-base \
  erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
  erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
  erlang-runtime-tools erlang-snmp erlang-ssl \
  erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
sudo apt install -y rabbitmq-server

rabbitmq-server 버전 정보

sudo rabbitmqctl --version
4.0.5

RabbitMQ 서비스를 시작하고 부팅 시 자동 시작되도록 설정합니다.

sudo systemctl enable --now rabbitmq-server
sudo systemctl status rabbitmq-server

2. RabbitMQ 관리

RabbitMQ는 관리 콘솔을 통해 웹 UI로 관리할 수 있습니다.

관리 플러그인 활성화

sudo rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@node1:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@node1...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

인터페이스 접속

웹 브라우저에서 아래 주소로 접속합니다.

http://<서버IP>:15672

rabbitmq_login

기본 로그인 정보(로컬에서만 로그인이 가능함)

  • Username: guest
  • Password: guest
User can only log in via localhost

3. RabbitMQ 테스트

새로운 사용자 생성

보안 강화를 위해 guest 계정을 사용하지 않고 새 계정을 생성합니다.

sudo rabbitmqctl add_user myuser mypassword
sudo rabbitmqctl set_user_tags myuser administrator
sudo rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*"

새로운 사용자로 웹 브라우저에 로그인합니다.

  • Username: myuser
  • Password: mypassword

메시지 송수신 테스트 (Python 사용)

Python을 사용해 RabbitMQ 송수신을 테스트할 수 있습니다.

 

pika 라이브러리 설치

pip install pika

프로듀서(메시지 전송) 스크립트 작성

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

channel.basic_publish(exchange='', routing_key='hello', body='Hello RabbitMQ!')
print(" [x] Sent 'Hello RabbitMQ!'")
connection.close()

컨슈머(메시지 수신) 스크립트 작성

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
    print(f" [x] Received {body}")

channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

테스트 실행

  • 프로듀서 스크립트를 먼저 실행하여 메시지를 전송하고, 컨슈머 스크립트를 실행하여 메시지를 수신합니다.

4. RabbitMQ 서비스 관리 명령어

서비스 상태 확인

sudo systemctl status rabbitmq-server

서비스 시작/중지/재시작

sudo systemctl start rabbitmq-server
sudo systemctl stop rabbitmq-server
sudo systemctl restart rabbitmq-server

사용자 목록 확인

sudo rabbitmqctl list_users

큐 목록 확인

sudo rabbitmqctl list_queues

 

참고URL

- RabbitMA Release Information : RabbitMQ Releases

- RabbitMA Documentation : Installing RabbitMQ

- RabbitMA Documentation : Apt with Cloudsmith Mirrors: a Quick Start Script

 

728x90