Sunday, July 9, 2017

RabbitMq Clustering


rabbitMQ 클러스터링 구성 & HA 정책 설정

쿠키 복사
클러스터링을 구성할 서버는 같은 쿠기값을 가져야 한다.
구성할 서버 중 하나의 cookie를 다른 서버의 같은 경로로 모두 복사한다.
/home1/{user}/.erlang.cookie
  
정확한 위치는
$HOME/.erlang.cookie

vhost 추가
virtual-host '/store' 로 MQ를 운영한다.
rabbitmqctl add_vhost /store
rabbitmqctl set_permissions -p /store mom ".*" ".*" ".*"
HA 정책 추가
rabbitmqctl set_policy -p /store ha-all "" '{"ha-mode":"all"}'


Clustering 초기 구성


https://www.rabbitmq.com/clustering.html 여기에 나온 방식을 이용해서 클러스터링을 구축한다.

async001, async002 두 서버에 rabbitMQ가 설치되어 있다는 가정하에 구성 절차를 설명한다.
rabbitMQ는 RabbitMq 설치가이드 에서 명시한 guide에 맞게 설치를 했다고 가정한다.
1. Node 초기화 및 서비스 중지
1번서버를 start한다
async001$ rabbitmq-server -detached

2번 서버를 start한다
2-1 앱을 멈춘후
2-2 1번 서버로 클러스터 조인을 시도한다
2-3 클러스터 상태 확인
async002$ rabbitmq-server -detached
async002$ rabbitmqctl stop_app
async002$ rabbitmqctl join_cluster rabbit@async001
async002$ rabbitmqctl cluster_status
[user@async002~]$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@async002'
[{nodes,[{disc,['rabbit@async001','rabbit@async002']}]},
{alarms,[{'rabbit@async001',[]}]}]

2. Clustering 구성 확인
rabbitmqctl cluster_status

Monday, July 3, 2017

RabbitMQ 설치 가이드


RabbitMQ 의존 라이브러리 설치

1. erlang 설치 (version . Erlang R16B03-1)
sudo wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo
sudo yum install erlang
  

RabbitMQ 설치

1. rabbitmq-server 설치
sudo wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
sudo rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
sudo yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm
별도로 설정하지 않을 경우 /usr/sbin 아래의 rabbimq 관련 스크립트들이 실행되는데, rabbiqmq 계정으로 시작되어 관리에 어려움이 있다.
{user} 계정으로 운영하기 쉽도록 이 스크립트들은 비활성화 시킨다.
sudo mv /usr/sbin/rabbitmqctl /usr/sbin/rabbitmqctl_dont_use
sudo mv /usr/sbin/rabbitmq-plugins /usr/sbin/rabbitmq-plugins_dont_use
sudo mv /usr/sbin/rabbitmq-server /usr/sbin/rabbitmq-server_dont_use
rabbitmq bin 디렉토리를 path에 추가하여 편하게 운영할 수 있도록 한다.
.bashrc
PATH=$PATH:/usr/lib/rabbitmq/bin
2. rabbitmq 설정
설정파일은 abc의 conf 폴더를 사용하도록 한다.
sudo rmdir /etc/rabbitmq/
sudo ln -s /home1/{user}/conf/rabbitmq /etc/rabbitmq
NODENAME 을 지정해주지 않으면 이상하게도 클러스터 환경이 구성이 안된다.
/home1/abc/conf/rabbitmq/rabbitmq-env.conf
NODENAME=rabbit@{hostname}
/etc/hosts에 '.'이 들어가지 않는 hostname 설정을 추가하고 이 값을 사용한다.

Linux centos 7 버전으로 설치를 했는데 port 가 tcp6 로 잡혀서 직접 포트를 설정해줘야함
포트 번호는 22133으로 지정 → 기본 포트가 5672
/home1/abc/conf/rabbitmq/rabbitmq.config
[
  {rabbit, [
    {tcp_listeners, [{"0.0.0.0"22133}]}
  ]}
].
3. management plugin 활성화
rabbitmq-plugins enable rabbitmq_management
로그 파일 경로 변경
4. rabbitmq 서버 시작
  • 서버 시작 ( -detached 는 백그라운드로 실행하겠다는 의미 이다 ) 일반적으로 rabbitmq-server on 으로 실행
    rabbitmq-server -detached
  • 상태 확인
    rabbitmqctl status
  • 계정 추가
    guest/guest 계정이 기본적으로 생성은 되어있지만, 기본적으로 localhost에서만 이 계정으로 접근 가능하다.
    보안을 고려하여 이 정책을 변경없이 그대로 사용하고, 새로운 계정을 추가하여 사용한다.
    rabbitmqctl add_user mom mom
    rabbitmqctl set_user_tags mom administrator
    rabbitmqctl set_permissions -p / mom ".*" ".*" ".*"
  • virtual-host 추가
    /store라는 virtual host를 추가한후 mom 계정에 /store 권한을 추가한다.
    sudo rabbitmqctl add_vhost /store
    sudo rabbitmqctl set_permissions -p /store mom ".*" ".*" ".*"


  • 관리 페이지 확인
    http://x.x.x.x:15672