요약
간단히: 이 가이드는 CentOS 7 서버에 Erlang과 RabbitMQ를 설치하고, 방화벽/SELinux 설정을 조정하며 관리 콘솔을 활성화하는 전체 절차를 제공합니다. 단계별 명령과 웹 관리 로그인 방법, 보안 권장사항, 문제 해결 체크리스트를 포함합니다.
중요: 문서의 모든 명령은 루트(root) 권한으로 실행하도록 작성되어 있습니다. sudo 사용자라면 sudo -i로 전환하세요.
소개
RabbitMQ는 오픈 소스 엔터프라이즈 메시지 브로커입니다. Erlang으로 작성되었으며 AMQP(Advanced Message Queueing Protocol)를 구현합니다. 주요 프로그래밍 언어용 클라이언트 라이브러리를 제공합니다. 메시지 큐잉, 전송 확인(ack), 유연한 라우팅, 여러 교환 타입, HTTP API와 웹 UI를 지원합니다.
간단한 용어정의: AMQP — 메시지 브로커와 클라이언트 사이의 표준 프로토콜.
사전 요구사항
- 최소한의 CentOS 7 서버
- 루트 권한(또는 sudo 권한)
시스템 업데이트
패키지와 레포지토리를 최신으로 유지하는 것이 권장됩니다.
yum -y update
업데이트가 완료되면 Erlang 설치로 진행합니다.
Erlang 설치
RabbitMQ는 Erlang으로 구현되어 있습니다. CentOS 기본 YUM 레포지토리에는 최신 Erlang이 없을 수 있으므로 EPEL 저장소를 추가합니다.
yum -y install epel-release
레포지토리를 반영하려면 다시 업데이트합니다.
yum -y update
Erlang과 socat을 설치합니다.
yum -y install erlang socat
설치 후 Erlang 버전을 확인합니다.
erl -version
예시 출력(환경에 따라 다름):
[root@liptan-pc ~]# erl -version
Erlang (ASYNC_THREADS,HIPE) (BEAM) emulator version 5.10.4
Erlang 셸로 들어가려면:
erl
셸 예시 출력:
Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V5.10.4 (abort with ^G)
1>
셸에서 나오려면 Ctrl+C를 두 번 누르세요.
RabbitMQ 설치
RabbitMQ는 Enterprise Linux 계열용 RPM 패키지를 제공합니다. 먼저 RabbitMQ 서버 RPM을 다운로드합니다. 예시 명령(원문 링크 사용):
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
wget이 없다면 다음으로 설치하세요:
yum -y install wget
GPG 키를 가져옵니다:
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
다운로드한 RPM을 설치합니다:
rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm
설치가 완료되면 RabbitMQ 관련 바이너리가 시스템에 추가됩니다.
RabbitMQ 시작 및 자동 시작 설정
서버를 시작합니다:
systemctl start rabbitmq-server
부팅 시 자동 시작을 설정합니다:
systemctl enable rabbitmq-server
상태 확인:
systemctl status rabbitmq-server
성공 시 예시 출력(환경에 따라 다름):
? rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-07-15 18:59:14 UTC; 3min 22s ago
Main PID: 29006 (beam.smp)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
??29006 /usr/lib64/erlang/erts-9.0/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K tr...
??29149 /usr/lib64/erlang/erts-9.0/bin/epmd -daemon
??29283 erl_child_setup 1024
??29303 inet_gethost 4
??29304 inet_gethost 4
Jul 15 18:59:13 centos rabbitmq-server[29006]: Starting broker...
Jul 15 18:59:14 centos rabbitmq-server[29006]: systemd unit for activation check: "rabbitmq-server.service"
Jul 15 18:59:14 centos systemd[1]: Started RabbitMQ broker.
Jul 15 18:59:14 centos rabbitmq-server[29006]: completed with 0 plugins.
방화벽(firewalld) 및 SELinux 설정
기본적으로 RabbitMQ는 여러 포트를 사용합니다. firewalld를 사용하는 경우 필요한 포트를 허용하세요:
firewall-cmd --zone=public --permanent --add-port=4369/tcp
firewall-cmd --zone=public --permanent --add-port=25672/tcp
firewall-cmd --zone=public --permanent --add-port=5671-5672/tcp
firewall-cmd --zone=public --permanent --add-port=15672/tcp
firewall-cmd --zone=public --permanent --add-port=61613-61614/tcp
firewall-cmd --zone=public --permanent --add-port=1883/tcp
firewall-cmd --zone=public --permanent --add-port=8883/tcp
변경 사항을 적용합니다:
firewall-cmd --reload
SELinux가 활성화된 경우 RabbitMQ 작동을 위해 적절한 boolean을 설정하세요:
setsebool -P nis_enabled 1
참고: 운영 환경에서는 포트 범위와 접근 제어를 최소 권한 원칙으로 구성하세요.
웹 관리 콘솔 활성화 및 관리자 계정 생성
웹 관리 플러그인을 활성화합니다:
rabbitmq-plugins enable rabbitmq_management
RabbitMQ 파일 소유권을 rabbitmq 사용자로 설정합니다:
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
관리자 계정을 추가합니다(아래 예시에서 admin과 StrongPassword는 변경하세요):
rabbitmqctl add_user admin StrongPassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
관리 콘솔 접속 URL:
http://Your_Server_IP:15672/
로그인 페이지 예시:
로그인 후 관리자 대시보드가 표시됩니다:
Admin 탭에서 사용자와 가상 호스트, 정책을 관리할 수 있습니다. 기본 Guest 계정은 보안상 삭제하거나 접근을 제한하세요.
Queues 탭에서 큐를 만들고 삭제할 수 있습니다.
Connections 탭에서 현재 연결을 확인합니다.
Exchanges 탭에서 채널과 교환(exchange)을 관리합니다.
보안 권장사항
- 관리 UI는 가능한 경우 내부 네트워크 전용으로 하거나 프록시에서 인증/ACL을 추가하세요.
- 관리자 계정의 비밀번호는 길고 복잡하게 설정하세요. 비밀번호 관리 도구 사용을 권장합니다.
- TLS를 사용해서 AMQP(5671)와 관리 포트(HTTPS 리버스 프록시)를 보호하세요.
- Guest 사용자는 비활성화하거나 삭제하세요.
- 필요 없는 플러그인은 비활성화하세요.
중요: 공개 인터넷에 15672 포트를 직접 노출하지 마세요.
운영 설치를 위한 권장 절차(간단한 방법론)
- 테스트 환경(로컬 또는 스테이징)에 동일한 버전으로 먼저 설치 및 기능 검증.
- 구성(사용자/권한/정책)을 코드화(스크립트 또는 구성 관리)하여 재현 가능하게 유지.
- 모니터링 지표(메시지 큐 길이, 소비자 지연, 연결 수)를 수집하고 SLI/SLO를 정의.
- 백업 및 복구 절차 문서화(구성 파일, 정의된 큐/바인딩 등).
- 롤백 계획과 최소 중단 시간 전략 수립.
문제 해결 및 인시던트 런북
일반 이슈와 대응 순서:
RabbitMQ가 기동하지 않음
- systemctl status rabbitmq-server 확인
- /var/log/rabbitmq/에서 최근 로그 확인
- Erlang 버전 호환성 확인(로그에 관련 에러 표시)
- 포트 충돌(fuser 또는 ss 명령) 여부 확인
노드 간 통신 문제(클러스터링 실패)
- 방화벽 포트(4369,25672 등) 개방 확인
- 호스트명과 /etc/hosts 설정 확인
- Erlang cookie(~/.erlang.cookie) 동일성 확인
관리 콘솔 접속 문제
- 플러그인 활성화 확인(rabbitmq-plugins list)
- 포트 15672가 방화벽/프록시에서 허용되는지 확인
- 사용자 권한 확인(rabbitmqctl list_users, list_permissions)
롤백(예: 새 버전에서 문제 발생 시):
- 서비스 중지: systemctl stop rabbitmq-server
- 패키지 롤백(예전 RPM 재설치): rpm -Uvh –oldpackage rabbitmq-server-
.rpm - 데이터 디렉터리 백업과 복원(/var/lib/rabbitmq 보존)
- 서비스 시작 및 기능 확인
역할별 체크리스트
운영팀(DevOps)
- Erlang/RabbitMQ 패키지 버전 관리
- 방화벽과 SELinux 규칙 설정
- 자동 시작 및 모니터링 설정
개발팀
- 연결 설정(호스트, 포트, TLS) 확인
- 큐와 교환 설계(내구성, 라우팅 키) 정의
- 메시지 크기/유효성 테스트
보안팀
- 관리 UI 접근 제어
- TLS 설정 검토
- 사용자 권한 최솟값 적용
수용 기준
- RabbitMQ 서버가 systemctl에서 active(running) 상태여야 함.
- 관리 콘솔에 관리자 계정으로 로그인 가능해야 함.
- 메시지 발송/수신 간단한 E2E 테스트(프로듀서→큐→컨슈머)가 성공해야 함.
간단한 테스트 케이스
- 프로듀서가 퍼블리시한 메시지를 컨슈머가 정상 수신하는지 확인.
- 큐에 메시지가 쌓일 때 모니터링 지표가 증가하는지 확인.
- 관리 UI에서 큐/사용자 생성 및 삭제가 가능한지 확인.
1줄 용어집
- 큐: 메시지를 저장하는 버퍼.
- 교환(exchange): 메시지를 큐로 라우팅하는 엔티티.
- 바인딩: 교환과 큐를 연결하는 규칙.
마이그레이션/호환성 팁
- RabbitMQ나 Erlang을 업그레이드하기 전에는 릴리스 노트를 확인하세요. 주요 변경점(특히 프로토콜/플러그인 관련)은 동작에 영향을 줄 수 있습니다.
- 클러스터 환경에서는 롤링 업그레이드를 권장합니다.
결론
이제 CentOS 7에 RabbitMQ를 설치하고 웹 관리 콘솔을 활성화하는 기본 절차를 완료했습니다. 운영 환경에서는 보안 강화(비밀번호, TLS, 네트워크 접근 제어)와 모니터링을 우선 적용하시기 바랍니다. 추가 학습은 공식 RabbitMQ 문서를 참고하세요.
요약 정리
- Erlang 설치 → RabbitMQ RPM 설치 → 서비스 시작 → 방화벽/SELinux 설정 → 웹 콘솔 활성화 및 관리자 생성
- 운영 시 보안·모니터링·백업을 반드시 구성하세요.