リファレンス

デプロイメント用のAnsibleインベントリ・ファイルを生成する代替方法

Ansibleプレイブックoracle.gghub.onboardingでは、代替メソッドを使用して、デプロイメント用のAnsibleインベントリ・ファイルを生成できます。

代替方法では、ユーザー・プロンプトのかわりに、すべての必須値に対するレスポンス・ファイルが使用されます。テンプレート・レスポンス・ファイルは、GGHubコレクション・ディレクトリで提供され、プレイブックoracle.gghub.onboardingで更新して使用する必要があります。

指定されたテンプレート・レスポンス・ファイルのコピーをコレクション・ディレクトリから作成し、すべてのパラメータ値を入力します。

ノート:

YAML構文に従うレスポンス・ファイルのパラメータ値の前に空白が必要です。YAML仕様では、キーと値のペアはコロンとスペースでマークされます。たとえば、gg_deployment_name: maahubです
(gghub) [~]$ cd /u01/maagghub
(gghub) [~]$ cp gghub-ansible-collection/gghub_deploy.yml
 gghub-ansible-collection/gghub_maahub.yml
(gghub) [~]$ vi gghub-ansible-collection/gghub_maahub.yml

次のようにレスポンス・ファイルを使用してプレイブックoracle.gghub.onboardingを実行し、Ansibleインベントリ・ファイルを生成します。

(gghub) [~]$ ansible-playbook oracle.gghub.onboarding
 -i /u01/maagghub/collections/ansible_collections/oracle/gghub/inventory/localhost
 -e @/u01/maagghub/gghub-ansible-collection/gghub_maahub.yml

プレイブックoracle.gghub.onboardingがレスポンス・ファイルを使用して実行されると、AnsibleボールトおよびGoldenGate管理ユーザー・パスワードの入力のみが求められます。

プライマリGGHubまたはスタンバイGGHubのみを構成する代替デプロイメント・オプション

プライマリGGHubまたはスタンバイGGHubのみを最初にデプロイする必要がある場合は、limitオプションを使用し、Ansibleインベントリ・ファイルからプライマリまたはスタンバイ・グループ名を指定します。limitオプションは、プレイブックの実行をインベントリ内のホストの特定のサブセットに制限します。

次の例では、Ansible自動化は、limitオプションを使用してGGHubリソースをプライマリGGHubクラスタにのみデプロイします。ACFSファイル・システムが作成されます。

(gghub) [~]$ ansible-playbook oracle.gghub.deploy
 -i /u01/maagghub/inventory/maahub.yml --limit maahuba -e @/u01/maagghub/inventory/maahub.key
 --ask-vault-pass

前述の例でプライマリGGHubのみがデプロイされた場合、スタンバイGGHubデプロイメントおよびACFSレプリケーションの設定に進むには、limitオプションを指定せずにデプロイ・プレイブックを実行します。Ansibleは、プライマリGGHubに対してすでに実行されているアクションをスキップし、スタンバイGGHubおよびAFCSレプリケーションのみを構成します。

(gghub) [~]$ ansible-playbook oracle.gghub.deploy
 -i /u01/maagghub/inventory/maahub.yml -e @/u01/maagghub/inventory/maahub.key
 --ask-vault-pass

GGHubデプロイメントの検証

デプロイメントの完了後、プレイブックoracle.gghub.verifyを実行して、GGHubクラスタウェア・リソースの一部のGGHub構成情報およびステータスを表示できます。

(gghub) [~] $ ansible-playbook oracle.gghub.verify
 -i /u01/maagghub/inventory/maahub.yml --ask-vault-password

出力例:

TASK [Display GoldeGate status] ************************************************
ok: [maahuba1] => {
    "msg": [
        {
            "grid": {
                "activeVersion": "19.0.0.0.0",
                "cluster_nodes": "maahuba1,maahuba2",
                "homePath": "/u01/app/19.0.0.0/grid",
                "master_node": "maahuba1",
                "orabase": "/u01/app/grid",
                "patchVersion": "19.26.0.0.0",
                "scanListenerTCPPorts": "1521",
                "state": "NORMAL",
                "user": "grid"
            },
            "system": {
                "crs": true,
                "inst_group": "oinstall",
                "inventory_loc": "/u01/app/oraInventory",
                "oracle_ahf_loc": "/u01/app/oracle.ahf",
                "scan_name": "maahuba-scan.clientsubnet.vcnfraans1.oraclevcn.com"
            }
        },
        {
            "acfs": {
                "device": "/dev/asm/maahub-207",
                "diskgroup": "data",
                "primary_hostname": "maahuba-app-vip1.clientsubnet.vcnfraans1.oraclevcn.com",
                "primary_path": "/opt/oracle/gghub/maahub",
                "retries_made": "0",
                "site": "primary",
                "standby_connect_string": "grid@maahubb-app-vip1.clientsubnet.vcnfraans1.oraclevcn.com",
                "standby_path": "/opt/oracle/gghub/maahub",
                "status": "running",
                "volume": "maahub"
            },
            "appvip": {
                "name": "maahuba-app-vip1"
            },
            "crs_status": {
                "acfs_primary": true,
                "acfs_standby": true,
                "ora_acfs": true,
                "sshd_restart": true,
                "xag_goldengate": true
            },
            "goldengate": {
                "admin_user": "oggadmin",
                "file_system": "acfs_primary,nginx",
                "homePath": "/u01/app/oracle/goldengate/gg23ai",
                "name": "maahub",
                "service_manager_port": "9100",
                "xag_home": " /u01/app/grid/xag"
            }
        },
        "",
        ""
    ]
}

GGHub Ansibleプレイブックのoracle.gghub.maa_ha関数

プレイブックoracle.gghub.maa_haには、様々なタスクを実行するための複数の関数が用意されています。

これらの追加関数は、プレイブックoracle.gghub.maa_haのタグの形式で使用できます。次に示すように、プレイブック内の使用可能なタグをリストします。

(gghub) [~] $ ansible-playbook oracle.gghub.maa_ha
 -i /u01/maagghub/inventory/maahub.yml  --list-tags

次の項では、特定のタグ名を使用して起動されるプレイブックoracle.gghub.maa_haの一部の関数について説明します。

GGHubクラスタウェア・リソースの再配置

GoldenGate ExtractプロセスおよびReplicatプロセスを構成する前に、GGHubクラスタウェア・リソースの高可用性および成功したロール・リバーサル機能を検証することをお薦めします。

プレイブックoracle.gghub.maa_haは、GGHubクラスタのアクティブ・ノードから使用可能なノードにGGHubクラスタウェア・リソースを再配置する機能を提供します。

プレイブックoracle.gghub.maa_haの再配置機能により、GGHubクラスタ・ノードのローリング計画メンテナンスも容易になります。

次のステップを実行して、GGHubクラスタウェア・リソースをアクティブ・ノードからクラスタ内の使用可能なノードに再配置します:

ステップ1. プライマリGGHubクラスタウェア・リソースの再配置

「Ansibleを使用したGGHubデプロイメントのトラブルシューティング」の「プライマリおよびスタンバイのGGHubクラスタウェア・リソースのステータスの確認」の項にあるコマンド例を使用して、使用可能なノードに再配置する前に、プライマリGGHubクラスタウェア・リソースのステータスを検証します。

タグacfs_relocate_primaryを含むAnsibleプレイブックoracle.gghub.maa_haを実行して、プライマリGGHubクラスタウェア・リソースをアクティブ・ノードからプライマリ・クラスタ内の使用可能なノードに再配置します。

(gghub) [~]$ ansible-playbook oracle.gghub.maa_ha
 -i /u01/maagghub/inventory/maahub.yml  --tags acfs_relocate_primary

再配置タスクの完了後に、GGHubクラスタウェア・リソースのステータスを確認します。使用可能なノードで、すべてのリソースがオンラインであることを確認します。

ステップ2. スタンバイGGHubクラスタウェア・リソースの再配置

「Ansibleを使用したGGHubデプロイメントのトラブルシューティング」の「スタンバイGGHubクラスタウェア・リソースのステータス」の項にあるコマンド例を使用して、使用可能なノードに再配置する前に、スタンバイGGHubクラスタウェア・リソースのステータスを検証します。

タグacfs_relocate_standbyを含むAnsibleプレイブックoracle.gghub.maa_haを実行して、スタンバイGGHubクラスタウェア・リソースをアクティブ・ノードからスタンバイ・クラスタ内の使用可能なノードに再配置します。

(gghub) [~]$ ansible-playbook oracle.gghub.maa_ha
 -i /u01/maagghub/inventory/maahub.yml  --tags acfs_relocate_standby

再配置タスクの完了後に、GGHubクラスタウェア・リソースのステータスを確認します。使用可能なノードで、すべてのリソースがオンラインであることを確認します。

GGHubロール・リバーサル

プライマリGGHubのロールは、計画停止または計画外停止および障害時リカバリのためにスタンバイGGHubに戻すことができます。ACFSレプリケーションの方向は、このプロセス中に逆になります。タグacfs_role_reversalを含むAnsibleプレイブックoracle.gghub.maa_haを使用して、GGHubロール・リバーサルを実行できます。

ロール・リバーサルを実行するには、次のようにプレイブックoracle.gghub.maa_haを実行します:

(gghub) [~]$ ansible-playbook oracle.gghub.maa_ha
 -i /u01/maagghub/inventory/maahub.yml  --tags acfs_role_reversal 

「Ansibleを使用したGGHubデプロイメントのトラブルシューティング」の「プライマリおよびスタンバイのGGHub Clusterwareリソース・ステータスの確認」の項のコマンド例を使用して、新しいプライマリおよびスタンバイのGGHubクラスタ上のリソースのステータスを検証します。

ロール・リバーサルが完了すると、新しいプライマリGGHubにacfs_primary CRSリソース状態がONLINEと表示されます。

「Ansibleを使用したGGHubデプロイメントのトラブルシューティング」の「GGHub ACFSマウント・レプリケーション・ステータスの確認」のコマンド例を使用して、新しいプライマリおよびスタンバイのGGHubクラスタ上のACFSレプリケーション・ステータスを検証します。

GGHubクラスタウェア・リソースの停止および起動

GGHubクラスタウェア・リソースは、Ansibleプレイブックoracle.gghub.maa_haで提供される特定のタグを使用して、プライマリおよびスタンバイのGGHubクラスタで停止および起動できます。

プレイブックoracle.gghub.maa_haを実行して、このタスクを次のように実行します:

(gghub) [~]$ ansible-playbook oracle.gghub.maa_ha
 -i /u01/maagghub/inventory/maahub.yml  --tags gghub_stop

(gghub) [~]$ ansible-playbook oracle.gghub.maa_ha
 -i /u01/maagghub/inventory/maahub.yml  --tags gghub_start

プライマリまたはスタンバイのGGHubクラスタ・リソースのみを停止するには、次のタグを使用します。

(gghub) [~]$ ansible-playbook oracle.gghub.maa_ha
 -i /u01/maagghub/inventory/maahub.yml  --tags gghub_stop_primary

(gghub) [~]$ ansible-playbook oracle.gghub.maa_ha
 -i /u01/maagghub/inventory/maahub.yml  --tags gghub_stop_standby

GGHubクラスタ・リソースの1つが停止した場合は、gghub_startタグを使用して再起動します。Ansible自動化によって、停止しているGGHubクラスタウェア・リソースのみが検出され、起動されます。

Ansibleを使用したGoldenGate Microservicesデプロイメントのパスワードの変更

GoldenGate Microservicesデプロイメントのパスワードを更新するには、GGHub AnsibleコレクションからAnsibleプレイブックoracle.gghub.change_passwordを実行します。

このプレイブックでは、Ansibleボールト・パスワードの入力が求められ、新しいGoldenGate Microservicesデプロイメントのパスワードの入力が求められます。

プレイブックでは、Ansibleボールトの既存のGoldenGate Microservicesデプロイメント・パスワードが使用され、正常に変更されると、AnsibleボールトでGoldenGate Microservicesデプロイメント・パスワードが更新されます。

(gghub) [~]$ ansible-playbook oracle.gghub.change_password
 -i /u01/maagghub/inventory/maahub.yml --ask-vault-password

NGINXリバース・プロキシおよび証明書の構成の理解

この項では、GGHubクラスタでのNGINXリバース・プロキシ構成および証明書の使用方法について説明します。

GoldenGateリバース・プロキシ機能を使用すると、GoldenGateデプロイメントに関連付けられたすべてのGoldenGateマイクロサービスに対応する単一のアクセス先を使用できます。リバース・プロキシを使用しないと、GoldenGateデプロイメント・マイクロサービスは、ホスト名またはIPアドレスと個別のポート番号で構成されるサービスごとに1つずつのURLを使用してアクセスされます。たとえば、サービス・マネージャにアクセスするためにhttp://gghub.example.com:9100を使用し、管理サーバーにはhttp://gghub.example.com:9101、2番目のサービス・マネージャにはhttp://gghub.example.com:9110を使用してアクセスするようになります。

Grid Infrastructure Agent (XAG)を使用して高可用性(HA)構成のOracle GoldenGateを実行する場合、GoldenGateサービス・マネージャでは複数のデプロイメントを管理できないとう制限があります。この制限のため、サービス・マネージャ/デプロイメントのペアごとに、個別の仮想IPアドレス(VIP)を作成するようにお薦めします。このようにすると、VIPを使用してマイクロサービスに直接アクセスできます。

リバース・プロキシにより、ポート番号はデプロイメント名とホスト名のVIPに置き換えられるため、マイクロサービスに接続するためのポート番号が不要になります。たとえば、コンソールにWebブラウザ経由で接続するには、次のURLを使用します。

GoldenGateサービス URL
サービス・マネージャ https://gghub.example.com:443
管理サーバー https://gghub.example.com:443/<deployment_name>/adminsrvr
分散サーバー https://gghub.example.com:443/<deployment_name>/distsrvr
パフォーマンス・メトリック・サーバー https://gghub.example.com:443/<deployment_name>/pmsrvr
レシーバ・サーバー https://gghub.example.com:443/<deployment_name>/recvsrvr

複数のサービス・マネージャを実行する場合は、次の手順によって、サービス・マネージャごとに個別のVIPを使用する構成を用意します。NGINXは、VIPを使用してHTTPS接続リクエストのルーティング先になるサービス・マネージャを決定します。

SSL証明書は、クライアントがNGINX経由で接続するサーバーを認証するために必要です。続行する前に、システム管理者に連絡して、会社の標準に従ってサーバー証明書を作成または取得してください。VIPとサービス・マネージャのペアごとに、個別の証明書が必要です。

Ansible自動化は、SSL接続を使用してNGINXリバース・プロキシを構成し、すべての外部通信がセキュアにします。Ansible自動化では、最初にNGINX構成に自己署名証明書を使用します。証明書およびキー・ファイルは、次のプロセスに従って本番デプロイメントの企業セキュリティ標準に従って置換できます

Ansible自動化がデプロイするNGINX HTTPS構成の詳細は、NGINXのドキュメント(https://nginx.org/en/docs/http/configuring_https_servers.html)を参照してください。

ノート:

CA署名付き証明書の共通名は、NGINXで使用されるターゲット・ホスト名/VIPと一致している必要があります。