Distribuisci failover automatico IP virtuale

Corosync e Pacemaker devono essere installati sui cluster prima dell'integrazione con Private Cloud Appliance e del failover di test dell'IP secondario.

Installa su cluster

  1. Installare i pacchetti Corosync e Pacemaker.
    yum install corosync pacemaker pcs
    yum install python36-oci-cli
    Imposta il proxy in base ai requisiti del laboratorio per raggiungere i repository yum.
  2. Eseguire il backup della configurazione di heartback dei cluster.
    sudo cp /usr/lib/ocf/resource.d/heartbeat/IPaddr2 /usr/lib/ocf/resource.d/heartbeat/IPaddr2.bck
  3. Eseguire firewalld, definito in base alle esigenze di sicurezza del cliente per il cluster.
  4. Aggiornare il file /etc/hosts per aggiungere le informazioni su IP e nome host del nodo per tutti i nodi cluster per impostare un sistema DNS locale.
    Esempio:
    <Instance-Node1 Private IP> node1-name
    <Instance-Node2 Private IP> node2-name
  5. Creare un utente e impostare una password.
    sudo passwd hacluster
  6. Avviare e abilitare i servizi cluster.
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    sudo systemctl enable corosync
    sudo systemctl enable pcsd
  7. Verificare l'autenticazione del cluster.
    sudo pcs cluster auth <node1-name> <node2-name>
    <node1-name> : Cluster Node1/Hostname
    <node2-name> : Cluster Node1/Hostname
    Esempio:
    sudo pcs cluster auth a-node1 a-node2
    Username: hacluster
    Password: 
    a-node1: Authorized
    a-node2: Authorized
  8. Installazione cluster.
    sudo pcs cluster setup --name <clustername> <node1-name> <node2-name>
    <clustername> : Cluster Name
    <node1-name> : Cluster Node1/Hostname
    <node2-name> : Cluster Node1/Hostname
    Esempio:
    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. Avviare il cluster per tutti i nodi del cluster da uno qualsiasi dei nodi del cluster.
    sudo pcs cluster start --name clustername -–all
    Esempio:
    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. Imposta la proprietà pacemaker.
    sudo pcs property set stonith-enabled=false
    sudo pcs property set no-quorum-policy=ignore
  11. Verificare lo stato del cluster in esecuzione.
    sudo pcs cluster status
    Esempio:
    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. Imposta la configurazione OCI in base alle impostazioni di Private Cloud Appliance su tutti i nodi del cluster. L'impostazione del profilo di configurazione è molto importante per connettersi a Private Cloud Appliance.
    Esempio: i.e. /root/.oci/config
    [DEFAULT]
    user=<User-ocid1>
    fingerprint=<fingerprint>
    key_file=<Key-Location>
    tenancy=<Tenancy ocid1>
    region=<PCA FQDN>

Definire le impostazioni di heartbeat sui cluster e eseguire l'integrazione con le istanze di Private Cloud Appliance X9-2 per il failover VIP

  1. Per l'esecuzione di Private Cloud Appliance:
    sudo sed -i '633i\export OCI_CLI_CERT_BUNDLE=/root/.oci/ca-chain.cert.pem\' /usr/lib/ocf/resource.d/heartbeat/IPaddr2
    In alternativa, è possibile passare il certificato Private Cloud Appliance con il comando assign-private-ip. Ad esempio: opzione --cert-bundle <Certification Location for Private Cloud Appliance>.
    Ecco un esempio per Oracle Linux 7.9. Per i sistemi operativi Oracle Linux 8 e Centos, cercare il numero della linea di funzione add_interface () in IPaddr2 e modificare il numero della linea di conseguenza durante l'aggiornamento delle voci della risorsa IPaddr2 HA di Linux.
    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. Implementare le modifiche per il codice in IPaddr2.
    • Sostituire ocid1.vnic.pca.NODE1-vNIC-OCID e ocid1.vnic.pca.NODE2-vNIC-OCID con gli OCID (scheda di interfaccia di rete virtuale) della VNIC OCI personali.
    • Sostituire le voci dei nomi host node1 e node2 con nomi host clusternodes personalizzati.
    • In OCI_CLI_CERT_BUNDLE, definire la posizione del bundle CERT per Private Cloud Appliance.
    • Per quanto riguarda l'IP VNIC, definire l'IP VNIC in base alla configurazione, alla subnet e alla VCN, quindi assicurarsi che si tratti di un IP univoco e non allocato ad altre VNIC.

Imposta la risorsa cluster

Per impostare la risorsa cluster, eseguire le operazioni riportate di seguito.

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

Nota:

  • Il comando cidr_netmask=24 nel comando Pacemaker dipende dalla dimensione della subnet /24.
  • ip=10.212.15.13 è l'IP privato secondario.

Esempio:

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

Test del failover dell'IP secondario

Per eseguire il test del failover dell'esecuzione dell'IP secondario:

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

Ad esempio:

sudo pcs resource move HAFailover a-node2

Verifica failover riuscito

Le risorse devono essere avviate su node2. Per verificare il failover riuscito, eseguire le operazioni riportate di seguito.

# pcs status