自動仮想IPフェイルオーバーのデプロイ

Private Cloud Applianceと統合してセカンダリIPのフェイルオーバーをテストする前に、クラスタにCorosyncおよびPacemakerをインストールする必要があります。

クラスタへのインストール

  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. Cluster Setup
    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. すべてのクラスタ・ノードで、プライベート・クラウド・アプライアンス設定に従ってOCI構成を設定します。構成プロファイルの設定は、プライベート・クラウド・アプライアンスに接続するために非常に重要です。
    例: i.e. /root/.oci/config
    [DEFAULT]
    user=<User-ocid1>
    fingerprint=<fingerprint>
    key_file=<Key-Location>
    tenancy=<Tenancy ocid1>
    region=<PCA FQDN>

クラスタでのハートビート設定の定義およびVIPフェイルオーバーのプライベート・クラウド・アプライアンス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
    かわりに、assign-private-ipコマンドを使用してプライベート・クラウド・アプライアンス証明書を渡すことができます。例: --cert-bundle <Certification Location for Private Cloud Appliance>オプション。
    Oracle Linux 7.9の例を次に示します。Oracle Linux 8およびCentosオペレーティング・システムの場合、IPaddr2add_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-OCIDおよびocid1.vnic.pca.NODE2-vNIC-OCIDを、独自のOCI VNIC (仮想ネットワーク・インタフェース・カード) OCIDsに置き換えます。
    • node1およびnode2ホスト名エントリを独自のclusternodesホスト名に置き換えます。
    • OCI_CLI_CERT_BUNDLEで、Private Cloud ApplianceのCERTバンドルの場所を定義します。
    • VNIC IPの場合、構成、サブネット、VCNに従ってVNIC 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