Name
Last commit
Last update
..
README.md haproxy 클러스터구성 추가

logo

Pacemaker를 이용한 HA-Proxy 이중화 구성

KVM 가상화를 이용한 MASTER / SLAVE 구성을 다룬다.

구성 환경

  • KVM Virtual Machine
  • CentOS 7
  • Pacemaker / Corosync
  • Heartbeat Network

Pacemaker 설치 및 구성

Pacemaker는 Heartbeat Network으로 구성되기 때문에 다음과 같이 /etc/hosts 파일에 IP를 설정한다.

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.200.233 haproxy-master
192.168.200.234 haproxy-slave

아래와 같이 모든 Node에 Pacemaker 패키지를 설치한다.

[ALL]# yum install pcs fence-agents-all

위의 패키지는 CentOS 기본(Base) 패키지에서 제공한다.

설치를 마무리 한다.

[ALL]# systemctl start pcsd; systemctl enable pcsd

[ALL]# echo 패스워드 | passwd --stdin hacluster
[MASTER]# pcs cluster auth haproxy-master haproxy-slave

[MASTER]# pcs cluster setup --start --name L4 haproxy-master haproxy-slave
[MASTER]# pcs cluster enable --all
[MASTER]# pcs property set stonith-enabled=false
[MASTER]# pcs property set no-quorum-policy=ignore

!중요 : 클러스터 Quorum 및 Fencing 설정

다음의 클러스터 구성은 2 Node로 구성되기 때문에 정족수(Quorum) 설정을 비활성화하여야 한다. 또한 Fence Device(IPMI 등)가 구성되지 않은 경우에도 설정(stonith)을 비활성화 해야 한다. 만약 이 설정이 무시될 경우 클러스터가 구성되지 않는다.

클러스터 리소스 구성 및 용도

  • 서비스 / Private VIP 리소스 구성 => 서비스 VIP 사용
  • HA-PROXY 설치 및 리소스 구성 => Load Balancer 서비스
  • Memcached 설치 및 리소스 구성 => WEB Session Store 서비스
  • 클러스터 제약조건 설정

서비스 / Private VIP 구성

[MASTER]# pcs resource create PU-VIP IPaddr2 ip=61.100.0.XX cidr_netmask=32 nic=eth0 op monitor interval=10s timeout=30s on-fail=standby
[MASTER]# pcs resource create PR-VIP IPaddr2 ip=172.24.0.XX cidr_netmask=32 nic=eth1 op monitor interval=10s timeout=30s on-fail=standby

서비스 VIP(61.100.0.XX)를 설정하고, 시스템의 nic는 eth0, 모니터링 주기는 10초, 최종 timeout은 30초로 설정한다. 만약 현재 Owner의 장애가 발생하면, Standby로 Role을 이관한다.

HA-PROXY 설치 및 리소스 구성

[ALL]# yum install haproxy

!중요 : haproxy 데몬은 pacemaker가 제어해야하기 때문에 리부팅 후 실행되지않게 비활성처리가 되어야 함

[ALL]# systemctl disable haproxy

다음과 같이 클러스터 리소스로 haproxy 데몬을 등록한다.

[MASTER]# pcs resource create HAPROXY systemd:haproxy

Memcached 설치 및 리소스 구성

[ALL]# yum install memcached

!중요 : memcached 데몬은 pacemaker가 제어해야하기 때문에 리부팅 후 실행되지않게 비활성처리가 되어야 함

[ALL]# systemctl disable memcached

다음과 같이 클러스터 리소스로 haproxy 데몬을 등록한다.

[MASTER]# pcs resource create HAPROXY systemd:memcached

클러스터 제약조건 설정

위와 같이 서비스가 등록되면, MASTER / SLVAE의 구분없이, 서로 리소스를 실행하려고 한다.

  • 클러스터 리소스 시작순서 설정
  • [ STEP 1 ] : 서비스 Public IP / Private IP 실행
[MASTER]# pcs constraint order start PU-VIP then start PR-VIP

PU(Public IP)-VIP 리소스를 실행한 후 PR-VIP 리소스를 실행한다.

  • [ STEP 2 ] : Private IP / HA-PROXY 실행
[MASTER]# pcs constraint order start PR-VIP then start HAPROXY

PR(Private IP)-VIP 리소스를 실행한 후 HAPROXY 리소스를 실행한다.

  • [ STEP 3 ] : Memcached를 실행
[MASTER]# pcs constraint order start HAPROXY then start MEMCACHED
  • [ STEP 4 ] : 중요 클러스터 리소스의 우선순위 설정
[MASTER]# pcs constraint colocation add PU-VIP with PR-VIP
[MASTER]# pcs constraint colocation add PR-VIP with HAPROXY
[MASTER]# pcs constraint colocation add HAPROXY with MEMCACHED

이 설정은 클러스터의 모든 리소스가 Owner Node에서 실행됨을 의미한다.

클러스터 구성내역

# pcs status
Cluster name: L4
Stack: corosync
Current DC: haproxy-master (version 1.1.20-5.el7_7.2-3c4c782f70) - partition with quorum
Last updated: Tue Mar  2 10:47:58 2021
Last change: Wed Feb  3 04:51:30 2021 by root via crm_resource on haproxy-master

2 nodes configured
4 resources configured

Online: [ haproxy-master haproxy-slave ]

Full list of resources:

 PU-VIP (ocf::heartbeat:IPaddr2):       Started haproxy-master
 PR-VIP (ocf::heartbeat:IPaddr2):       Started haproxy-master
 HAPROXY        (systemd:haproxy):      Started haproxy-master
 MEMCACHED      (systemd:memcached):    Started haproxy-master

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

다음은 리소스의 제약조건에 대한 결과이다.

# pcs resource --full
 Resource: PU-VIP (class=ocf provider=heartbeat type=IPaddr2)
  Attributes: cidr_netmask=32 ip=61.100.0.XX nic=eth0
  Operations: monitor interval=10s on-fail=standby timeout=30s (PU-VIP-monitor-interval-10s)
              start interval=0s timeout=20s (PU-VIP-start-interval-0s)
              stop interval=0s timeout=20s (PU-VIP-stop-interval-0s)
 Resource: PR-VIP (class=ocf provider=heartbeat type=IPaddr2)
  Attributes: cidr_netmask=32 ip=192.168.200.XX nic=eth1
  Operations: monitor interval=10s on-fail=standby timeout=30s (PR-VIP-monitor-interval-10s)
              start interval=0s timeout=20s (PR-VIP-start-interval-0s)
              stop interval=0s timeout=20s (PR-VIP-stop-interval-0s)
 Resource: HAPROXY (class=systemd type=haproxy)
  Operations: monitor interval=60 timeout=100 (HAPROXY-monitor-interval-60)
              start interval=0s timeout=100 (HAPROXY-start-interval-0s)
              stop interval=0s timeout=100 (HAPROXY-stop-interval-0s)
 Resource: MEMCACHED (class=systemd type=memcached)
  Operations: monitor interval=60 timeout=100 (MEMCACHED-monitor-interval-60)
              start interval=0s timeout=100 (MEMCACHED-start-interval-0s)
              stop interval=0s timeout=100 (MEMCACHED-stop-interval-0s)

클러스터 관리명령

  • 클러스터 리소스 CleanUP 수행

클러스터에 에러가 발생할 경우 다음과 같이 CleanUP을 수행해야 처리할수 있다.

[OWNER]# pcs resource cleanup 리소스명

단, 시스템 구성이나 데몬에 이상이 발생되면, 에러는 Fix되지 않고 계속 발생될 것이다. 이는 기 발생된 에러에 대한 CleanUP 처리이다.

  • 클러스터 리소스 Relocate 수행

현재 운용되는 클러스터의 유지보수로 인해 Slave Node로의 On-demand 절체(relocate)를 수행할 수 있다.

[OWNER]# pcs resource relocate 리소스명