본문 바로가기

리눅스

[리눅스] ubuntu에 pacemaker VirtualIP(VIP) 구성하기

728x90

ubuntu에 pacemaker vip(VirtualIP) 구성하기

테스트 환경

호스트 이름 서버 아이피 도메인 운영체제 비고
VIP 192.168.0.60 vip.cluster.local    
control1 192.168.0.51 control1.cluster.local Ubuntu 22.04 LTS  
node3 192.168.0.63 node3.cluster.local Ubuntu 22.04 LTS  

VirtualIP(VIP) 설정하기

$ pcs status        
Cluster name: hacluster
Cluster Summary:
  * Stack: corosync
  * Current DC: node3.cluster.local (version 2.1.2-ada5c3b36e2) - partition with quorum
  * Last updated: Tue Feb  7 10:42:02 2023
  * Last change:  Tue Feb  7 10:35:15 2023 by root via cibadmin on control1.cluster.local
  * 2 nodes configured
  * 0 resource instances configured

Node List:
  * Online: [ control1.cluster.local node3.cluster.local ]

Full List of Resources:
  * No resources

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
$ pcs resource status  
NO resources configured

Virtual IP(VIP) 생성

pcs resource create resource_id standard:provider:type|type [resource options]

pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.60 cidr_netmask=24 op monitor interval=10s
pcs resource status
$ pcs resource status
  * VirtualIP   (ocf:heartbeat:IPaddr2):         Started control1.cluster.local
crm_simulate -sL
$ crm_simulate -sL
[ control1.cluster.local node3.cluster.local ]

VirtualIP       (ocf:heartbeat:IPaddr2):         Started control1.cluster.local

pcmk__native_allocate: VirtualIP allocation score on control1.cluster.local: 0
pcmk__native_allocate: VirtualIP allocation score on node3.cluster.local: 0
pcs status
$ pcs status
Cluster name: hacluster
Cluster Summary:
  * Stack: corosync
  * Current DC: node3.cluster.local (version 2.1.2-ada5c3b36e2) - partition with quorum
  * Last updated: Tue Feb  7 10:48:09 2023
  * Last change:  Tue Feb  7 10:46:52 2023 by root via cibadmin on control1.cluster.local
  * 2 nodes configured
  * 1 resource instance configured

Node List:
  * Online: [ control1.cluster.local node3.cluster.local ]

Full List of Resources:
  * VirtualIP   (ocf:heartbeat:IPaddr2):         Started control1.cluster.local

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
pcs cluster status
$ pcs cluster status
Cluster Status:
 Cluster Summary:
   * Stack: corosync
   * Current DC: node3.cluster.local (version 2.1.2-ada5c3b36e2) - partition with quorum
   * Last updated: Tue Feb  7 10:48:33 2023
   * Last change:  Tue Feb  7 10:46:52 2023 by root via cibadmin on control1.cluster.local
   * 2 nodes configured
   * 1 resource instance configured
 Node List:
   * Online: [ control1.cluster.local node3.cluster.local ]

PCSD Status:
  control1.cluster.local: Online
  node3.cluster.local: Online
ip addr
root@control1:~$ ip addr
...
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:0d:82:e9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.51/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet 192.168.0.60/24 brd 192.168.0.255 scope global secondary enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe0d:82e9/64 scope link 
       valid_lft forever preferred_lft forever
...

 


페일오버(Failover) 테스트(Active-Standby)

- control1 노드(Active→Standby)

root@control1:~$ pcs status
Cluster name: hacluster
Cluster Summary:
  * Stack: corosync
  * Current DC: node3.cluster.local (version 2.1.2-ada5c3b36e2) - partition with quorum
  * Last updated: Tue Feb  7 10:49:53 2023
  * Last change:  Tue Feb  7 10:46:52 2023 by root via cibadmin on control1.cluster.local
  * 2 nodes configured
  * 1 resource instance configured

Node List:
  * Online: [ control1.cluster.local node3.cluster.local ]

Full List of Resources:
  * VirtualIP   (ocf:heartbeat:IPaddr2):         Started control1.cluster.local

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
root@control1:~$ pcs cluster status
Cluster Status:
 Cluster Summary:
   * Stack: corosync
   * Current DC: node3.cluster.local (version 2.1.2-ada5c3b36e2) - partition with quorum
   * Last updated: Tue Feb  7 10:49:58 2023
   * Last change:  Tue Feb  7 10:46:52 2023 by root via cibadmin on control1.cluster.local
   * 2 nodes configured
   * 1 resource instance configured
 Node List:
   * Online: [ control1.cluster.local node3.cluster.local ]

PCSD Status:
  control1.cluster.local: Online
  node3.cluster.local: Online
root@control1:~$ pcs resource status
  * VirtualIP   (ocf:heartbeat:IPaddr2):         Started control1.cluster.local
root@control1:~$ pcs cluster stop control1.cluster.local
control1.cluster.local: Stopping Cluster (pacemaker)...
control1.cluster.local: Stopping Cluster (corosync)...
root@control1:~$ pcs cluster status
Error: cluster is not currently running on this node
728x90

- node3 노드(Standby->Active)

root@node3:~$ ip addr            
...
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:0b:48:03 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.63/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet 192.168.0.60/24 brd 192.168.0.255 scope global secondary enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe0b:4803/64 scope link 
       valid_lft forever preferred_lft forever
...

- control1 노드(Standby)

root@control1:~$ pcs cluster start control1.cluster.local
control1.cluster.local: Starting Cluster...
root@control1:~$ pcs resource status                    
  * VirtualIP   (ocf:heartbeat:IPaddr2):         Started node3.cluster.local
root@control1:~$ pcs status
Cluster name: hacluster
Cluster Summary:
  * Stack: corosync
  * Current DC: node3.cluster.local (version 2.1.2-ada5c3b36e2) - partition with quorum
  * Last updated: Tue Feb  7 11:00:07 2023
  * Last change:  Tue Feb  7 10:46:52 2023 by root via cibadmin on control1.cluster.local
  * 2 nodes configured
  * 1 resource instance configured

Node List:
  * Online: [ control1.cluster.local node3.cluster.local ]

Full List of Resources:
  * VirtualIP   (ocf:heartbeat:IPaddr2):         Started node3.cluster.local

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
root@control1:~$ pcs cluster status
Cluster Status:
 Cluster Summary:
   * Stack: corosync
   * Current DC: node3.cluster.local (version 2.1.2-ada5c3b36e2) - partition with quorum
   * Last updated: Tue Feb  7 11:00:26 2023
   * Last change:  Tue Feb  7 10:46:52 2023 by root via cibadmin on control1.cluster.local
   * 2 nodes configured
   * 1 resource instance configured
 Node List:
   * Online: [ control1.cluster.local node3.cluster.local ]

PCSD Status:
  control1.cluster.local: Online
  node3.cluster.local: Online
root@control1:~$ ip addr
...
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:0d:82:e9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.51/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe0d:82e9/64 scope link 
       valid_lft forever preferred_lft forever
...

constraint 설정

constraint 설정 값 확인

crm_simulate -sL
$ crm_simulate -sL
[ control1.cluster.local node3.cluster.local ]

VirtualIP       (ocf:heartbeat:IPaddr2):         Started node3.cluster.local

pcmk__native_allocate: VirtualIP allocation score on control1.cluster.local: 0
pcmk__native_allocate: VirtualIP allocation score on node3.cluster.local: 0
pcs constraint config
$ pcs constraint config
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:

control1 노드(Standby->Active)

pcs constraint location VirtualIP prefers control1.cluster.local=200
root@control1:~$ pcs resource status                     
  * VirtualIP   (ocf:heartbeat:IPaddr2):         Started control1.cluster.local
root@control1:~$ pcs constraint config
Location Constraints:
  Resource: VirtualIP
    Enabled on:
      Node: control1.cluster.local (score:200)
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
root@control1:~$ crm_simulate -sL     
[ control1.cluster.local node3.cluster.local ]

VirtualIP       (ocf:heartbeat:IPaddr2):         Started control1.cluster.local

pcmk__native_allocate: VirtualIP allocation score on control1.cluster.local: 200
pcmk__native_allocate: VirtualIP allocation score on node3.cluster.local: 0
root@control1:~$ pcs status           
Cluster name: hacluster
Cluster Summary:
  * Stack: corosync
  * Current DC: node3.cluster.local (version 2.1.2-ada5c3b36e2) - partition with quorum
  * Last updated: Tue Feb  7 11:03:22 2023
  * Last change:  Tue Feb  7 11:02:51 2023 by root via cibadmin on control1.cluster.local
  * 2 nodes configured
  * 1 resource instance configured

Node List:
  * Online: [ control1.cluster.local node3.cluster.local ]

Full List of Resources:
  * VirtualIP   (ocf:heartbeat:IPaddr2):         Started control1.cluster.local

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
root@control1:~$ ip addr
...
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:0d:82:e9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.51/24 brd 192.168.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet 192.168.0.60/24 brd 192.168.0.255 scope global secondary enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe0d:82e9/64 scope link 
       valid_lft forever preferred_lft forever
...

node3 노드 (Standby)

pcs constraint location VirtualIP prefers node3.cluster.local=100
root@node3:~$ pcs constraint config
Location Constraints:
  Resource: VirtualIP
    Enabled on:
      Node: control1.cluster.local (score:200)
      Node: node3.cluster.local (score:100)
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
root@node3:~$ crm_simulate -sL
[ control1.cluster.local node3.cluster.local ]

VirtualIP       (ocf:heartbeat:IPaddr2):         Started control1.cluster.local

pcmk__native_allocate: VirtualIP allocation score on control1.cluster.local: 200
pcmk__native_allocate: VirtualIP allocation score on node3.cluster.local: 100

 

참고URL

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

 

728x90

'리눅스' 카테고리의 다른 글

[리눅스] shasum 명령어  (0) 2023.02.16
[리눅스] java(jdk) 설치 및 java 환경 설정  (0) 2023.02.07
[리눅스] ubuntu에 pacemaker 구성하기  (0) 2023.02.07
[리눅스] sudo 사용법  (0) 2023.02.06
[리눅스] date 명령어  (0) 2023.02.03