タスク2: GGHubクラスタおよびAnsibleオーケストレーション・ホストの準備

このタスクを完了するには、次のステップを実行します。

  • ステップ2.1 - GGHubのプライマリおよびスタンバイ・クラスタのデプロイ
  • ステップ2.2 - Ansibleオーケストレーション・ホストのデプロイ
  • ステップ2.3 - Ansibleオーケストレーション・ホストへの必要なOracle GoldenGateソフトウェアのダウンロード

ステップ2.1 - GGHubのプライマリおよびスタンバイ・クラスタのデプロイ

各GGHubクラスタは、Grid Infrastructureインストレーションおよびアップグレード・ガイドfor Linuxの説明に従って、ジョブ・ロール分離を使用して2ノードのOracle Grid Infrastructureシステムとしてデプロイする必要があります。



GGHubクラスタの完全な要件

プライマリおよびスタンバイのGGHubクラスタは、次の要件を満たす必要があります:

  1. Oracle Linux 8オペレーティング・システムおよび19c Grid Infrastructureソフトウェアを含むGGHubクラスタを最新のリリース更新とともにデプロイします。
  2. 次のように、GGHubクラスタ・ノードで必要なOSユーザーを構成します:
    • Oracle Clusterwareソフトウェア所有者(通常、ジョブ・ロール分離インストールの場合はgrid)。これはClusterwareのインストールの結果として存在します。
    • Oracle GoldenGateソフトウェア所有者(通常、oracle)。これは、Ansible自動化によってGoldenGateソフトウェアのインストールに使用されます。
    • opcなどのGGHubオーケストレーション・ユーザー。これにはroot OSユーザーへの特権アクセス(su/sudo)があります。
      • Ansibleオーケストレーション・ホストのAnsibleオーケストレーション・ユーザーは、パスワードなしのSSHキー構成を使用してこのOSユーザーとして各GGHubノードにログインし、必要に応じて、コマンドをrootgridまたはoracleとして実行します。
      • このパスワードなしのSSHキー構成は、後のステップで実行します。
  3. 未使用のアプリケーション仮想IPアドレス(APP VIP)を、クラスタウェア・パブリック・ネットワーク上の各GGHubクラスタに割り当てます。
    • APP VIPは、Oracle Clusterwareで管理されるクラスタ・リソースであり、ノード障害が発生した場合または計画メンテナンスの場合には別のクラスタ・ノードに移行されます。
    • APP VIPは、ファイル・システムが現在マウントされている正しいスタンバイGGHubノードにプライマリGGHub ACFSレプリケーション・プロセスがGoldenGate証跡ファイルを確実に送信するために使用されます。これは、APP VIPとACFS CRSリソースを同じノードに配置することで実現されます。
  4. ACFSレプリケーションをサポートするために、プライマリおよびスタンバイのGGHubクラスタ間でgrid OSユーザーのパスワードなしのSSHキー構成を設定します。具体的には、次のものが必要です:
    SSH接続元 SSH接続先 用途
    各プライマリGGHubノードのgrid OSユーザー

    APP VIP名を使用する各スタンバイGGHubクラスタ・ノードのgrid OSユーザー

    ノート: すべてのスタンバイGGHubクラスタ・ノードのgridユーザーのknown_hostsファイルで、プライマリ・クラスタのAPP VIP名またはアドレスを各プライマリ・クラスタ・ノードのエントリに追加します

    ACFSスナップショット・ベースのレプリケーション
    各スタンバイGGHubノードのgrid OSユーザー

    APP VIP名を使用する各プライマリGGHubクラスタ・ノードのgrid OSユーザー

    ノート: すべてのプライマリGGHubクラスタ・ノードのgridユーザーのknown_hostsファイルで、スタンバイ・クラスタのAPP VIP名またはアドレスを各スタンバイ・クラスタ・ノードのエントリに追加します。

    ACFSレプリケーション方向が逆になっているか、GGHubスタンバイがプライマリに変換されている場合、ACFSスナップショット・ベースのレプリケーション。

    追加のガイダンスについては、Oracle ACFSレプリケーションに使用するためのsshの構成の手順に従って、プライマリ・ノードおよびスタンバイ・ノード間のSSH接続を構成します。

  5. ステージング・インストール・ファイルをサポートするために、10 GBの空きディスク領域を割り当てます。ソフトウェア・ステージング・ディレクトリは、GGHubデプロイメント時に指定されます。

    Ansible自動化は、指定されたステージング・ディレクトリにソフトウェア・ファイルをコピーしますが、一時的にGGHubオーケストレーション・ユーザーのホーム・ディレクトリを使用します。したがって、ステージング・ディレクトリに加えて、ユーザーのホーム・ディレクトリに少なくとも10 GBの空き領域が必要です。

  6. 次の表に示すように、必要なパッケージおよびpythonモジュールをインストールします:
    必要なモジュールおよびライブラリ 説明
    iptables-services

    nginx構成のAnsible自動化で必要

    python3.12

    Ansible自動化には、互換性のために最低限のpythonバージョン3.12が必要です。後のステップでは、Python 3.12インタプリタ・パスが必要です。

    python3.12-pip

    python 3.12インストールに関連付けられたpipパッケージ・マネージャ。

    lxml、packaging、pexpect

    Ansible自動化に必要なPythonモジュール。次のコマンドを使用してインストールします:

    $ python3.12 -m pip install lxml packaging pexpect

    詳細は、Oracle Linuxのドキュメントhttps://public-yum.oracle.com/oracle-linux-python.html#InstallFromAppStreamを参照してください

  7. 次のコマンドを特権ユーザーとして実行して、クラスタ・ノードでPython 3.12をデフォルト・バージョンとして使用するようにpython3を構成します:
    # update-alternatives --config python3
  8. NGINXバージョン1.24以降をインストールします。NGINXのドキュメントhttps://nginx.org/en/linux_packages.html#RHELに記載されているステップに従って、NGINXをインストールします。

    NGINX構成は、GGHubデプロイメント中にAnsible自動化によって実行されます。

  9. SELinuxをGGHubクラスタ・ノードで有効にすることを計画している場合の互換性およびソフトウェア要件については、My Oracle Supportドキュメント3102722.1のOracle Automatic Storage Management Cluster File System (ACFS)レプリケーションおよびセキュリティ強化Linux (SELinux)を参照してください。

ステップ2.2 - Ansibleオーケストレーション・ホストのデプロイおよびGGHub Ansibleコレクションの構成

Ansibleオーケストレーション・ホストとして機能する別のOracle Linux 8ホストをプロビジョニングします。この軽量オーケストレーション・ホストは、Ansibleプレイブックまたはスクリプトを実行し、GGHubノードにログインして、GGHubデプロイメントの自動化に役立つ特定のタスクを実行するために使用されます。

Ansibleオーケストレーション・ホストで次のステップを実行します:

  • ステップ2.2.1 - Ansibleに必要なパッケージのインストール
  • ステップ2.2.2 - Ansible環境の構成とGGHub Ansibleコレクションのインストール
  • ステップ2.2.3 - Ansibleオーケストレーション・ホストへの必要なOracle GoldenGateソフトウェアのダウンロード

ステップ2.2.1 - Ansibleに必要なパッケージのインストール

次の表に示す必要なパッケージをインストールします。必要なパッケージをインストールするには、Unbreakable Linux NetworkでOracle Linux 8チャネルにサブスクライブするか、Oracle Linux yumサーバーのWebサイトからyumリポジトリを構成します。

Oracle Linux Yumサーバーを使用するためのシステムの構成に従って、Ansibleオーケストレーション・ホストに必要なリポジトリを定義します。

Oracle Linux 8 Ansibleオーケストレーション・ホストのパッケージ リポジトリ
python3.12 ol8_appstream
python3.12-pip ol8_appstream
bzip2 ol8_baseos_latest

必要なyumリポジトリを定義した後、必要なパッケージをAnsibleオーケストレーション・ホストに特権ユーザーとしてインストールします。

$ sudo dnf install python3.12 python3.12-pip bzip2

追加のpythonパッケージおよびライブラリは、pipパッケージ・マネージャを使用して後のステップでインストールされます。デフォルトでは、pythonパッケージ索引(PyPI)リポジトリが使用されます。Ansibleオーケストレーション・ホストがhttps://pypi.orgからpythonパッケージ索引リポジトリにアクセスできるようにするか、承認された内部パッケージ・リポジトリを使用して必要なパッケージをpython環境にインストールできるようにします。

ステップ2.2.2 - Ansible環境の構成とGGHub Ansibleコレクションのインストール

次のサブステップを実行して、このタスクを完了します:

  • ステップ2.2.2.1 - Ansibleオーケストレーション・ユーザーの作成または識別
  • ステップ2.2.2.2 - GGHub Ansibleコレクションの取得
  • ステップ2.2.2.3 - Ansibleオーケストレーション・ホストでのデフォルトのPythonバージョンの更新
  • ステップ2.2.2.4 - pipパッケージ・マネージャがインストールされていることの確認
  • ステップ2.2.2.5 - GGHubコレクション・ディレクトリからのスクリプトpython_venv_activate.shの実行
  • ステップ2.2.2.6 - Python仮想環境のアクティブ化

ステップ2.2.2.1 - Ansibleオーケストレーション・ユーザーの作成または識別

Ansibleオーケストレーション・ホスト(ansibleなど)で、Ansibleインストールを所有し、すべてのAnsibleオーケストレーション・タスクを実行するために使用できる、権限のないOSユーザーを作成または識別します。

Ansibleオーケストレーション・ユーザーは、パスワードなしのsshを使用して各プライマリおよびスタンバイのGGHubノードのGGHubオーケストレーション・ユーザーにログインし、必要に応じてrootgridまたはoracleとしてコマンドを実行します。

Ansibleオーケストレーション・ホストでの後続のすべてのステップは、Ansibleオーケストレーション・ユーザーとして実行されます。

ステップ2.2.2.2 - GGHub Ansibleコレクションの取得

GGHub Ansibleコレクション(プレイブック、ロール、スクリプト、プラグインなどのAnsible自動化アセットを単一のバージョン管理ユニットにバンドルしたもの)は、MOSの記事KB858669 - 停止時間がゼロまたはほぼゼロのOracle GoldenGate MicroServices Architectureの高可用性からダウンロードできます。

この例では、/u01/maagghub/がAnsibleオーケストレーション・ホスト上のすべてのファイルをステージングするための最上位ディレクトリとして使用されています。

ダウンロードしたAnsibleコレクションを、Ansibleオーケストレーション・ホストの/u01/maagghub/gghub-ansible-collection/ディレクトリに直接抽出します。

$ mkdir -p /u01/maagghub 

$ cd /u01/maagghub

e.g.
unzip gghub-onprem-yyyymmdd.zip -d /u01/maagghub/gghub-ansible-collection
ステップ2.2.2.3 - Ansibleオーケストレーション・ホストでのデフォルトのPythonバージョンの更新

必要なpythonバージョンはpython3.12以降です。必要に応じて、Ansibleオーケストレーション・ホストでデフォルトのpythonバージョンを更新します。

$ sudo update-alternatives --config python3

There are 2 programs which provide 'python3'.

  Selection    Command
-----------------------------------------------
*  1           /usr/bin/python3.6
 + 2           /usr/bin/python3.12

Enter to keep the current selection[+], or type selection number: 2

Validate the python version. 

$ python3 --version
Python 3.12.11
ステップ2.2.2.4 - pipパッケージ・マネージャがインストールされていることの確認

次のpythonコマンドを使用してpipパッケージ・マネージャがインストールされているかどうかを確認します。このコマンドは、pipパッケージ・マネージャのバージョンをエラーなしで表示します。

$ python3.12 -m pip -V
pip 23.2.1 from /usr/lib/python3.12/site-packages/pip (python 3.12)
ステップ2.2.2.5 - GGHubコレクション・ディレクトリからのスクリプトpython_venv_activate.shの実行

python_venv_activate.shスクリプトは、Ansibleオーケストレーション・ホストで次の操作を実行します:

  • /u01/maagghub/ディレクトリの下にvenvansibleおよびcollectionsサブディレクトリを作成します。このディレクトリは、この例でpython仮想環境を作成するためのAnsibleベース・ディレクトリとして使用されます。
  • 'venv'という名前のPython仮想環境を作成します。

    同じ名前の仮想環境がすでに存在する場合、スクリプトは、他のステップをスキップしながら、仮想環境のMAA GGHubコレクションの更新を試行します。

  • 推奨パラメータ設定を使用して、ansible.cfg環境構成ファイルをディレクトリ/u01/maagghub/にコピーします。
  • python仮想環境をアクティブ化します。
  • pipパッケージ・マネージャを使用して、GGHubに必要なAnsibleパッケージおよびライブラリをインストールします。

    デフォルトでは、pipパッケージ・マネージャはpythonパッケージ索引(PyPI)リポジトリを使用します。Ansibleオーケストレーション・ホストがhttps://pypi.orgからpythonパッケージ索引リポジトリにアクセスしたり、承認された内部パッケージ・リポジトリを使用できるようにします。

  • python pipパッケージ・インストーラを更新します。
  • Ansible MAA GGHubコレクションを/u01/maagghub/collections/ディレクトリにインストールします。
  • GGHubコレクションのバージョンをリストします。
$ cd /u01/maagghub
$ sh gghub-ansible-collection/python_venv_activate.sh
ステップ2.2.2.6 - Python仮想環境のアクティブ化

Python仮想環境は、Ansibleオーケストレーション・ホストでAnsibleコマンドを実行する前にアクティブ化する必要があります。

$ source /u01/maagghub/venv/bin/activate

仮想環境のアクティブ化後、次に示すようにプロンプトが変更されます。

(gghub) [~]$

仮想環境ホームからpythonおよびansible実行可能ファイルが使用されていることを確認します。

$ which python ansible
/u01/maagghub/venv/bin/python
/u01/maagghub/venv/bin/ansible

GGHub Ansibleコレクションを新しいバージョンに更新します

すでにインストールされているGGHubコレクションを最新の使用可能なバージョンにアップグレードするには、ディレクトリ/u01/maagghub/gghub-ansible-collection-new/で新しいコレクションを抽出して次のコマンドを実行します:

$ cd /u01/maagghub
(gghub) [~]$ ansible-galaxy collection install /u01/maagghub/gghub-ansible-collection-new --upgrade

GGHubコレクションの特定のバージョンをインストールするには、コレクションをディレクトリ(/u01/maagghub/gghub-ansible-collection-version/など)に抽出し、次のコマンドを使用します:

(gghub) [~]$ ansible-galaxy collection install /u01/maagghub/gghub-ansible-collection-version:==X.Y.Z
ステップ2.3 - Ansibleオーケストレーション・ホストへの必要なOracle GoldenGateソフトウェアのダウンロード

Ansibleオーケストレーション・ホストにソフトウェア・リポジトリ・ディレクトリ(たとえば、/u01/maagghub/stage)を作成し、次のソフトウェアをAnsibleオーケストレーション・ホストにステージングします:

  1. Oracle GoldenGate 23aiソフトウェア:
    1. ドキュメントID 1645495.1を参照して、OGG v23aiパッチ・セット可用性ノート・セクションで最新のOracle GoldenGate 23aiパッチ・セット可用性ドキュメントを確認してください。
    2. 最新のパッチ・セット可用性ドキュメントから、"Oracle GoldenGate <OGGRU> for Oracle (完全インストール)"の説明を含むパッチをダウンロードします。
  2. Oracle Clusterware 19c用Oracle Grid Infrastructure Standalone Agent:
    1. ドキュメントOracle Clusterware用Oracle Grid Infrastructure Standalone Agentのダウンロードの項を使用して、エージェント・ソフトウェア・バージョン10.2以降をダウンロードします

後のステップで使用するため、ソフトウェア・リポジトリのディレクトリ・パスをメモします。