タスク7: スタンバイNGINXリバース・プロキシの構成

スタンバイNGINXリバース・プロキシを構成するには、次のステップを実行します。

  1. NGINXリバース・プロキシをインストールします。

    NGINXリバース・プロキシがまだインストールされていない場合は、https://nginx.org/en/linux_packages.htmlのインストール手順に従います。

    rootユーザーとして、Oracle GoldenGateデプロイメントのNGINX構成ファイルをプライマリ・クラスタ・ノードから単一のスタンバイ・ノード・ディレクトリ/etc/NGINX/conf.dにコピーします。

    たとえば:

    [root@dc2north01]# scp dc1north01:/etc/nginx/conf.d/ogg_north.conf
     /etc/nginx/conf.d

    スタンバイ・クラスタでは、プライマリ・クラスタとは異なるVIP名/アドレスが使用されるため、別のCA署名付き証明書が必要になります。続行する前に、システム管理者に連絡して、会社の標準に従ってサーバー証明書を作成または取得してください。VIPとサービス・マネージャのペアごとに、個別の証明書が必要です。

  2. NGINXのサーバー証明書をインストールします。

    ファイル権限400 (-r--------)があるrootが所有する/etc/nginx/sslディレクトリにサーバーCA証明書およびキー・ファイルをインストールします。

    # mkdir /etc/nginx/ssl
    # chmod 400 /etc/nginx/ssl

    プライマリ・クラスタからコピーしたリバース・プロキシ構成ファイルごとに、次の例を使用して証明書およびキー・ファイルの正しいファイル名を設定します。

    ssl_certificate /etc/nginx/ssl/gg-stby-vip1.pem;
    ssl_certificate_key /etc/nginx/ssl/gg-stby-vip1.key;

    CA署名付き証明書を使用する場合、ssl_certificate NGINXパラメータで指定した証明書は、1つのファイルにルート、中間およびCA署名付き証明書が含まれたものである必要があります。この順序は非常に重要です。順序が異なると、NGINXは起動に失敗し、エラー・メッセージが表示されます

    (SSL: error:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch).

    ルート証明書と中間証明書は、CA署名付き証明書プロバイダからダウンロードできます。

    単一ファイルは次のコマンド例を使用して生成できます。

    # cat CA_signed_cert.crt intermediate.crt root.crt
     > gg-stby-vip1.pem

    ssl_certificate_keyファイルは、CA署名付き証明書をリクエストする際に必要になる証明書署名リクエスト(CSR)の作成時に生成されるキー・ファイルです。

    プライマリ・クラスタからコピーしたリバース・プロキシ構成ファイル内のserver_nameパラメータを変更して、正しいVIP名に設定します。たとえば:

    変更前:

    server_name dc1north-vip1.example.com;

    変更後:

    server_name dc2north-vip1.example.com;

  3. NGINXを検証し再起動します。

    VIPはプライマリ・データベース・サービスが実行されるまでスタンバイ・システムで実行されないため、/etc/sysctl.confファイル内で設定する必要があるパラメータがあります。

    1. rootユーザーとして、/etc/sysctl.confに次の変更を加えます。

      # vi /etc/sysctl.conf
    2. 次のパラメータを追加します。

      # allow processes to bind to the non-local address
      
      net.ipv4.ip_nonlocal_bind = 1
    3. 変更した構成を再ロードします。

      # sysctl -p /etc/sysctl.conf
    4. NGINX構成ファイルを検証して構成内のエラーを検出します。ファイル内にエラーがある場合は、次のコマンドでそれらが報告されます。

      # nginx -t
      nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
      nginx: configuration file /etc/nginx/nginxconf test is successful
    5. 新しい構成でNGINXを再起動します。

      # systemctl restart nginx

    NGINX構成が完了したら、その構成ファイルおよび証明書を、他のスタンバイ・クラスタ・ノード上の一致するディレクトリにコピーします。

  4. NGINX Clusterwareリソースを作成します。

    Oracle Clusterwareは、NGINXリバース・プロキシの起動を制御して、GoldenGateデプロイメントの起動前に自動的にリバース・プロキシを起動できるようにする必要があります。

    NGINXリソースは、基礎となるネットワークCRSリソースに依存して作成され、その名前は、次のコマンドを使用して決定できます。

    $ $GRID_HOME/bin/crsctl stat res -w "TYPE == ora.network.type"|grep NAME
    NAME=ora.net1.network
    1. rootユーザーとして、次のコマンド例を使用して、NGINXを管理するClusterwareリソースを作成します。

      # $GRID_HOME/bin/crsctl add resource nginx -type generic_application
       -attr "ACL='owner:root:rwx,pgrp:root:rwx,other::r--,group:oinstall:r-x,user:oracle:rwx',EXECUTABLE_NAMES=nginx,START_PROGRAM='/bin/systemctl
       start -f nginx',STOP_PROGRAM='/bin/systemctl
       stop -f nginx',CHECK_PROGRAMS='/bin/systemctl
       status nginx' ,START_DEPENDENCIES='hard(ora.net1.network) pullup(ora.net1.network)',
       STOP_DEPENDENCIES='hard(intermediate:ora.net1.network)',
       RESTART_ATTEMPTS=0, HOSTING_MEMBERS='dc1north01,dc1north02', CARDINALITY=2"

      この例で作成したNGINXリソースは、指定した複数のクラスタ・ノード(HOSTING_MEMBERSで指定)で同時に実行されます。これは、GoldenGateサービス・マネージャのデプロイメントが複数構成されており、それらをクラスタ・ノード間で単独で移動できる場合にお薦めします。

    2. NGINX Clusterwareリソースの作成時には、GoldenGateデプロイメントの起動前にNGINXが起動されるように、GoldenGate XAGリソースを変更する必要があります。

      rootユーザーとして、次のコマンド例を使用してXAGリソースを変更します。

      現在の--filesystemsパラメータを確認します。

      # agctl config goldengate GGNORTH | grep "File System"
      
      File System resources needed: dbfsgg