우분투에서 Pacemaker와 Virtual IP(VIP)를 구성하여 고가용성 클러스터를 운영하는 방법
Corosync는 클러스터 통신을 담당하며 Pacemaker는 자원 관리와 클러스터 관리를 수행합니다. PCS는 구성 및 모니터링 도구로서 클러스터 관리를 단순화합니다.
---
Corosync
- 클러스터 통신 소프트웨어 : Corosync는 여러 노드 간에 클러스터 구성 정보 및 상태 정보를 안정적으로 교환하기 위한 클러스터 통신 소프트웨어입니다.
- 확장성과 신뢰성 : Corosync는 클러스터 환경에서 확장성과 신뢰성을 제공하며, 클러스터 간의 안정적인 통신을 가능하게 합니다.
- 패싱 관리 : Corosync는 클러스터 내에서 데이터 패싱 및 동기화를 처리하여 클러스터 노드 간의 데이터 일관성을 유지합니다.
Pacemaker
- 고가용성 클러스터 관리 : Pacemaker는 다중 노드 클러스터 환경에서 고가용성 애플리케이션 및 서비스 관리를 제공합니다.
- 자원 관리 : Pacemaker는 클러스터 내의 자원(예: 가상 IP 주소, 데이터베이스, 웹 서버)를 관리하며, 이러한 자원을 노드 간에 이동하고 시작 또는 중지할 수 있습니다.
- 축복 및 장애 복구 : Pacemaker는 클러스터 내에서 자원 이동 및 장애 복구 작업을 자동으로 처리하며, 클러스터의 가용성을 유지합니다.
- 정책 설정 : Pacemaker는 자원 이동과 할당에 대한 정책을 설정할 수 있어서, 특정 노드가 우선적으로 특정 자원을 관리하도록 구성할 수 있습니다.
- 모니터링 및 이벤트 관리 : Pacemaker는 클러스터의 상태를 지속적으로 모니터링하고, 이벤트 및 경고를 생성하여 관리자에게 알려줍니다.
PCS(Pacemaker Configuration System)
- 클러스터 구성 관리 : PCS는 Pacemaker 클러스터 및 Corosync를 설정하고 관리하는 데 사용되는 명령행 도구와 웹 기반 그래픽 사용자 인터페이스를 제공합니다. PCS를 사용하면 클러스터 노드를 추가하고 클러스터 구성을 변경할 수 있습니다.
- 구성 파일 관리 : PCS를 통해 Corosync와 Pacemaker의 구성 파일을 수정하고 관리할 수 있으며, 이를 통해 클러스터 구성을 조정할 수 있습니다.
- 클러스터 상태 모니터링 : PCS는 클러스터 상태를 모니터링하고 이벤트 및 경고를 생성하여 관리자에게 알립니다.
---
1. 필수 패키지 설치
Pacemaker와 Corosync를 설치합니다.
sudo apt-get update
sudo apt-get install -y pacemaker corosync pcs
Corosync 및 Pacemaker 서비스 시작
Corosync와 Pacemaker 서비스를 시작합니다.
sudo systemctl --now enable pacemaker corosync
Corosync 및 Pacemaker 서비스 상태 확인
systemctl status pacemaker
systemctl status corosync
pcsd 서비스 활성화 및 시작
sudo systemctl start pcsd
sudo systemctl enable pcsd
hacluster 계정 확인
$ cat /etc/passwd | grep hacluster
hacluster:x:105:114::/var/lib/pacemaker:/usr/sbin/nologin
hacluster 계정 패스워드 변경
$ sudo passwd hacluster
New password:
Retype new password:
passwd: password updated successfully
호스트 파일(/etc/hosts) 설정
sudo vim /etc/hosts
### MySQL Hosts BEGIN
192.168.56.211 node1 node1.sangchul.kr
192.168.56.212 node2 node2.sangchul.kr
### MySQL Hosts BEGIN
2. 클러스터 설정
Corosync와 Pacemaker를 구성하기 전에 pcs 명령을 사용하여 클러스터 설정을 초기화합니다.
노드 인증
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
/var/lib/pcsd/known-hosts 파일 확인
$ cat /var/lib/pcsd/known-hosts
{
"format_version": 1,
"data_version": 1,
"known_hosts": {
"192.168.56.211": {
"dest_list": [
{
"addr": "192.168.56.211",
"port": 2224
}
],
"token": "8d740413-fe82-4d84-aeed-ecf0a0376be2"
},
"192.168.56.212": {
"dest_list": [
{
"addr": "192.168.56.212",
"port": 2224
}
],
"token": "1b15e19c-c9d5-44fb-8678-de2840f32ad7"
}
}
}
기존 클러스터 제거
sudo pcs cluster destroy
클러스터 설정
클러스터 이름, 노드 이름, 클러스터 리소스, 그룹 등을 설정할 수 있습니다.
sudo pcs cluster setup --name mycluster node1_IP node2_IP
여기서 mycluster는 클러스터 이름, node1_IP 및 node2_IP는 클러스터 노드의 IP 주소입니다.
클러스터 생성
sudo pcs cluster setup mycluster 192.168.56.211 192.168.56.212
$ sudo pcs cluster setup mycluster 192.168.56.211 192.168.56.212
...
Sending 'corosync authkey', 'pacemaker authkey' to '192.168.56.211', '192.168.56.212'
192.168.56.211: successful distribution of the file 'corosync authkey'
192.168.56.211: successful distribution of the file 'pacemaker authkey'
192.168.56.212: successful distribution of the file 'corosync authkey'
192.168.56.212: successful distribution of the file 'pacemaker authkey'
Sending 'corosync.conf' to '192.168.56.211', '192.168.56.212'
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 setup node1 node2
이 명령은 두 노드에 Pacemaker 클러스터를 생성합니다.
클러스터 인증
클러스터 인증을 위해 다음 명령을 사용합니다.
pcs cluster auth node1 node2
이 명령은 두 노드 간에 클러스터 인증을 설정합니다.
클러스터 이름 설정
클러스터 이름을 설정하려면 다음 명령을 사용합니다.
pcs cluster name my_cluster
이 명령은 클러스터의 이름을 "my_cluster"로 설정합니다.
---
cat /etc/corosync/corosync.conf
$ cat /etc/corosync/corosync.conf
totem {
version: 2
cluster_name: mycluster
transport: knet
crypto_cipher: aes256
crypto_hash: sha256
}
nodelist {
node {
ring0_addr: 192.168.56.211
name: 192.168.56.211
nodeid: 1
}
node {
ring0_addr: 192.168.56.212
name: 192.168.56.212
nodeid: 2
}
}
quorum {
provider: corosync_votequorum
two_node: 1
}
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}
3. 클러스터 시작(실행)
Corosync와 Pacemaker 클러스터를 시작하고 부팅 시 자동으로 시작되도록 설정합니다.
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 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: Thu Nov 2 15:29:38 2023
* Last change: Thu Nov 2 15:29:18 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 ]
Full List of Resources:
* No resources
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
Corosync 클러스터의 현재 구성 정보를 표시
클러스터 노드, 링 설정, 인터페이스, 환경 변수 및 다른 구성 세부 정보를 확인할 수 있습니다.
corosync-cfgtool -s
$ corosync-cfgtool -s
Local node ID 1, transport knet
LINK ID 0 udp
addr = 192.168.56.211
status:
nodeid: 1: localhost
nodeid: 2: connected
Active/Passive 클러스터 생성
sudo pcs property set stonith-enabled=false
4. VIP(Virtual IP) 리소스 생성
VIP 리소스를 생성하여 고가용성을 제공합니다. 이렇게 하려면 VIP 리소스를 먼저 만들어야 합니다.
sudo pcs resource create myVIP ocf:heartbeat:IPaddr2 ip=192.168.56.60 cidr_netmask=24 op monitor interval=30s
이 명령은 VIP 리소스를 생성하고 IP 주소를 192.168.56.60으로 설정합니다.
sudo pcs status
$ sudo pcs status
Cluster name: mycluster
Cluster Summary:
* Stack: corosync
* Current DC: 192.168.56.211 (version 2.1.2-ada5c3b36e2) - partition with quorum
* Last updated: Thu Nov 2 15:47:06 2023
* Last change: Thu Nov 2 15:42:47 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:
* 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
- Julio's Blog : High Availability and Pacemaker 101!
'리눅스' 카테고리의 다른 글
java(jdk) 설치 및 java 환경 설정 (0) | 2023.02.07 |
---|---|
Pacemaker와 Corosync를 사용하여 NGINX의 고가용성 설정을 구성하는 방법 (0) | 2023.02.07 |
[리눅스] consul-template 설치(install consul-template) (0) | 2023.02.03 |
유닉스 타임스탬프 간의 변환 방법 (0) | 2023.02.03 |
free 명령어 (0) | 2023.01.31 |