RabbitMQ 메모
1. RabbitMQ 는 erlang 으로 만들어져 있어 먼저 erlang 설치가 필요하다.
아래 방법중 편한대로 설치하자.
- zero dependency Erlang RPM package for running RabbitMQ 설치(추천)
RabbitMQ 구동만을 위해 패키징된 erlang rpm
- erlang-solutions.com 사이트에서 repository로 설치
찾아봤는데 데비안쪽만 있는거 같음
- erlang-solutions.com 에서 esl-erlang 를 rpm으로 설치하고 esl-erlang-compact rpm 을 설치
https://www.erlang-solutions.com/resources/download.html
https://github.com/jasonmcintosh/esl-erlang-compat/releases
- RabbitMq 사이트에도 올려져있음(미확인)
https://www.rabbitmq.com/releases/erlang
- epel erlang repo 설치 후 yum 설치(버전이 조금 낮은 버전이 설치가 됨)
wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo
yum install erlang
2. RabbitMQ 서버 다운로드 설치
erlang 버전에 따라 설치할 수 있는 버전이 있으니 주의.
현재 최신버전 3.6.6 은 최소 erlang R16B03 이상에서만 사용가능, 최소 버전확인은 여기
https://www.rabbitmq.com/download.html
rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install rabbitmq-server-3.6.6.noarch.rpm
3. 서비스 등록
ntsysv 또는 chkconfig rabbitmq-server on
4. 방화벽 열기
5672 : 기본포트
4369 : ??
35197 : ??
15672 : 관리웹페이지용
rabbitmq-plugins enable rabbitmq_management
그후 http://서버아이피:15672 에 접속하면 관리자 사이트가 뜸
6. 구동 및 관리
service rabbitmq-server start
service rabbitmq-server stop
service rabbitmq-server restart
rabbitmqctl stop # RabbitMQ 서버 정지
rabbitmqctl status # 구동중인지 체크
#rabbitmqadmin 파이썬 프로그램을 다운로드
wget http://서버아이피:15672/cli/rabbitmqadmin
적당한 곳으로 옮겨놓고 사용(추천 : /usr/sbin)
rabbitmqadmin declare queue name=simplequeue durable=true
#queue 확인
rabbitmqadmin -q -f bash list queues
#접속 user 생성
rabbitmqctl add_user <유저명> <비밀번호>
#permission 설정 (rabbitmq 3.3 버전부터 guest 계정은 locahost에서만 접근 가능하기 때문에 permission이 필요함.)
rabbitmqctl set_user_tags <유저명> administrator
rabbitmqctl set_permissions -p / <유저명> “.*” “.*” “.*”
7. 사용자 추가
rabbitmqctl add_user admin password
rabbitmqctl set_user_tags admin administrator
8-1. 클러스터링 - 쿠키동기화
/var/lib/rabbitmq/.erlang.cookie 또는 $HOME/.erlang.cookie 에 존재하는 쿠키를 다른 서버들로 복사
순서와 내용에 관계없이 각 서버들이 동일한 쿠키값만 유지하면 됨
8-2. 클러스터링 - hostname 설정(example-was1, example-was2 서버 클러스터링)
vi /etc/sysconfig/network
HOSTNAME=example-was1
service network restart
8-3. 클러스터링 - rabbitmq-env.conf 설정
vi /etc/rabbitmq/rabbitmq-env.conf
HOSTNAME=example-was1
NODENAME=rabbit@example-was1
8-4. 클러스터링 - rabbitmq.config 설정
vi /etc/rabbitmq/rabbitmq.config
[
{kernel,
[
{inet_dist_listen_min, 35197},
{inet_dist_listen_max, 35197}
]
},
{mnesia, [
{dump_log_write_threshold, 1000}
]},
{rabbit, [
{cluster_nodes, {[‘rabbit@example-was1', ‘rabbit@example-was2'], disc}},
{tcp_listeners, [5672]}
]}
]
8-5. 클러스터링 - Queue 복제가능하도록 HA 설정
./rabbitmqctl set_policy ha-all “^ha\.” ‘{“ha-mode”:”all”}’
8-6. 클러스터링 - 서버구동
service rabbitmq-server restart
#서버 확인
/srv/rabbitmq/sbin/rabbitmqctl status
#cluster 확인
/srv/rabbitmq/sbin/rabbitmqctl cluster_status
#rabbitmq 클러스터링이 안 묶일 때, 다음 명령어를 통해서 초기화 한다.
./rabbitmqctl stop_app
./rabbitmqctl reset
./rabbitmqctl start_app
참고
http://abh0518.net/tok/?p=384
http://abh0518.net/tok/?p=397
http://abh0518.net/tok/?p=411