고가용성 클러스터(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
'리눅스' 카테고리의 다른 글
shasum 명령어 (0) | 2023.02.16 |
---|---|
[리눅스] java(jdk) 설치 및 java 환경 설정 (0) | 2023.02.07 |
[draft] 우분투에서 Pacemaker와 Corosync를 사용해 고가용성 클러스터를 구성하는 방법 (0) | 2023.02.07 |
sudo 명령어 (0) | 2023.02.06 |
date 명령어 (0) | 2023.02.03 |