Amazon Linux 2에 RabbitMQ 설치하기
.
Data_Engineering_TIL(20201009)
[실습시 참고한 자료]
1) ‘Install RabbitMq on Amamzon EC2 (Amazon Linux 2)’ 블로그 글
** URL : https://dev.to/ashutosh049/install-rabbitmq-on-amamzon-ec2-amazon-linux-2-3dpd
2) ‘[Rabbitmq] 1. 초보를 위한 RabbitMQ 후딱 설치하고 설정하기’ 블로그 글
** URL : http://abh0518.net/tok/?p=384
[실습내용]
-
실습환경은 Amazon Linux 2에서 진행한다.
-
RabbitMq를 설치하기 전에 패키지 디펜턴시를 맞춰줘야 한다.
그래서 RabbitMq를 설치하기 전에 아래 3개의 패키지들이 사용가능하도록 할 것이다.
1) erlang
2) socat
3) logrotate
- EPEL repository를 사용할 수 있도록 설치
일반적인 레포에서는 CentOS, Red Hat Enterprise Linux (RHEL), or Amazon Linux-based distributions 와 같은 운영체제에 설치될 수 있는 모든 패키지들을 제공하지 않기 때문에 EPEL repository를 사용하고자 한다.
그래서 먼저 아래와 같이 EPEL release package for EL 7을 설치하여 EPEL repository를 사용할 수 있도록 해준다.
[ec2-user@ip-10-1-10-188 ~]$ sudo yum update -y
[ec2-user@ip-10-1-10-188 ~]$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Existing lock /var/run/yum.pid: another copy is running as pid 11673.
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 119 M RSS (336 MB VSZ)
Started: Fri Oct 9 06:10:16 2020 - 00:03 ago
State : Running, pid: 11673
epel-release-latest-7.noarch.rpm | 15 kB 00:00:00
Examining /var/tmp/yum-root-XGv900/epel-release-latest-7.noarch.rpm: epel-release-7-12.noarch
Marking /var/tmp/yum-root-XGv900/epel-release-latest-7.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-12 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================
Package Arch Version Repository Size
====================================================================================================================
Installing:
epel-release noarch 7-12 /epel-release-latest-7.noarch 24 k
Transaction Summary
====================================================================================================================
Install 1 Package
Total size: 24 k
Installed size: 24 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : epel-release-7-12.noarch 1/1
Verifying : epel-release-7-12.noarch 1/1
Installed:
epel-release.noarch 0:7-12
Complete!
[ec2-user@ip-10-1-10-188 ~]$ sudo yum-config-manager --enable epel
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
==================================================== repo: epel ====================================================
[epel]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/2
baseurl =
cache = 0
cachedir = /var/cache/yum/x86_64/2/epel
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = True
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/2/epel/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/2/epel/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
hdrdir = /var/cache/yum/x86_64/2/epel/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink = https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=x86_64&infra=$infra&content=$contentdir
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Extra Packages for Enterprise Linux 7 - x86_64
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/2/epel
pkgdir = /var/cache/yum/x86_64/2/epel/packages
priority = 99
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
report_instanceid = False
retries = 7
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 5.0
ui_id = epel/x86_64
ui_repoid_vars = releasever,
basearch
username =
- Erlang 설치
[ec2-user@ip-10-1-10-188 ~]$ sudo yum install erlang --enablerepo=epel -y
- socat 설치
[ec2-user@ip-10-1-10-188 ~]$ sudo yum install -y socat
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
194 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package socat.x86_64 0:1.7.3.2-2.amzn2.0.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================
Package Arch Version Repository Size
====================================================================================================================
Installing:
socat x86_64 1.7.3.2-2.amzn2.0.1 amzn2-core 291 k
Transaction Summary
====================================================================================================================
Install 1 Package
Total download size: 291 k
Installed size: 1.1 M
Downloading packages:
socat-1.7.3.2-2.amzn2.0.1.x86_64.rpm | 291 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : socat-1.7.3.2-2.amzn2.0.1.x86_64 1/1
Verifying : socat-1.7.3.2-2.amzn2.0.1.x86_64 1/1
Installed:
socat.x86_64 0:1.7.3.2-2.amzn2.0.1
Complete!
- logrotate 설치
[ec2-user@ip-10-1-10-188 ~]$ sudo yum install logrotate -y
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
194 packages excluded due to repository priority protections
Package logrotate-3.8.6-15.amzn2.x86_64 already installed and latest version
Nothing to do
- RabbitMq 설치 및 구동
http://www.rabbitmq.com/releases/rabbitmq-server 에서 안정화된 최신버전을 가져올건데 3.6.15 버전으로 설치할 것이다.
[ec2-user@ip-10-1-10-56 ~]$ wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el6.noarch.rpm
--2020-10-09 06:45:03-- https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el6.noarch.rpm
Resolving www.rabbitmq.com (www.rabbitmq.com)... 104.20.11.224, 172.67.16.25, 104.20.10.224, ...
Connecting to www.rabbitmq.com (www.rabbitmq.com)|104.20.11.224|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5075605 (4.8M) [application/x-redhat-package-manager]
Saving to: ‘rabbitmq-server-3.6.15-1.el6.noarch.rpm’
100%[==================================================================================>] 5,075,605 6.69MB/s in 0.7s
2020-10-09 06:45:05 (6.69 MB/s) - ‘rabbitmq-server-3.6.15-1.el6.noarch.rpm’ saved [5075605/5075605]
[ec2-user@ip-10-1-10-56 ~]$ sudo rpm -Uvh rabbitmq-server-3.6.15-1.el6.noarch.rpm
warning: rabbitmq-server-3.6.15-1.el6.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:rabbitmq-server-3.6.15-1.el6 ################################# [100%]
그런 다음에 아래와 같이 RabbitMq 서버와 management 플러그인을 구동한다.
** 참고사항 : Management Plugin 란
“The RabbitMQ management plugin provides an HTTP-based API for management and monitoring of RabbitMQ nodes and clusters, along with a browser-based UI and a command line tool, rabbitmqadmin.”
문구 출처 : https://www.rabbitmq.com/management.html
[ec2-user@ip-10-1-10-40 ~]$ sudo systemctl start rabbitmq-server
[ec2-user@ip-10-1-10-40 ~]$ 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@ip-10-1-10-40... started 6 plugins.
[ec2-user@ip-10-1-10-40 ~]$ sudo systemctl restart rabbitmq-server
[ec2-user@ip-10-1-10-40 ~]$ sudo systemctl status rabbitmq-server
● rabbitmq-server.service - LSB: Enable AMQP service provided by RabbitMQ broker
Loaded: loaded (/etc/rc.d/init.d/rabbitmq-server; bad; vendor preset: disabled)
Active: active (running) since Fri 2020-10-09 07:04:32 UTC; 6s ago
Docs: man:systemd-sysv-generator(8)
Process: 12653 ExecStop=/etc/rc.d/init.d/rabbitmq-server stop (code=exited, status=0/SUCCESS)
Process: 13030 ExecStart=/etc/rc.d/init.d/rabbitmq-server start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/rabbitmq-server.service
├─13254 /bin/sh /etc/rc.d/init.d/rabbitmq-server start
├─13261 /bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; /usr/sbin/rabbitmq-server
└─13265 /bin/sh /usr/sbin/rabbitmq-server
Oct 09 07:04:27 ip-10-1-10-40.ap-northeast-2.compute.internal systemd[1]: Starting LSB: Enable AMQP service provided by......
Oct 09 07:04:27 ip-10-1-10-40.ap-northeast-2.compute.internal su[13122]: (to rabbitmq) root on none
Oct 09 07:04:28 ip-10-1-10-40.ap-northeast-2.compute.internal su[13279]: (to rabbitmq) root on none
Oct 09 07:04:28 ip-10-1-10-40.ap-northeast-2.compute.internal su[13281]: (to rabbitmq) root on none
Oct 09 07:04:32 ip-10-1-10-40.ap-northeast-2.compute.internal rabbitmq-server[13030]: Starting rabbitmq-server: SUCCESS
Oct 09 07:04:32 ip-10-1-10-40.ap-northeast-2.compute.internal rabbitmq-server[13030]: rabbitmq-server.
Oct 09 07:04:32 ip-10-1-10-40.ap-northeast-2.compute.internal systemd[1]: Started LSB: Enable AMQP service provided by ...er.
Hint: Some lines were ellipsized, use -l to show in full.
- RabbitMQ에 관리자계정 만들기
최초 설치시 guest 계정을 제공하기는 하지만 localhost에서만 접속을 허용하는 제한사항이 있다. 따라서 Management Plugin UI로 접근해서 설정하려면 관리자 계정을 사전에 만들어줘야 한다.
아래 예시는 관리자 계정을 rabbit_admin 이라는 이름으로 만들었다.
[ec2-user@ip-10-1-10-40 ~]$ sudo rabbitmqctl add_user rabbit_admin MyNewStrongP@ssw0d!
Creating user "rabbit_admin"
[ec2-user@ip-10-1-10-40 ~]$ sudo rabbitmqctl set_user_tags rabbit_admin administrator
Setting tags for user "rabbit_admin" to [administrator]
계정이 잘 만들었는지 확인하기 위해 웹브라우저를 열고 [EC 퍼블릭 아이피]:15672
에 접속한다.
그리고 위에서 만든 계정으로 로그인하여 정상접속되는지 확인한다.