반응형

클러스터 구성한 RabbitMQ중 노드 하나가 내려간 경우, 

client에서 죽은 노드로 요청을 보내면 실패를 하기 때문에, Load Balancer를 통해 health체크를 하여,

죽은 노드로는 요청을 보내지 않도록 하기 위해 HAProxy를 사용해보았다.


일단 HAProxy를 설치해보도록 하자. (CentOS 기준)

CentOS버전이 낮다면, yum repository에 포함이 되어 있지 않은 경우가 있으므로, repo를 추가 해준 후 install한다.

$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

$ sudo yum install haproxy


설치가 되었으니, 설정을 해보도록 한다.

설정 파일은 /etc/haproxy/haproxy.cfg에 위치해 있다.

# haproxy.cfg
listen rabbitmq-cluster 192.168.33.10:5670
balance roundrobin

mode tcp server node-01 192.168.33.10:5672 check inter 5s rise 2 fall 3 server node-02 192.168.33.11:5672 check inter 5s rise 2 fall 3 server node-03 192.168.33.12:5672 check inter 5s rise 2 fall 3

192.168.33.10번 서버에서 5670포트로, 아래 나열된 server들에 대해서

tcp방식의 roundrobin방식으로 밸런싱을 한다. 


이제 서비스를 올리면 끝난다.

$ service haproxy start


이제 client단에서 10번 서버의 5670포트만 바라보도록 설정을 변경하면 되고,

노드를 일부로 죽여서 테스트를 해보면, 죽은 노드로는 밸런싱이 되지 않도록 구성이 되었다.


하지만, HAProxy를 단일로 두게되면, 심각한 SPOF이기 때문에 slave구성을 해야될 듯 하다.

slave구성은 완료되는 대로 다음포스트에 작성하는걸로..

반응형

'개발 > Linux, System' 카테고리의 다른 글

[Vagrant] CentOS 가상환경 세팅  (0) 2016.06.10
[CentOS] TimeZone 변경  (0) 2016.06.10
[HAProxy] Logging  (0) 2016.06.10
[Shell] Expect 사용 시 timeout 설정  (0) 2016.06.10
[Expect] Crontab에서 사용 시 주의점  (0) 2016.06.10
,