웹사이트 검색

Ubuntu 22.04에 RabbitMQ 클러스터를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

이 페이지에서

  1. 전제 조건
  2. 기계 준비
  3. RabbitMQ 서버 설치
  4. RabbitMQ 관리 플러그인 활성화\n
  5. UFW 방화벽 설정\n
  6. RabbitMQ 클러스터 설정
  7. RabbitMQ 관리자 설정
  8. 클래식 대기열 미러링 설정
  9. 관리 플러그인을 통해 RabbitMQ 클러스터에 액세스\n
  10. 결론

RabbitMQ는 무료 오픈 소스 메시지 브로커입니다. 여러 메시지 프로토콜을 지원하는 RabbitMQ는 인터넷에서 가장 널리 사용되는 메시지 브로커입니다. AMQP, STOMP, MQTT, HTTP 및 WebSockets와 같은 프로토콜과 RabbitMQ Stream을 지원합니다.

RabbitMQ는 JMS 1.1 표준을 완벽하게 준수하며 소규모에서 대규모 배포 환경에 이르기까지 다양한 개발 시나리오에 적합합니다.

메시지 브로커로서 RabbitMQ는 애플리케이션 사이에 위치하여 서로 비동기식으로 안정적이고 편리하게 통신할 수 있도록 합니다. RabbitMQ는 애플리케이션 간에 임시 스토리지를 제공하고 데이터 손실을 방지합니다.

이 튜토리얼에서는 여러 Ubuntu 22.04 시스템 간에 RabbitMQ 서버를 설치하고 설정합니다. 또한 RabbitMQ에 대한 관리자 사용자를 설정하고 HA 정책을 통해 클래식 대기열 미러링을 설정하는 방법도 배웁니다.

전제 조건

이 가이드를 완료하려면 다음 요구 사항이 필요합니다.

  • 둘 이상의 Ubuntu 22.04 서버 - 이 예에서는 rabbitmq1, rabbitmq2rabbitmq3의 세 가지 Ubuntu 시스템을 사용합니다.\n
  • sudo/root 관리자 권한이 있는 루트가 아닌 사용자.\n

기계 준비

시작하기 전에 시스템 리포지토리를 업데이트하고 새로 고칩니다. 그런 다음 서버가 시스템 호스트 이름을 통해 연결할 수 있도록 각 서버에서 /etc/hosts 파일을 설정합니다.

아래의 apt 명령을 통해 Ubuntu 패키지 저장소를 업데이트하고 새로 고칩니다.

sudo apt update

다음으로 아래의 nano 편집기 명령을 통해 /etc/hosts 파일을 편집합니다.

sudo nano /etc/hosts

다음 구성을 추가하고 각 IP 주소와 호스트 이름을 현재 환경 세부 정보로 변경해야 합니다.

192.168.5.21    rabbitmq1
192.168.5.22    rabbitmq2
192.168.5.23    rabbitmq3

파일을 저장하고 완료되면 편집기를 종료하십시오. 모든 Ubuntu 서버가 준비되면 RabbitMQ를 설치하고 클러스터를 설정합니다.

RabbitMQ 서버 설치

Ubuntu 머신을 준비하고 나면 이제 모든 대상 머신에 RabbitMQ 서버를 설치할 준비가 된 것입니다. 기본 Ubuntu 22.04 리포지토리는 APT를 통해 쉽게 설치할 수 있는 안정적인 최신 버전의 RabbitMQ를 제공합니다.

아래의 apt 명령을 실행하여 우분투 패키지 인덱스를 업데이트하고 새로 고칩니다.

아래의 apt 명령을 통해 RabbitMQ를 설치합니다.

sudo apt install rabbitmq-server

확인 메시지가 표시되면 y를 입력하여 확인하고 ENTER를 눌러 계속 진행합니다.

RabbitMQ가 설치된 후 다음 systemctl 명령을 실행하여 RabbitMQ 서비스를 확인하고 서비스가 활성화되어 실행 중인지 확인합니다.

sudo systemctl is-enabled rabbitmq-server
sudo systemctl status rabbitmq-server

출력 - RabbitMQ가 실행 중이고 활성화되어 있음을 알 수 있습니다. RabbitMQ는 부팅 시 자동으로 실행됩니다.

이제 RabbitMQ 서버가 설치되었으므로 다음으로 RabbitMQ 플러그인 rabbitmq_management을 활성화합니다.

RabbitMQ 관리 플러그인 활성화

RabbitMQ는 웹 브라우저를 통해 RabbitMQ 노드 및 클러스터를 관리하고 모니터링할 수 있는 관리 플러그인을 제공합니다. rabbitmq_management 플러그인은 명령줄 도구 rabbitmqadmin과 유사한 기능을 가진 HTTP 기반 API입니다.

RabbitMQ 클러스터 구성을 시작하기 전에 대상 시스템에서 rabbitmq_management 플러그인을 활성화합니다.

다음 rabbitmq-plugins 명령을 사용하여 RabbitMQ 플러그인 rabbitmq_management를 활성화합니다. 다음 명령은 또한 rabbitmq_management에 필요한 플러그인을 활성화합니다.

sudo rabbitmq-plugins enable rabbitmq_management

그런 다음 RabbitMQ 서비스를 다시 시작하여 새 변경 사항을 적용하면 rabbitmq_management 플러그인이 활성화됩니다.

sudo systemctl restart rabbitmq-server

이제 기본 rabbitmq_management 플러그인이 기본 포트 15672에서 실행됩니다. 다음 ss 명령을 실행하여 rabbitmq_management 포트 15672가 열려 있는지 확인하십시오.

ss -plnt

출력 - rabbitmq_management 포트가 활성화되고 열려 있습니다.

UFW 방화벽 설정

RabbitMQ 관리 플러그인을 활성화하도록 구성한 후 모든 시스템에서 UFW 방화벽을 설정합니다. 기본 Ubuntu 설치에는 UFW 패키지가 설치되어 있으므로 UFW 방화벽 프로세스를 쉽게 시작하고 활성화할 수 있습니다.

다음 ufw 명령을 실행하여 OpenSSH 서비스를 추가하고 ufw 방화벽을 활성화합니다.

sudo ufw allow OpenSSH
sudo ufw enable

확인 메시지가 표시되면 y를 입력하여 확인하고 ENTER를 눌러 계속 진행합니다. 이제 ufw 방화벽이 실행되고 활성화되어 있어야 합니다.

다음으로 다음 ufw 명령을 통해 RabbitMQ 클러스터에 대한 일부 TCP 포트를 엽니다. 그런 다음 ufw 방화벽을 다시 로드하여 새 변경 사항을 적용합니다.

sudo ufw allow 15672/tcp
sudo ufw allow 5672/tcp
sudo ufw allow 4369/tcp
sudo ufw allow 25672/tcp
sudo ufw reload

마지막으로 다음 ufw 명령을 실행하여 RabbitMQ 포트가 ufw 방화벽에 추가되었는지 확인합니다.

sudo ufw status

출력 - ufw 방화벽에 추가된 RabbitMQ 클러스터에 사용될 일부 포트.

RabbitMQ 클러스터 설정

rabbitmq_management 플러그인을 활성화하고 ufw 방화벽을 구성한 후 이제 rabbitmqctl 명령을 통해 RabbitMQ 클러스터 생성 및 구성을 시작합니다.

모든 RabbitMQ 설치에는 /var/lib/rabbitmq 디렉토리에서 사용할 수 있는 .erlangcooke 파일이 있습니다. 클러스터를 설정하려면 클러스터의 모든 노드에 동일한 .erlang.cookie 파일이 있는지 확인해야 합니다.

이 예에서는 rabbitmq1이 첫 번째 초기 클러스터로 사용되므로 .erlang.cookie 파일을 두 에 복사/전송해야 합니다. rabbitmq2rabbitmq3 서버.

rabbitmq1 서버에서 다음 명령을 실행하여 .erlang.cookie 파일을 확인하고 파일이 사용 가능한지 확인하십시오.

ls -lah /var/lib/rabbitmq/

다음으로 .erlang.cookie 파일을 rabbitmq2rabbitmq3 서버 모두에 복사/전송합니다. 이 예에서는 SCP 명령을 사용하여 .erlang.cookie 파일을 서버 192.168.5.22192.168.5.23에 복사합니다.

scp /var/lib/rabbitmq/.erlang.cookie :/var/lib/rabbitmq/

.erlang.cookie 파일을 복사/전송한 후 작업 서버 세션을 rabbitmq2rabbitmq3으로 이동합니다.

rabbitmq2rabbitmq3 모두에서 다음 명령을 실행하여 RabbitMQ 서비스를 다시 시작하고 새 변경 사항을 적용합니다. 그런 다음 RabbitMQ 애플리케이션을 중지하십시오.

sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app

아래는 rabbitmq2 서버의 출력입니다.

아래는 rabbitmq3 서버의 출력입니다.

그런 다음 다음 명령을 통해 rabbitmq2rabbitmq3 서버를 RabbitMQ 클러스터에 추가합니다. 그런 다음 RabbitMQ 애플리케이션을 시작합니다.

sudo rabbitmqctl join_cluster 
sudo rabbitmqctl start_app

아래는 rabbitmq2가 RabbitMQ 클러스터에 합류하고 RabbitMQ 애플리케이션을 시작할 때의 출력입니다.

아래는 rabbitmq3이 RabbitMQ 클러스터에 합류하고 RabbitMQ 애플리케이션을 시작할 때의 출력입니다.

마지막으로 rabbitmq1 서버로 돌아가서 다음 명령을 실행하여 RabbitMQ 클러스터의 상태를 확인합니다.

sudo rabbitmqctl cluster_status

그러면 RabbitMQ 클러스터가 세 개의 노드 rabbitmq1, rabbitmq2rabbitmq3로 생성된 것을 볼 수 있습니다. 또한 각 노드에서 RabbitMQ의 현재 버전과 클러스터 전체에서 노드의 유지 관리 상태를 볼 수 있습니다.

RabbitMQ 관리자 설정

RabbitMQ 클러스터가 생성되었으므로 이제 RabbitMQ 서버를 관리하기 위한 기본 명령줄인 rabbitmqctl을 통해 RabbitMQ 서버에 대한 새 관리자 사용자를 생성하고 설정합니다.

새 RabbitMQ 사용자를 추가하려면 다음 명령을 실행하십시오. 이 예제는 사용자 alice를 RbbitMQ에 추가합니다. 또한 새 비밀번호로 변경해야 합니다.

sudo rabbitmqctl add_user alice password

다음으로 아래 명령은 새 사용자 alice를 RabbitMQ 클러스터의 관리자로 만듭니다.

sudo rabbitmqctl set_user_tags alice administrator

RabbitMQ 클러스터 내부의 모든 엔터티에 대한 사용자 alice의 권한을 설정합니다.

sudo rabbitmqctl set_permissions -p / alice ".*" ".*" ".*"

이제 아래 명령을 실행하여 RabbitMQ 설치에서 기본 사용자 게스트를 삭제하십시오.

sudo rabbitmqctl delete_user guest

RabbitMQ에서 사용 가능한 사용자 목록을 확인합니다. 그러면 새 사용자 alice가 생성되고 RabbitMQ 서버의 관리자로 사용할 수 있는 것을 볼 수 있습니다.

sudo rabbitmqctl list_users

이 시점에서 RabbitMQ 클러스터의 설치 및 구성을 완료하고 RabbitMQ에 대한 관리자를 구성했습니다. 다음으로 RabbitMQ 정책을 통해 클래식 대기열 미러링을 설정합니다.

클래식 대기열 미러링 설정

RabbitMQ는 미러링 대기열을 설정하는 두 가지 방법을 제공합니다. RabbitMQ 정책을 통해 클래식 대기열 미러링을 사용하거나 쿼럼 대기열을 사용하여 설정할 수 있습니다.

이 예에서는 RabbitMQ 정책을 통해 대기열 미러링을 설정하는 방법을 배웁니다.

다음 명령을 실행하여 새 정책 ha-all을 만듭니다. 이 정책은 모든 대기열이 RabbitMQ 클러스터의 노드 간에 미러링되도록 허용합니다.

sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'

이제 클러스터 전체에서 미러링할 대기열을 지정하려는 경우입니다. 이 예에서는 이름이 two인 대기열을 미러링하는 새 정책 ha-two-을 생성합니다.

sudo rabbitmqctl set_policy ha-two "^two\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

마지막으로 RabbitMQ 클러스터의 특정 노드에 미러링할 대기열을 설정할 수 있는 새 정책을 생성할 수도 있습니다. 이 예에서는 이름이 nodes인 대기열을 미러링하는 새 정책 ha-nodes를 생성합니다. 특정 노드 rabbitmq2rabbitmq3에.

sudo rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":[""]}'

다음 명령을 통해 RabbitMQ 클러스터의 정책 목록을 확인합니다. 그러면 ha-all, ha-twoha-nodes 정책이 RabbitMQ 클러스터에서 사용 가능한 것을 볼 수 있습니다.

sudo rabbitmqctl list_policies

관리 플러그인을 통해 RabbitMQ 클러스터에 액세스

웹 브라우저를 열고 서버 IP 주소와 기본 RabbitMQ 포트 15672(예: http://192.168.5.21)를 차례로 방문합니다. 그러면 RabbitMQ 로그인 페이지가 나타납니다.

생성한 새 사용자와 비밀번호로 로그인하고 로그인을 클릭합니다.

이제 rabbitmq_management 플러그인에서 제공하는 RabbitMQ 관리 대시보드가 표시되어야 합니다.

그런 다음 관리 탭을 클릭하고 정책을 클릭하여 생성한 RabbitMQ 정책을 사용할 수 있는지 확인합니다.

아래 스크린샷에서 ha-all, ha-twoha-nodes의 세 가지 정책을 볼 수 있습니다.

결론

축하합니다! 이제 RabbitMQ 서버를 설치하고 3개의 Ubuntu 22.04 서버로 RabbitMQ 클러스터를 구성했습니다. 또한 RabbitMQ 배포 보안을 위해 UFW 방화벽을 구성하고 RabbitMQ에 대한 관리자 사용자를 구성했으며 RabbitMQ 정책을 통해 RabbitMQ 클러스터에서 클래식 대기열 미러링을 생성했습니다.

이를 통해 이제 애플리케이션 및 인프라를 위한 메시지 브로커로 RabbitMQ를 사용할 수 있습니다. 그러나 쿼럼 대기열, TLS를 통한 RabbitMQ 보안 등과 같은 설정을 통해 RabbitMQ 배포를 다음 수준으로 가져올 수도 있습니다.