본문 바로가기

리눅스

고가용성 클러스터를 구성하여 VIP(Virtual IP)를 사용하는 방법

728x90

고가용성 클러스터(pacemaker, corosync, pcs 패키지)를 구성하여 VIP(Virtual IP)를 사용하는 방법

1. 필수 패키지 설치

각 노드에 pacemaker, corosync, pcs를 설치합니다.

sudo apt update
sudo apt-get install -y pacemaker corosync pcs

설치된 패키지 버전 정보 확인

$ pacemakerd --version
Pacemaker 2.1.2
$ corosync -v
Corosync Cluster Engine, version '3.1.6'
Copyright (c) 2006-2021 Red Hat, Inc.

Built-in features: dbus monitoring watchdog augeas systemd xmlconf vqsim nozzle snmp pie relro bindnow
Available crypto models: nss openssl
Available compression models: zlib lz4 lz4hc lzo2 lzma bzip2 zstd
$ pcs --version
0.10.11

2. 노드 설정

패키지 설치 시 자동으로 서비스가 실행됩니다.

  • pacemaker.service
  • corosync.service
  • pcsd.service
sudo systemctl --now enable pacemaker corosync pcs

호스트 파일(/etc/hosts) 설정

cat <<EOF >> /etc/hosts

### MySQL Hosts BEGIN
192.168.56.211 node1 node1.sangchul.kr
192.168.56.212 node2 node2.sangchul.kr
### MySQL Hosts BEGIN
EOF

hacluster 계정 확인

$ cat /etc/passwd | grep hacluster
hacluster:x:105:114::/var/lib/pacemaker:/usr/sbin/nologin

hacluster 패스워드 변경

echo 'hacluster:hacluster' | sudo chpasswd
pcs cluster create

3. 클러스터 설정

Pacemaker 클러스터 리소스를 구성하기 위해 설정 파일을 생성합니다.

노드 인증(node1)

sudo pcs host auth 192.168.56.211 192.168.56.212
$ sudo pcs host auth 192.168.56.211 192.168.56.212
Username: hacluster
Password:
192.168.56.212: Authorized
192.168.56.211: Authorized
pcs cluster status
$ pcs cluster status
Cluster Status:
 Cluster Summary:
   * Stack: corosync
   * Current DC: node1 (version 2.1.2-ada5c3b36e2) - partition with quorum
   * Last updated: Fri Nov  3 11:54:25 2023
   * Last change:  Fri Nov  3 11:32:10 2023 by hacluster via crmd on node1
   * 1 node configured
   * 0 resource instances configured
 Node List:
   * Online: [ node1 ]

PCSD Status:
Warning: Some nodes are missing names in corosync.conf, those nodes were omitted

클러스터 생성

sudo pcs cluster setup myCluster 192.168.56.211 192.168.56.212 --force
$ sudo pcs cluster setup myCluster 192.168.56.211 192.168.56.212 --force
...
192.168.56.211: successful distribution of the file 'corosync.conf'
192.168.56.212: successful distribution of the file 'corosync.conf'
Cluster has been successfully set up.
$ pcs cluster status
Error: cluster is not currently running on this node

클러스터 실행

sudo pcs cluster start --all
$ sudo pcs cluster start --all
192.168.56.212: Starting Cluster...
192.168.56.211: Starting Cluster...
sudo pcs cluster enable --all
$ sudo pcs cluster enable --all
192.168.56.211: Cluster Enabled
192.168.56.212: Cluster Enabled

클러스터 상태 확인

클러스터 상태를 확인하려면 다음 명령을 사용합니다.

$ sudo pcs cluster status
Cluster Status:
 Cluster Summary:
   * Stack: corosync
   * Current DC: 192.168.56.211 (version 2.1.2-ada5c3b36e2) - partition with quorum
   * Last updated: Fri Nov  3 12:00:00 2023
   * Last change:  Fri Nov  3 11:59:26 2023 by hacluster via crmd on 192.168.56.211
   * 2 nodes configured
   * 0 resource instances configured
 Node List:
   * Online: [ 192.168.56.211 192.168.56.212 ]

PCSD Status:
  192.168.56.211: Online
  192.168.56.212: Online

corosync 작동 확인

pcs status corosync
$ pcs status corosync

Membership information
----------------------
    Nodeid      Votes Name
         1          1 192.168.56.211 (local)
         2          1 192.168.56.212

4. VIP(Virtual IP) 리소스 생성

VIP 리소스를 생성하여 고가용성을 제공합니다. 이렇게 하려면 VIP 리소스를 먼저 만들어야 합니다.

sudo pcs resource create myVip ocf:heartbeat:IPaddr2 ip=192.168.56.60 cidr_netmask=32 op monitor interval=30s
sudo pcs resource group add myGroup myVip

이 명령은 VIP 리소스를 생성하고 IP 주소를 192.168.0.60으로 설정합니다.

sudo pcs status
$ sudo pcs status
Cluster name: myCluster

WARNINGS:
No stonith devices and stonith-enabled is not false

Cluster Summary:
  * Stack: corosync
  * Current DC: 192.168.56.211 (version 2.1.2-ada5c3b36e2) - partition with quorum
  * Last updated: Fri Nov  3 13:35:07 2023
  * Last change:  Fri Nov  3 13:30:56 2023 by root via cibadmin on 192.168.56.211
  * 2 nodes configured
  * 1 resource instance configured

Node List:
  * Online: [ 192.168.56.211 192.168.56.212 ]

Full List of Resources:
  * Resource Group: myGroup:
    * myVip     (ocf:heartbeat:IPaddr2):         Stopped

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
sudo pcs property set stonith-enabled=false
$ sudo pcs status
Cluster name: myCluster
Cluster Summary:
  * Stack: corosync
  * Current DC: 192.168.56.212 (version 2.1.2-ada5c3b36e2) - partition with quorum
  * Last updated: Fri Nov  3 13:38:22 2023
  * Last change:  Fri Nov  3 13:38:05 2023 by root via cibadmin on 192.168.56.211
  * 2 nodes configured
  * 1 resource instance configured

Node List:
  * Online: [ 192.168.56.211 192.168.56.212 ]

Full List of Resources:
  * Resource Group: myGroup:
    * myVip     (ocf:heartbeat:IPaddr2):         Started 192.168.56.211

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

5. VIP 리소스 제약 조건 추가

VIP 리소스를 특정 노드에 바인딩하는 제약 조건을 추가합니다.

sudo pcs constraint location myVIP prefers node1=INFINITY

이렇게 하면 VIP 리소스가 node1에 배치되도록 설정됩니다.

더보기

---

Virtual IP(VIP)를 설정하려면 다음 명령을 사용합니다.

pcs resource create vip ipaddr=192.168.1.100 netmask=255.255.255.0

이 명령은 IP 주소 192.168.1.100의 Virtual IP를 생성합니다.

 

VIP에 대한 서비스 연결

VIP에 대한 서비스를 연결하려면 다음 명령을 사용합니다.

pcs resource create webserver service=http port=80

이 명령은 HTTP 서비스 포트 80을 사용하는 "webserver"라는 서비스를 생성합니다.

 

VIP 및 서비스 연결 설정

VIP와 서비스 연결을 설정하려면 다음 명령을 사용합니다.

pcs resource bind vip webserver

이 명령은 VIP를 "webserver" 서비스에 연결합니다.

---

6. 클러스터 리소스 모니터링

클러스터 리소스가 올바르게 작동하는지 확인하기 위해 crm_mon 명령을 사용하여 클러스터 상태를 모니터링합니다.

7. 고가용성 테스트

고가용성을 테스트하기 위해 노드 중 하나를 끄거나 장애 시뮬레이션을 수행하여 VIP가 다른 노드로 자동 이전되는지 확인합니다.

8. VIP 자동 이전 및 장애 복구

Pacemaker는 VIP의 장애 복구 및 자동 이전을 관리합니다. 장애 복구가 성공하면 VIP가 다른 노드로 이동하여 고가용성을 유지합니다.

 

이제 Pacemaker와 VIP를 사용하여 Ubuntu에서 고가용성 클러스터를 설정하고 운영할 수 있게 될 것입니다. 필요에 따라 더 복잡한 구성과 리소스 설정을 추가할 수 있으며, 클러스터 운영과 모니터링을 향상시키는 추가 구성을 수행할 수 있습니다.

 

클러스터 유지보수

클러스터를 유지보수하려면 다음 사항을 수행합니다.

  • 클러스터 상태를 주기적으로 확인합니다.
  • 클러스터 노드에 대한 패키지 업데이트를 수행하기 전에 클러스터를 중지합니다.

예제

다음은 두 대의 우분투 서버에서 Pacemaker와 Virtual IP(VIP)를 사용하여 고가용성 클러스터를 구성하는 예입니다.

# 패키지 설치
sudo apt update
sudo apt install pacemaker corosync pcs

# 클러스터 구성
pcs cluster setup node1 node2

# 클러스터 인증
pcs cluster auth node1 node2

# 클러스터 이름 설정
pcs cluster name my_cluster

# 클러스터 상태 확인
pcs status

# Virtual IP(VIP) 설정
pcs resource create vip ipaddr=192.168.1.100 netmask=255.255.255.0

# VIP에 대한 서비스 연결
pcs resource create webserver service=http port=80

# VIP 및 서비스 연결 설정
pcs resource bind vip webserver

# 클러스터 테스트
sudo systemctl stop node1
ping 192.168.1.100
sudo systemctl start node1

 

이 예에서는 두 노드에 Pacemaker 클러스터를 생성하고 VIP를 생성한 다음 VIP를 "webserver" 서비스에 연결합니다. 테스트를 위해 하나의 노드를 중지한 다음 다시 시작합니다. VIP는 여전히 응답하므로 클러스터가 제대로 작동하는 것입니다.

 

참고 사항

  • 클러스터 구성 및 유지보수에 대한 자세한 내용은 Pacemaker 설명서를 참조하십시오.
  • 클러스터 구성을 위해 다음 명령을 사용할 수도 있습니다.
# 클러스터 구성
pcs cluster setup --join node1 node2

# 클러스터 인증
pcs cluster auth --join node1 node2

# 클러스터 이름 설정
pcs cluster name --join my_cluster

# VIP 설정
pcs resource create vip ipaddr=192.168.1.100 netmask=255.255.255.0

# VIP에 대한 서비스 연결
pcs resource create webserver service=http port=80

# VIP 및 서비스 연결 설정
pcs resource bind vip webserver

이 명령은 동일한 작업을 수행하지만 "node1" 노드에서만 실행됩니다.

 

참고URL

- Pacemaker 1.1(Configuration Explained) : Pacemaker-1.1-Pacemaker_Explained-en-US.pdf

 

728x90