Miscellaneous

Ubuntu에서 RabbitMQ 설치 (apt)

강철지그·2019년 8월 28일·조회 6,842

Ubuntu Linux에서 RabbitMQ를 설치해보자!


1. RabbitMQ 소개

RabbitMQ는 AMQP를 중심으로 동작하는 오픈 소스 메시지 브로커다. Erlang으로 작성되어 있으며, 애플리케이션 사이에서 메시지를 안전하게 전달하기 위한 큐 기반 구조를 제공한다.

Queue의 성격이 강하기 때문에 Kafka처럼 메시지를 장기간 로그로 보관하고 재처리하는 용도보다는, 생산자와 소비자 사이에서 메시지를 라우팅하고 전달하는 데 초점이 맞춰져 있다. 이 점이 메시지를 로그 형태로 저장하고 스트리밍 처리에 많이 사용하는 Kafka와의 큰 차이점이라고 할 수 있다.

RabbitMQ는 기본적으로 AMQP를 지원하며, 플러그인을 통해 MQTT, STOMP, WebSocket 기반 통신이나 HTTP 기반 관리 기능도 사용할 수 있다. 반면 Kafka는 자체 프로토콜을 사용하는 분산 이벤트 스트리밍 플랫폼에 가깝기 때문에, 단순 큐잉이 필요한지 이벤트 로그 기반 처리가 필요한지에 따라 선택 기준이 달라진다.


2. 사전 확인

먼저 현재 시스템에 rabbitmq-server 패키지가 설치되어 있는지 확인한다.

$ apt list --installed rabbitmq-server
Listing... Done

위처럼 패키지명이 출력되지 않으면 아직 설치되지 않은 상태로 볼 수 있다. 설치 전에 패키지 목록을 최신화하려면 다음 명령을 먼저 실행해도 된다.

$ sudo apt update

3. apt를 통한 설치

Ubuntu 기본 패키지 저장소를 사용해 RabbitMQ를 설치한다. RabbitMQ는 Erlang 위에서 동작하므로 설치 과정에서 Erlang 관련 패키지가 함께 설치된다.

$ sudo apt install rabbitmq-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  erlang-asn1 erlang-base erlang-corba erlang-crypto erlang-diameter erlang-edoc erlang-eldap erlang-erl-docgen erlang-eunit erlang-ic erlang-inets erlang-mnesia erlang-nox erlang-odbc erlang-os-mon
  erlang-parsetools erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssh erlang-ssl erlang-syntax-tools erlang-tools erlang-xmerl libltdl7 libodbc1 libpython-stdlib libpython2.7-minimal
  libpython2.7-stdlib libsctp1 python python-minimal python2.7 python2.7-minimal
Suggested packages:
  erlang erlang-manpages erlang-doc xsltproc fop erlang-ic-java libmyodbc odbc-postgresql tdsodbc unixodbc-bin lksctp-tools python-doc python-tk python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  erlang-asn1 erlang-base erlang-corba erlang-crypto erlang-diameter erlang-edoc erlang-eldap erlang-erl-docgen erlang-eunit erlang-ic erlang-inets erlang-mnesia erlang-nox erlang-odbc erlang-os-mon
  erlang-parsetools erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssh erlang-ssl erlang-syntax-tools erlang-tools erlang-xmerl libltdl7 libodbc1 libpython-stdlib libpython2.7-minimal
  libpython2.7-stdlib libsctp1 python python-minimal python2.7 python2.7-minimal rabbitmq-server
0 upgraded, 35 newly installed, 0 to remove and 14 not upgraded.
Need to get 28.5 MB of archives.
After this operation, 57.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 libpython2.7-minimal amd64 2.7.15-4ubuntu4~18.04 [335 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 python2.7-minimal amd64 2.7.15-4ubuntu4~18.04 [1,295 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic/main amd64 python-minimal amd64 2.7.15~rc1-1 [28.1 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 libpython2.7-stdlib amd64 2.7.15-4ubuntu4~18.04 [1,915 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 python2.7 amd64 2.7.15-4ubuntu4~18.04 [239 kB]
Get:6 http://archive.ubuntu.com/ubuntu bionic/main amd64 libpython-stdlib amd64 2.7.15~rc1-1 [7,620 B]
Get:7 http://archive.ubuntu.com/ubuntu bionic/main amd64 python amd64 2.7.15~rc1-1 [140 kB]
Get:8 http://archive.ubuntu.com/ubuntu bionic/main amd64 erlang-base amd64 1:20.2.2+dfsg-1ubuntu2 [7,323 kB]
Get:9 http://archive.ubuntu.com/ubuntu bionic/main amd64 erlang-asn1 amd64 1:20.2.2+dfsg-1ubuntu2 [724 kB]
Get:10 http://archive.ubuntu.com/ubuntu bionic/main amd64 erlang-mnesia amd64 1:20.2.2+dfsg-1ubuntu2 [724 kB]
Get:11 http://archive.ubuntu.com/ubuntu bionic/main amd64 erlang-runtime-tools amd64 1:20.2.2+dfsg-1ubuntu2 [178 kB]
Get:12 http://archive.ubuntu.com/ubuntu bionic/main amd64 erlang-crypto amd64 1:20.2.2+dfsg-1ubuntu2 [104 kB]
Get:13 http://archive.ubuntu.com/ubuntu bionic/main amd64 erlang-public-key amd64 1:20.2.2+dfsg-1ubuntu2 [561 kB]
Adding group `rabbitmq' (GID 114) ...
Done.
Adding system user `rabbitmq' (UID 112) ...
Adding new user `rabbitmq' (UID 112) with group `rabbitmq' ...
Not creating home directory `/var/lib/rabbitmq'.
Created symlink /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service → /lib/systemd/system/rabbitmq-server.service.
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for systemd (237-3ubuntu10.24) ...

4. 설치 확인

설치가 끝나면 RabbitMQ 서비스가 실행 중인지 확인한다. Ubuntu에서는 service 명령을 사용해도 되고, systemd 환경에서는 systemctl status rabbitmq-server로 확인해도 된다.

$ service rabbitmq-server status
● rabbitmq-server.service - RabbitMQ Messaging Server
   Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-08-27 23:49:07 UTC; 6min ago
 Main PID: 3459 (rabbitmq-server)
    Tasks: 86 (limit: 4661)
   CGroup: /system.slice/rabbitmq-server.service
           ├─3459 /bin/sh /usr/sbin/rabbitmq-server
           ├─3472 /bin/sh /usr/lib/rabbitmq/bin/rabbitmq-server
           ├─3634 /usr/lib/erlang/erts-9.2/bin/epmd -daemon
           ├─3734 /usr/lib/erlang/erts-9.2/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K true -B i -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/r
           ├─3855 erl_child_setup 65536
           ├─3915 inet_gethost 4
           └─3916 inet_gethost 4

Aug 27 23:49:00 buntu103 systemd[1]: Starting RabbitMQ Messaging Server...
Aug 27 23:49:03 buntu103 rabbitmq[3460]: Waiting for rabbit@buntu103
Aug 27 23:49:03 buntu103 rabbitmq[3460]: pid is 3472
Aug 27 23:49:07 buntu103 systemd[1]: Started RabbitMQ Messaging Server.

Active: active (running)으로 표시되면 정상적으로 실행 중인 상태다.


5. 관리 기능 활성화

웹 기반 관리 화면을 사용하려면 rabbitmq_management 플러그인을 활성화한다.

$ sudo rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@jinsbuntu... started 6 plugins.

관리 기능을 추가하면 기본적으로 15672 포트가 열린다. 브라우저에서는 http://서버IP:15672 형태로 접속할 수 있다.

$ netstat -an | grep 15672
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN

기본 guest 계정은 보안 정책상 일반적으로 로컬호스트 접속에만 사용할 수 있다. 원격에서 관리 화면에 접속해야 한다면 별도의 사용자를 생성하고 권한을 부여한 뒤 사용하는 것이 좋다.

$ sudo rabbitmqctl add_user 사용자명 비밀번호
$ sudo rabbitmqctl set_user_tags 사용자명 administrator
$ sudo rabbitmqctl set_permissions -p / 사용자명 ".*" ".*" ".*"

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.