자동 가상 IP 복구 배치

Corosync 및 Pacemaker는 Private Cloud Appliance와 통합하고 보조 IP의 페일오버를 테스트하기 전에 클러스터에 설치해야 합니다.

클러스터에 설치

  1. Corosync 및 Pacemaker 패키지를 설치합니다.
    yum install corosync pacemaker pcs
    yum install python36-oci-cli
    yum 저장소에 연결하기 위한 실습 요구사항에 따라 프록시를 설정합니다.
  2. 클러스터의 하트백 구성 백업을 수행합니다.
    sudo cp /usr/lib/ocf/resource.d/heartbeat/IPaddr2 /usr/lib/ocf/resource.d/heartbeat/IPaddr2.bck
  3. 클러스터에 대한 고객 보안 요구에 따라 정의된 firewalld를 실행합니다.
  4. /etc/hosts 파일을 업데이트하여 모든 클러스터 노드에 대한 노드의 IP 및 호스트 이름 정보를 추가하여 로컬 DNS 시스템을 설정합니다.
    예:
    <Instance-Node1 Private IP> node1-name
    <Instance-Node2 Private IP> node2-name
  5. 유저를 생성하고 암호를 설정합니다.
    sudo passwd hacluster
  6. 클러스터 서비스를 시작하고 사용으로 설정합니다.
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    sudo systemctl enable corosync
    sudo systemctl enable pcsd
  7. 클러스터 인증을 확인합니다.
    sudo pcs cluster auth <node1-name> <node2-name>
    <node1-name> : Cluster Node1/Hostname
    <node2-name> : Cluster Node1/Hostname
    예:
    sudo pcs cluster auth a-node1 a-node2
    Username: hacluster
    Password: 
    a-node1: Authorized
    a-node2: Authorized
  8. 클러스터를 설정합니다.
    sudo pcs cluster setup --name <clustername> <node1-name> <node2-name>
    <clustername> : Cluster Name
    <node1-name> : Cluster Node1/Hostname
    <node2-name> : Cluster Node1/Hostname
    예:
    sudo pcs cluster auth a-node1 a-node2
    Username: hacluster
    Password: 
    a-node1: Authorized
    a-node2: Authorized
    [root@a-node1 opc] # sudo pcs cluster setup HACluster a-node1 a-node2
    Error: A cluster name (--name <name>) is required to setup a cluster
    [root@a-node1 opc] # sudo pcs cluster setup --name HACluster a-node1 a-node2
    Destroying cluster on nodes: a-node1, a-node2...
    a-node1: Stopping Cluster (pacemaker)...
    a-node2: Stopping Cluster (pacemaker)...
    a-node2: Successfully destroyed cluster
    a-node1: Successfully destroyed cluster
    Sending 'pacemaker_remote authkey' to 'a-node1', 'a-node2'
    a-node1: successful distribution of the file 'pacemaker_remote authkey'
    a-node2: successful distribution of the file 'pacemaker_remote authkey'
    Sending cluster config files to the nodes...
    a-node1: Succeeded
    a-node2: Succeeded
    Synchronizing pcsd certificates on nodes a-node1, a-node2...
    a-node1: Success
    a-node2: Success
    Restarting pcsd on the nodes in order to reload the certificates...
    a-node1: Success
    a-node2: Success
  9. 임의의 클러스터 노드에서 모든 클러스터 노드에 대해 클러스터를 시작합니다.
    sudo pcs cluster start --name clustername -–all
    예:
    sudo pcs cluster start --name HACluster --all
    a-node1: Starting Cluster (corosync)...
    a-node2: Starting Cluster (corosync)...
    a-node2: Starting Cluster (pacemaker)...
    a-node1: Starting Cluster (pacemaker)...
  10. pacemaker 속성을 설정합니다.
    sudo pcs property set stonith-enabled=false
    sudo pcs property set no-quorum-policy=ignore
  11. 실행 중인 클러스터 상태를 확인합니다.
    sudo pcs cluster status
    예:
    sudo pcs cluster status
    Cluster Status:
    Stack: corosync
    Current DC: a-node2 (version 1.1.23-1.0.1.el7_9.1-9acf116022) - partition with quorum
    Last updated: Fri Aug 19 03:07:25 2022
    Last change: Fri Aug 19 03:06:13 2022 by root via cibadmin on a-node1
    2 nodes configured
    0 resource instances configured
    PCSD Status:
    a-node1: Online
    a-node2: Online
  12. 모든 클러스터 노드에서 Private Cloud Appliance 설정에 따라 OCI 구성을 설정합니다. 구성 프로파일 설정은 Private Cloud Appliance에 연결하는 데 매우 중요합니다.
    예: i.e. /root/.oci/config
    [DEFAULT]
    user=<User-ocid1>
    fingerprint=<fingerprint>
    key_file=<Key-Location>
    tenancy=<Tenancy ocid1>
    region=<PCA FQDN>

클러스터에 대한 하트비트 설정 정의 및 VIP 페일오버에 대한 Private Cloud Appliance X9-2 인스턴스와 통합

  1. 프라이빗 클라우드 어플라이언스 실행:
    sudo sed -i '633i\export OCI_CLI_CERT_BUNDLE=/root/.oci/ca-chain.cert.pem\' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    대신 Private Cloud Appliance 인증서를 assign-private-ip 명령과 함께 전달할 수 있습니다. 예: --cert-bundle <Certification Location for Private Cloud Appliance> 옵션.
    다음은 Oracle Linux 7.9에 대한 예입니다. Oracle Linux 8 및 Centos 운영 체제의 경우 IPaddr2에서 add_interface () 함수 행 번호를 찾고 Linux HA IPaddr2 리소스 항목을 업데이트할 때 이에 따라 행 번호를 변경합니다.
    sudo sed -i '628i\server="`hostname -s`"\' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '629i\node1vnic="ocid1.vnic.pca.NODE1-vNIC-OCID"\' 
    /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '630i\node2vnic="ocid1.vnic.pca.NODE2-vNIC-OCID"\' 
    /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '631i\vnicip="10.212.15.13"\' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '632i\export LC_ALL=C.UTF-8\' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '633i\export LANG=C.UTF-8\' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '633i\export OCI_CLI_CERT_BUNDLE=/root/.oci/ca-chain.cert.pem\' 
    /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '634i\touch /tmp/error.log\' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '635i\##### OCI/IPaddr Integration\' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '636i\ if [ $server = "node1" ]; then\' 
    /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '637i\ oci network vnic assign-private-ip --unassign-if-already-assigned --vnic-id $node1vnic --ip-address $vnicip >/tmp/error.log 2>&1\' 
    /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '638i\ else \' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '639i\ oci network vnic assign-private-ip --unassign-if-already-assigned --vnic-id $node2vnic --ip-address $vnicip >/tmp/error.log 2>&1\' 
    /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    sudo sed -i '640i\ fi \' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    
  2. IPaddr2에서 코드에 대한 수정 사항을 구현합니다.
    • ocid1.vnic.pca.NODE1-vNIC-OCIDocid1.vnic.pca.NODE2-vNIC-OCID를 고유 OCI VNIC(가상 네트워크 인터페이스 카드) OCID로 바꿉니다.
    • node1node2 호스트 이름 항목을 고유 클러스터 노드 호스트 이름으로 바꿉니다.
    • OCI_CLI_CERT_BUNDLE에서 Private Cloud Appliance에 대한 CERT 번들 위치를 정의합니다.
    • VNIC IP의 경우 구성, 서브넷, VCN에 따라 VNIC IP를 정의하고, 이 IP가 고유한 IP이며 다른 VNIC에 할당되지 않았는지 확인합니다.

클러스터 리소스 설정

클러스터 리소스를 설정하려면 다음을 실행합니다.

pcs resource create <Cluster-Resource-Name> ocf:heartbeat:IPaddr2 ip=10.212.15.13 cidr_netmask=24 op monitor interval=20

참고:

  • Pacemaker 명령의 cidr_netmask=24은 서브넷 크기 /24에 따라 달라집니다.
  • IP=10.212.15.13는 보조 전용 IP입니다.

예:

pcs status
Cluster name: HACluster
Stack: corosync
Current DC: a-node2 (version 1.1.23-1.0.1.el7_9.1-9acf116022) - partition with quorum
Last updated: Fri Aug 19 03:34:51 2022
Last change: Fri Aug 19 03:34:44 2022 by root via cibadmin on a-node1
2 nodes configured
1 resource instance configured
Online: [ a-node1 a-node2 ]
Full list of resources:
HAFailover (ocf::heartbeat:IPaddr2): Started a-node1
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled

보조 IP의 페일오버 테스트

보조 IP 실행의 페일오버를 테스트하려면 다음을 수행합니다.

sudo pcs resource move <cluster-name> <node2-name>
<clustername> : Cluster Name
<node2-name> : Cluster Node1/Hostname

예를 들면 다음과 같습니다.

sudo pcs resource move HAFailover a-node2

성공한 페일오버 확인

리소스는 node2에서 시작해야 합니다. 페일오버 성공을 확인하려면 다음을 실행합니다.

# pcs status