プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Traffic Directorの管理
12c (12.2.1.3.0)
E90199-04
目次へ移動
目次

前
次

4 高可用性を提供するためのOracle Traffic Directorの構成

高可用性とは、必要なシステムまたはデバイスに対して、常にアクセス可能な状態を維持する能力のことです。高可用性アーキテクチャにより、サービスを中断することなく、ユーザーはシステムにアクセスできます。高可用性システムをデプロイすることで、システムの停止時間つまり使用不可の時間が最小化され、システムの稼働時間つまり使用可能な時間が最大化されます。

この項では、Oracle Traffic Directorインスタンス間でフェイルオーバーに対応するようにOracle Traffic Directorを構成する手順を説明します。次の項が含まれます:

概要

Oracle Traffic Directorの高可用性ソリューションは、複数のインスタンスを作成し、そのインスタンス間の指定したVIPのIPフェイルオーバーを構成する機能を提供します。

Oracle Traffic Directorでは、高可用性ソリューションは、2つ以上のインスタンス間でIPフェイルオーバーを構成することで、指定した仮想IPアドレス(VIP)に冗長性を付与します。IPフェイルオーバーはフェイルオーバー・グループとして構成されます。これはVIP、プライマリとして指定された1つのインスタンスとバックアップ・インスタンスとして指定された1つ以上のインスタンスをグループ化したものです。 フェイルオーバーは、トラフィックを送信するクライアントおよびトラフィックを受信するOracle Traffic Directorインスタンスの両方に対して透過的です。

フェイルオーバー構成モード

フェイルオーバー・グループでは、次のモードで動作するOracle Traffic Directorインスタンスを構成できます:

  • アクティブ-パッシブ: 1つのVIPアドレスが使用されます。フェイルオーバー・グループ内の1つのインスタンスがプライマリ・ノードとして指定されます。プライマリ・ノードに障害が発生すると、各リクエストが、同じVIPを通じてもう一方のインスタンスにルーティングされます。

  • アクティブ-アクティブ: 1つのVIPアドレスが使用されます。ノードのうちの1つはマスター・ノードであり、その他のノードはバックアップ・ノードです。VIPへの受信リクエストはOTDインスタンス間で分散されます。マスター・ノードでエラーが発生すると、最も優先度が高いバックアップ・ノードが次のマスター・ノードとして選択されます。

アクティブ-パッシブ・モードでのフェイルオーバー

ここで説明したアクティブ-パッシブ設定では、フェイルオーバー・グループ内の1つのノードが、どの時点でも冗長となります。

Oracle Traffic Directorでは、LinuxのkeepalivedやSolarisのvrrpd (ネイティブ)のような、Virtual Routing Redundancy Protocol (VRRP)実装を使用することによって、フェイルオーバー・グループ内のインスタンス間におけるフェイルオーバーをサポートしています。

Keepalivedには、オリジン・サーバーのロード・バランシングやヘルス・チェックなど、他の機能も備わっていますが、Oracle Traffic DirectorではVRRPサブシステムのみを使用します。Keepalivedの詳細は、http://www.keepalived.orgを参照してください。

VRRPでは、なんらかの理由で最初のノードが使用できなくなったときにルーターによってあるノードから別のノードにVIPアドレスをフェイルオーバーする方法を指定します。このIPフェイルオーバーは、各ノード上で実行されているルーター・プロセスによって実装されます。2つのノードからなるフェイルオーバー・グループでは、現在VIPが割り当てられているノード上のルーター・プロセスがマスターと呼ばれます。マスターは、その存在を継続的に2つ目のノード上のルーター・プロセスに通知します。

注意:

フェイルオーバー・グループのメンバーとして構成されたOracle Traffic Directorインスタンスが存在するホスト上では、Oracle Traffic DirectorがKeepalivedの唯一のコンシューマである必要があります。そうでない場合、インスタンスの停止時間中にフェイルオーバーを有効にするためにOracle Traffic Directorでkeepalivedデーモンを起動および停止したときに、同じホスト上でkeepalivedを使用している他のサービスが中断される可能性があります。

マスター・ルーター・プロセスが実行されているノードに障害が発生した場合、2つ目のノード上のルーター・プロセスは約3秒の待機後マスターがダウンしていると判断し、VIPをそのノードに割り当てることによってマスターのロールを引き継ぎます。最初のノードがもう一度オンラインになった場合は、そのノード上のルーター・プロセスがマスター・ロールを引き継ぎます。VRRPの詳細は、http://datatracker.ietf.org/doc/rfc5798のRFC 5798を参照してください。

アクティブ-アクティブ・モードでのフェイルオーバー

Oracle Traffic Directorは、同じサブネットに属しているノード上にインスタンスをデプロイすることで、インスタンス間でのフェイルオーバーをサポートします。ノードの1つはアクティブ・ルーター・ノードとして選択され、残りのノードはバックアップ・ルーター・ノードです。すべてのOracle Traffic Directorインスタンス間のトラフィックが管理されます。

このソリューションでも、ロード・バランシングおよびフェイルオーバー・タスクを実行するためにKeepalived v 1.2.13とLinux Virtual Server(LVS)を使用します。さらに、次のパッケージが必要です。

  • ipvsadm (1.26以降)

  • iptables (1.4.7以降)

最初はすべてのノードがバックアップ・ノードとして構成され、それらのノードには異なる優先度が割り当てられます。最も優先度が高いノードがマスターとして選択され、その他のノードはバックアップ・ノードになります。マスター・ノードでエラーが発生すると、最も優先度が高いバックアップ・ノードが次のマスター・ノードとして選択されます。Keepalivedマスター・ノードはLVSのマスター・ノードでもあります。

Keepalivedは次のことを実行します。

  • マスター上の仮想IPを調査する

  • VIPのGratuitous ARPメッセージを送信する

  • LVSを構成する(ipvsadm)

  • 他のノード上のKeepalivedのヘルス・チェックを行う

LVSは次のことを実行します。

  • Oracle Traffic Directorインスタンス間で負荷分散を行う

  • マルチキャストを介してバックアップ・ノードへの既存の接続情報を共有する。

  • 各Oracle Traffic Directorインスタンス上のサービスの整合性を確認する。Oracle Traffic Directorインスタンスで障害が発生した場合、そのインスタンスはLVS構成から削除され、オンラインに戻ったら再度追加されます。

高可用性向けのシステムの準備

Oracle Traffic Directorの一般的なデプロイメント・トポロジは、単一ドメインに含まれる3ノード・インストールです。

  • WebLogic Server管理マシンには、Oracle Traffic DirectorがWebLogic ServerおよびJRFインストールと同じ場所に配置されています。これが、WebLogic Server管理サーバーをホストします。

  • 他の2つのマシンには、WebLogic Serverバイナリのサブセットのみを持つOracle Traffic Directorスタンドアロン・インストールが含まれ、管理対象Oracle Traffic Directorドメインをホストします。

  • 2つのOracle Traffic Directorインスタンスは一般に、フェイルオーバー・グループを形成することでVIP (仮想IP)に高可用性を提供します。

前提条件

オペレーティング・システム 高可用性要件 システム要件

Linux

アクティブ-アクティブ

  • keepalivedパッケージ(1.2.13以降)

  • OEL 5.8以上が搭載された3つのマシン。

  • 2つのマシンは同じサブネット内にある必要があります。

  • フェイルオーバー・グループを作成する、同じサブネット上の仮想IP。このIPアドレスは空いていて、ネットワーク上のどのマシンにもまだ割り当てられていない必要があります。

Linux

アクティブ-パッシブ

  • keepalivedパッケージ(1.2.12以降)

Solaris

アクティブ-アクティブ

サポート対象外

Solaris

アクティブ-パッシブ

  • vrrpadmパッケージ

  • ipadmパッケージ

  • S11u2以上が搭載された3つのマシン。

  • 2つのマシンは同じサブネット内にある必要があります。

  • フェイルオーバー・グループを作成する、同じサブネット上の仮想IP。このIPアドレスは空いていて、ネットワーク上のどのマシンにもまだ割り当てられていない必要があります。

Windows

アクティブ-アクティブ

サポート対象外

Windows

アクティブ-パッシブ

サポート対象外

AIX

アクティブ-アクティブ

サポート対象外

AIX

アクティブ-パッシブ

サポート対象外

表記法

この章では、次のトークンを使用して同じデータを表します。

トークン 説明

OTD_HOST_1

フェイルオーバー・グループのプライマリ・インスタンスが実行されているマシンのホスト名。

OTD_HOST_2

フェイルオーバー・グループのバックアップ・インスタンスが実行されているマシンのホスト名。

OTD_MACHINE_1

Weblogic ServerコンソールでOTD_HOST_1に対応するマシンの作成時に指定された名前。

OTD_MACHINE_2

Weblogic ServerコンソールでOTD_HOST_2に対応するマシンの作成時に指定された名前。

VIP

フェイルオーバー・グループの作成に使用された仮想IP (OTD_HOST_1およびOTD_HOST_2と同じサブネット上)。

WLS_ADMIN_HOST

WebLogic Server管理が実行されているサーバーのホスト名。

高可用性の構成

Oracle Traffic Director向けの高可用性の構成は、WebLogic Server、Oracle Traffic Directorのインストールから始まります。これには、WebLogicドメインの作成、スタンドアロンOracle Traffic Directorのインストール、およびその後のフェイルオーバー・インスタンスの作成も含まれます。

  1. WebLogic Serverをインストールします。WebLogic Serverのインストールを参照してください
  2. Oracle Traffic Directorをコロケート・モードでインストールします(WebLogic Serverあり、制限付きJRFテンプレートを使用)。『Oracle Traffic Directorのインストール』を参照してください。
  3. JRFテンプレートを使用してWebLogicドメインを作成し、リモート・マシンでOracle Traffic Directorインスタンスを管理します。「JRFテンプレートを使用したドメインの作成」を参照してください。
  4. 他の2つのホストOTD_HOST_1OTD_HOST_2で、Oracle Traffic Directorスタンドアロン・インストールを作成します。スタンドアロン・ドメインへのOracle Traffic Directorのインストールを参照してください。
  5. Oracle Traffic Directorスタンドアロン・インストールで管理対象ドメインを作成します。
    1. WLS_ADMIN_HOST上に新しいターミナルを開き、WebLogic管理サーバーを起動します。

      構文: $DOMAIN_HOME/startWeblogic.sh

    2. http://$WLS_ADMIN_HOST:$WLS_ADMIN_PORT/consoleで資格証明WLS_ADMIN_USERWLS_ADMIN_PASSWORDを使用して、WebLogic Serverコンソールにログオンします。
    3. 下の表に示すプロパティで、OTD_HOST_1およびOTD_HOST_2に対応するマシン・エントリを作成します。マシンの作成および構成の詳細は、マシンの作成と構成に関する項を参照してください。

      表4-1 次の値を使用したマシン・エントリの作成

      パラメータ サブパラメータ

      Machine Properties

      Name

      これは、マシンのホスト名と同じにすることが推奨されます(OTD_HOST_1またはOTD_HOST_2)。この名前は、以後OTD_MACHINE_1およびOTD_MACHINE_2と呼びます。

      Machine Properties-Machine OS

      デフォルトを使用します。

      Node Manager Properties

      Type

      SSL

      Listen Address リモート・ホストのホスト名(OTD_HOST_1またはOTD_HOST_2)。
      Listen Port ノード・マネージャがリモート・ホストでリスニングするように構成されているポート(デフォルトは5556)。

      次に例を示します。

      表4-2 マシン作成エントリの例

      パラメータ サブパラメータ

      Machine Properties

      Name

      example.us.oracle.com。

      Machine Properties-Machine OS

      デフォルトを使用します

      Node Manager Properties

      Type

      SSL

      Listen Address

      example.us.oracle.com。

      Listen Port

      5556

    4. $WLS_ADMIN_HOST上にターミナルを開き、pack.shコマンドを実行します。

      注意:

      ドメインを圧縮する前に、OTD_HOST_1OTD_HOST_2の両方のリモート・ホストがコンソールにマシンとして追加されていることを確認します。

      構文: $ORACLE_HOME/oracle_common/common/bin/pack.sh -domain=<full path to the domain that needs to be packed> -template=<full path to a template jar file to be created> -template_name=<description> -managed=true

      例: $ORACLE_HOME/oracle_common/common/bin/pack.sh -domain=$DOMAIN_HOME -template=/share/files/otd_ha.jar -template_name=ha -managed=true

      このコマンドにより、リモート・マシン上でのOracle Traffic Director管理対象ドメインの作成に使用できるドメインのサブセットを含むテンプレート・アーカイブ.jarファイルが作成されます。  
    5. 圧縮によって作成されたテンプレートjarをOTD_HOST_1およびOTD_HOST_2にコピーするか、jarをOTD_HOST_1およびOTD_HOST_2からアクセスできるファイルシステムの場所に保持します。
    6. OTD_HOST_1OTD_HOST_2の両方でunpack.shコマンドを実行して、Oracle Traffic Director管理対象ドメインを作成します。

      構文: $ORACLE_HOME/oracle_common/common/bin/unpack.sh -domain=<full path to the domain that needs to be created> -template=<full path to the template jar file created using pack>

      例: $ORACLE_HOME/oracle_common/common/bin/unpack.sh -domain=$DOMAIN_HOME -template=/share/files/otd_ha.jar

    7. OTD_HOST_1OTD_HOST_2の両方の新しいターミナルでノード・マネージャを起動します。

      構文: $DOMAIN_HOME/bin/startNodeManager.sh

    8. WLS_ADMIN_HOSTでWebLogic Serverコンソールにログオンし、OTD_HOST_1およびOTD_HOST_2上のノード・マネージャのステータスがアクティブとして表示されていることを確認します。ノード・マネージャ・ステータスの監視の詳細は、ノード・マネージャのステータスの監視に関する項を参照してください。
  6. リモート・インスタンスを作成して、フェイルオーバーを有効にします。
    1. Oracle Traffic Directorを2つのリモート・ホストOTD_HOST_1OTD_HOST_2にインストールします。

      注意:

      フェイルオーバーを有効にするには、2つのリモート・ホストが同じサブネット上にある必要があります。
    2. WebLogic ServerがWLS_ADMIN_HOSTで実行され、ノード・マネージャがOTD_HOST_1OTD_HOST_2で実行されていることを確認します。
    3. 管理サーバーに接続し、WLSTコマンド・インターフェイスを使用して編集セッションを開始します。
      構文:
      > $ORACLE_HOME/oracle_common/common/bin/wlst.sh
      > connect('$WLS_ADMIN_USER','$WLS_ADMIN_PASSWORD','t3://$WLS_ADMIN_HOST:$WLS_ADMIN_PORT')
      > editCustom()
      > startEdit()
    4. 新しいOracle Traffic Director構成を作成します。

      構文:

      > props = {'origin-server': '<origin servers>', 'listener-port': '<listener port>', 'name': '<config name>', 'server-name': '<server name>'}
      > otd_createConfiguration(props)

      例:

      > props = {'origin-server': 'localhost:20004', 'listener-port': '20009', 'name': 'ha', 'server-name': 'myservername'}
      > otd_createConfiguration(props)
    5. 2つのリモート・マシンでOracle Traffic Directorインスタンスを作成します。

      構文:

      > props={'configuration': '<config name>', 'machine': '$OTD_MACHINE_1'}
      > otd_createInstance(props)
      > props={'configuration': '<config name>', 'machine': '$OTD_MACHINE_2'}
      > otd_createInstance(props)
      これにより、2つのインスタンス、otd_<config name>_$OTD_MACHINE_1otd_<config name>_$OTD_MACHINE_2が作成されます。
      > props={'configuration': 'ha', 'machine': 'example.us.oracle.com'}
      > otd_createInstance(props)
      > props={'configuration': 'ha', 'machine': 'example.us.oracle.com'}
      > otd_createInstance(props)
    6. 2つのインスタンスを使用して、フェイルオーバー・グループを作成します。
      • アクティブ-アクティブ・フェイルオーバーを作成するには:

        • 構文:
          > props = {'configuration': '<config name>', 'virtual-ip': '$VIP', 'failover-type': 'active-active'}
          > otd_createFailoverGroup(props)
          例:
          > startEdit()
          > props = {'configuration': 'ha', 'virtual-ip': '10.20.30.40', 'failover-type': 'active-active'}
          > otd_createFailoverGroup(props)
        • 異なるノードの2つのフェイルオーバー・インスタンス詳細をアクティブ-アクティブ・フェイルオーバー・グループに追加します。

          構文:

          > props = {'configuration': '<config name>', 'virtual-ip': '$VIP', 'instance': 'otd_ha_$OTD_MACHINE_1', 'nic': '<network interface name>'}
          > otd_addFailoverInstance(props)

          例:

          > startEdit()
          > props = {'configuration': 'ha', 'virtual-ip': '10.20.30.40', 'instance': 'otd_ha_example1.us.oracle.com', 'nic': 'eth0'}
          > otd_addFailoverInstance(props)
          > props = {'configuration': 'ha', 'virtual-ip': '10.20.30.40', 'instance': 'otd_ha_example2.us.oracle.com', 'nic': 'eth0'}
          > otd_addFailoverInstance(props)
        • フェイルオーバー・グループの作成を確認します。

          構文:
          > props = {'configuration': '<config name>', 'virtual-ip': '$VIP'}
          > otd_getFailoverGroupProperties(props)

          例:

          > props = {'configuration': 'ha', 'virtual-ip': '10.20.30.40'}
          > otd_getFailoverGroupProperties(props)
          

          作成されたグループの詳細が次のように表示されます。

          > failover-type=active-active 
          > router-id=72
          > virtual-ip=10.20.30.40
          > instances=otd_ha_example1.us.oracle.com,otd_ha_example2.us.oracle.com
      • アクティブ-パッシブ・フェイルオーバーを作成するには:

        構文:

        > props = {'configuration': '<config name>', 'virtual-ip': '$VIP', 'primary-instance': 'otd_ha_$OTD_MACHINE_1', 'backup-instance': 'otd_ha_$OTD_MACHINE_2', 
                   'primary-nic': 'network interface on the primary instance', 'backup-nic': 'network interface on the backup instance'}
        > otd_createFailoverGroup(props)

        注意:

        • VIPは、OTD_HOST_1およびOTD_HOST_2と同じサブネット上のIPアドレスである必要があります。

        • VIPがサブネット上のどのマシンにも割り当てられていないことを確認します。

        例:

        > startEdit()
        > props = {'configuration': 'ha', 'virtual-ip': '10.20.30.40', 'primary-instance': 'otd_ha_example.us.oracle.com', 'backup-instance': 'otd_ha_example.us.oracle.com', 
                   'primary-nic': 'eth0', 'backup-nic': 'eth0'}
        > otd_createFailoverGroup(props)
    7. 変更をアクティブ化します。これにより、フェイルオーバー構成がOTD_HOST_1およびOTD_HOST_2上の2つのインスタンスに伝播されます。
      構文: activate()
      両方のマシンで、パス<DOMAIN_HOME>/config/fmwconfig/components/OTD/instances/otd_<config name>_<machine name>でインスタンスが作成されます。
  7. フェイルオーバーを開始します。リモート・ホストOTD_HOST_1およびOTD_HOST_2でOracle Traffic Directorリモート・インスタンスを作成したら、スーパーユーザー権限を使用してフェイルオーバーを開始する必要があります。
    WebLogic ServerがWLS_ADMIN_HOSTで実行され、ノード・マネージャがOTD_HOST_1OTD_HOST_2の両方で実行されていることを確認します。
    1. WLS_ADMIN_HOSTでWLSTコマンド・インターフェイスを使用してWebLogic管理サーバーに接続します。
      構文:
      > $ORACLE_HOME/oracle_common/common/bin/wlst.sh 
      > connect('$WLS_ADMIN_USER','$WLS_ADMIN_PASSWORD','t3://localhost:$WLS_ADMIN_PORT')
    2. WLSTコマンドを使用してインスタンスotd_<config name>_$OTD_MACHINE_Nを起動します。

      構文:

      > start('otd_<config name>_$OTD_MACHINE_1', 'SystemComponent')
      > state('otd_<config name>_$OTD_MACHINE_1')
      Current state of "otd_<config name>_$OTD_MACHINE_1" : RUNNING
      > start('otd_<config name>_$OTD_MACHINE_2', 'SystemComponent')
      > state('otd_<config name>_$OTD_MACHINE_2')
      Current state of "otd_<config name>_$OTD_MACHINE_2" : RUNNING

      例:

      > start('otd_ha_sc11136123.us.oracle.com', 'SystemComponent')
      > state('otd_ha_sc11136123.us.oracle.com')
      Current state of "otd_ha_sc11136123.us.oracle.com" : RUNNING
      > start('otd_ha_sc11136122.us.oracle.com', 'SystemComponent')
      > state('otd_ha_sc11136122.us.oracle.com')
      Current state of "otd_ha_sc11136122.us.oracle.com" : RUNNING
    3. OTD_HOST_1OTD_HOST_2の両方でフェイルオーバーを開始します。フェイルオーバー・デーモンをルートとして起動する必要があるため、スーパーユーザー権限でotd_startFailoverを実行します。

      OTD_HOST_1で、次を実行します。

      sudo $ORACLE_HOME/oracle_common/common/bin/wlst.sh
      > props={'domain-home': $DOMAIN_HOME, 'instance': otd_ha_$OTD_MACHINE_1, 'log-verbose': 'true'}
      > otd_startFailover(props)

      OTD_HOST_2で、次を実行します。

      sudo $ORACLE_HOME/oracle_common/common/bin/wlst.sh
      > props={'domain-home': $DOMAIN_HOME, 'instance': otd_ha_$OTD_MACHINE_2, 'log-verbose': 'true'}
      > otd_startFailover(props)

      次に例を示します。

      sudo $ORACLE_HOME/oracle_common/common/bin/wlst.sh
      
      Initializing WebLogic Scripting Tool (WLST) ...
      
      Welcome to WebLogic Server Administration Scripting Shell
      
      Type help() for help on available commands
      
      wls:/offline> props = {'domain-home': '$ORACLE_HOME/user_projects/domains/base_domain', 'instance': 'otd_ha_sc11136123.us.oracle.com', 'log-verbose': 'true'}
      wls:/offline> otd_startFailover(props)
      
      OTD-67856 Failover has been started successfully.