この章では、Oracle Traffic Directorの高可用性機能について説明します。ここの内容は、次のとおりです。
Oracle Traffic Directorインスタンスにおいて高可用性には、次の機能が含まれます。
ハードウェア障害、カーネル・クラッシュおよびネットワーク障害によるダウンタイムなしで、クライアント・リクエストを受信し処理します。
2つのOracle Traffic Directorインスタンスを構成し、アクティブ-アクティブまたはアクティブ-パッシブ・フェイルオーバーを提供することで、エンタープライズ・アプリケーションおよびサービスに対して、可用性の高いルーティングおよびロード・バランシング・サービスを設定できます。詳細は、13.2項「フェイルオーバー・グループの作成および管理」を参照してください。
Oracle Traffic Directorプロセスがクラッシュした場合、自動的に再起動します。
Oracle Traffic Directorにはアプリケーション・レベルとノード・レベルの2つのレベルの可用性があります。アプリケーション・レベルの可用性はデフォルトの機能で、新たな構成を加える必要がありません。アプリケーション・レベルの可用性では、Oracle Traffic DirectorのWatchdogデーモンによりロード・バランシング・サービスが監視されるため、プロセス・クラッシュのようなアプリケーション・レベルの障害が発生した場合でも可用性が維持されます。この機能により、ロード・バランシング・サービスにソフトウェア関連の問題が発生しても、Oracle Traffic Directorがソフトウェア・ロード・バランサとしてバックエンド・アプリケーションにリクエストをフロンドエンドし続けます。ノード・レベルの可用性では、CPU障害やメモリー破損などの問題でシステム/vServerがクラッシュした場合でも、Oracle Traffic Directorがバックエンド・アプリケーションにリクエストをフロントエンドし続けます。ノード・レベルの可用性を実現するには、Oracle Traffic Directorを2台の計算ノードまたはvServerにインストールし、それらの間にフェイルオーバー・グループを構成する必要があります。
Oracle Traffic Directorインスタンス自体に高可用性を与えるには、各ロード・バランサ・サーバー・インスタンスに少なくとも3つのプロセス(watchdogプロセス、primordialプロセスおよび1つ以上のロード・バランサ・プロセス)が含まれている必要があります。watchdogプロセスがprimordialを生成し、primordialがロード・バランサ・プロセスを生成します。watchdogプロセスとprimordialプロセスはサーバー・プロセス内における限られたレベルの高可用性を実現します。ロード・バランサ・プロセスまたはprimordialプロセスが何かしらの理由で異常終了した場合、Oracle Traffic Directorのwatchdogがそれらのサービスを再起動するため、Oracle Traffic Directorをソフトウェア・ロード・バランス・サービスとして使用し続けることができます。Oracle Traffic Directorインスタンスにはwatchdogプロセスとprimordialプロセスが1つずつと、1つ以上のロード・バランサ・プロセスが存在することになります。
Oracle Traffic Directorへのほとんどの構成変更は、インスタンスを再起動したり、処理中のリクエストに影響を及ぼしたりすることなく動的にデプロイできます。インスタンスの再起動を必要とする構成変更の場合、管理インタフェース(CLIおよびFusion Middleware Control)にはインスタンスを再起動するためのプロンプトが表示されます。
クライアント・リクエストをバック・エンドのオリジン・サーバーに確実に分散します。
バック・エンドのサーバーが使用不可であるか、完全にロードされている場合、Oracle Traffic Directorは、定期的なヘルス・チェックにより自動的にこの状況を検出し、そのサーバーへのクライアント・リクエストの送信を停止します。障害の発生したサーバーが再び使用可能になった場合、Oracle Traffic Directorは自動的にこれを検出し、このサーバーへのリクエストの送信を再開します。詳細は、5.7項「オリジン・サーバー・プールのヘルス・チェック設定の構成」を参照してください。
各オリジン・サーバー・プールで、いくつかのサーバーをバックアップ・サーバーとして指定できます。Oracle Traffic Directorは、使用可能なプライマリ・サーバーがプールにない場合にのみ、バックアップ・サーバーにリクエストを送信します。詳細は、5.3項「オリジン・サーバー・プールの変更」を参照してください。
各オリジン・サーバーが処理できる最大同時接続数を指定することで、接続が過負荷状態になりオリジン・サーバーからリクエストが拒否される可能性を減らすことができます。
各オリジン・サーバーについて、サーバーへのリクエストの送信レートを上げる期間を指定することもできます。この機能により、オフラインのサーバーが再起動中の場合に、リクエストが拒否される可能性を最小限にすることができます。
詳細は、6.3項「オリジン・サーバーの変更」を参照してください。
1つまたは2つの仮想IP (VIP)アドレスで表されたフェイルオーバー・グループ内で2つのOracle Traffic Directorインスタンスを組み合せることによって、Oracle Traffic Directorインスタンスの高可用性を確保できます。フェイルオーバー・グループ内の両方のホストでは、同じオペレーティング・システム・バージョンを実行し、同一のパッチおよびサービス・パックを使用し、同じ構成のOracle Traffic Directorインスタンスを実行する必要があります。
注意:
|
図13-1は、アクティブ-パッシブ・モードでの高可用性を実現するためにデプロイされたOracle Traffic Directorを示しています。
図13-1 Oracle Traffic Directorネットワーク・トポロジ: アクティブ-パッシブ・フェイルオーバー・モード
図13-1に示されたトポロジは、2つのOracle Traffic Directorインスタンス(otd_1
およびotd_2
)で構成され、アクティブ-パッシブ・フェイルオーバー・ペアを形成し、クライアント・リクエストに対し単一の仮想IPアドレスを提供します。アクティブなインスタンス(この例ではotd_1
など)がリクエストを受信すると、リクエストの送信先のサーバー・プールを特定し、そのサーバー・プールに定義されたロード分散メソッドに基づいてプール内のいずれかのサーバーにリクエストを転送します。
図13-1では、バック・エンドに2つのサーバー・プールのみが示されていますが、複数のサーバー・プール内のサーバーにリクエストをルーティングするようにOracle Traffic Directorを構成できます。
ここで説明したアクティブ-パッシブ設定では、フェイルオーバー・グループ内の1つのノードが、どの時点でも冗長となります。リソースの使用率を向上するには、アクティブ-アクティブ・モードの2つのOracle Traffic Directorインスタンスを2つの仮想IPアドレスを使用して構成できます。各インスタンスは1つの仮想IPアドレスで受信したリクエストに応じ、もう1つのインスタンスをバックアップします。
この項では、次の項目について説明します。
Oracle Traffic Directorでは、LinuxのkeepalivedやSolarisのvrrpd (ネイティブ)のような、Virtual Routing Redundancy Protocol (VRRP)実装を使用することによって、フェイルオーバー・グループ内のインスタンス間におけるフェイルオーバーをサポートしています。
Keepalived v1.2.12(必要な最低限のバージョン)はOracle Linuxに含まれており、インストールしたり、それを構成する必要はありません。Keepalivedは、GNU General Public Licenseに基づいてライセンスされています。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つのVIPアドレスが使用されます。フェイルオーバー・グループ内の1つのインスタンスがプライマリ・ノードとして指定されます。プライマリ・ノードに障害が発生すると、各リクエストが、同じVIPを通じてもう一方のインスタンスにルーティングされます。
アクティブ-アクティブ: このモードでは2つのVIPアドレスが必要です。フェイルオーバー・グループ内の各インスタンスは、プライマリ・インスタンスおよびバックアップとして指定され、それぞれにVIPアドレスが1つずつ割り当てられます。各リクエストは両方のインスタンスによって同時に受信されます。
次の図は、アクティブ-アクティブおよびアクティブ-パッシブのフェイルオーバー・モードを表しています。
この項では、フェイルオーバー・グループを作成してOracle Traffic Directorインスタンスの高可用性ペアを実装する方法を説明します。フェイルオーバーの動作方法の詳細は、13.2.1項「フェイルオーバーの動作」を参照してください。
Fusion Middleware ControlまたはWLSTのいずれかを使用して、フェイルオーバー・グループを作成できます。
始める前に
フェイルオーバー・グループに割り当てる一意のVIPアドレスを決定します。
VIPアドレスは、フェイルオーバー・グループ内のノードと同じサブネットに属している必要があります。
クライアントはこれらのVIPアドレスにアクセスできる必要があります。
注意: Oracle Traffic Directorインスタンスのアクティブ-アクティブ・ペアを構成するには、同じインスタンスを含む2つのフェイルオーバー・グループを作成する必要がありますが、その際、フェイルオーバー・グループごとに異なるVIPアドレスを割り当て、プライマリ・ノードとバックアップ・ノード・ロールを逆にします。 |
VIPを管理するインタフェースのネットワーク接頭辞を特定します。このネットワーク接頭辞は、次の例のようなClassless Inter-Domain Routing (CIDR)形式で表されたサブネット・マスクです。
256個のアドレスを含むサブネット(8ビット)内のIPv4 VIPアドレスの場合、サブネット・マスク255.255.255.0
のCIDR表記は24
であり、この値は使用可能なIPv4アドレスの最大数(32ビット)から、指定されたサブネットのアドレス数(8ビット)を引くことによって計算できます。
同様に、4096個のアドレスを含むサブネット(12ビット)内のIPv4 VIPアドレスの場合、サブネット・マスク255.255.240.0
のCIDR表記は20
(=32
-12
)となります。
IPv6サブネットのサブネット・マスクのCIDR表記を計算するには、使用可能なIPv6アドレスの最大数である128ビットから、サブネットのアドレス空間のビット・サイズを引く必要があります。
IPv4 VIPまたはIPv6 VIPのデフォルトのネットワーク・プレフィックス長は、それぞれ24
または64
です。NICを自動的に選択するため、およびVIPが指定したNICと同じサブネットにある場合は検証するために、指定されていない場合はデフォルトのネットワーク接頭辞長が使用されます。
VIPを実際にプラミングする際には、そのノードからのすべての発信トラフィックがVIPをソース・アドレスとして使用しないように、ホストマスク(IPv4には32、IPv6には128)を使用することをお薦めします。
フェイルオーバー・グループ内のプライマリ・ノードおよびバックアップ・ノードとして構成するOracle Traffic Director管理ノードを識別します。これらのノードは同じサブネットに属している必要があります。
ここで選択する管理ノードに、指定した構成に使用するOracle Traffic Directorインスタンスが存在している必要があります。
各ノードのネットワーク・インタフェースを識別します。
現在ホスト上で稼働しているネットワーク・インタフェースごとに、管理サーバーによって、インタフェースのIPアドレスのネットワーク部が、指定したVIPのネットワーク部と比較されます。結果が一致した最初のネットワーク・インタフェースが、VIPのネットワーク・インタフェースとして使用されます。
この管理サーバーによる比較では、フェイルオーバー・グループ用に指定されたVIPがIPv4アドレスであるかIPv6アドレスであるかに応じて、それぞれIPv4アドレスまたはIPv6アドレスで構成されたホスト上のネットワーク・インタフェースのみが検証されます。
存在しないアドレスにバインドできるようにする(転送バインディングのような)システム構成を実行することで、HTTPリスナーのVIP IPアドレスにバインドできます。次のシステム構成のどちらかを実行します。
echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind
または
sysctl net.ipv4.ip_nonlocal_bind=1
(リブート後に保持する/etc/sysctl.conf
の変更)
フェイルオーバー・グループを作成する構成では、リスナーのIPアドレスがアスタリスク(*
)またはVIPと同じアドレスであることを確認してください。それ以外の場合、VIPに送信されたリクエストが仮想サーバーにルーティングされません。
各フェイルオーバー・グループのルーターIDは一意である必要があります。後続のフェイルオーバー・グループを作成するたびに、デフォルトのルーターIDは、254、253のように1つずつ減ります。
Fusion Middleware Controlを使用したフェイルオーバー・グループの作成
Fusion Middleware Controlを使用してフェイルオーバー・グループを作成するには、次を実行します。
1.7.2項「Fusion Middleware Controlの表示」の説明に従ってFusion Middleware Controlにログインします。
ページの左上隅にある「WebLogicドメイン」ボタンをクリックします。
「管理」→「OTD構成」を選択します。
使用可能な構成のリストが表示されます。
フェイルオーバー・グループを作成する構成を選択します。
「共通タスク」ペインの「Traffic Director構成」をクリックします。
「管理」→「フェイルオーバー・グループ」を選択します。
フェイルオーバー・グループ・ページが表示されます。これには、構成に定義されているフェールオーバー・グループのリストが表示されます。
「作成」をクリックします。
新規フェイルオーバー・グループ・ウィザードが表示されます。
画面上のプロンプトに従って、仮想IPアドレス、ネットワーク・インタフェース、管理ノードのホスト名など、前に決定した詳細を使用してフェイルオーバー・グループの作成を完了します。
フェイルオーバー・グループが作成されたら、新規フェイルオーバー・グループ・ウィザードの結果画面に、フェイルオーバー・グループの作成が成功したことを示すメッセージが表示されます。
結果画面で、「閉じる」をクリックします。
フェイルオーバー・グループ・ページに、作成したフェイルオーバー・グループの詳細が表示されます。
注意: この時点では、2つのノードはアクティブ-パッシブ・ペアになっています。これらをアクティブ-アクティブ・ペアに変更するには、同じ2つのノードを含む別のフェイルオーバー・グループを作成しますが、その際、異なるVIPを割り当て、プライマリおよびバックアップ・ロールを逆にします。 |
WLSTを使用したフェイルオーバー・グループの作成
フェイルオーバー・グループを作成するには、otd_createFailoverGroup
コマンドを実行します。
たとえば、次のコマンドでは、次の詳細でフェイルオーバー・グループが作成されます。
構成: ha
プライマリ・インスタンス: 1.example.com
バックアップ・インスタンス: 2.example.com
仮想IPアドレス: 192.0.2.1
props = {} props['configuration'] = 'ha' props['virtual-ip'] = '192.0.2.1' props['primary-instance'] = '1.example.com' props['backup-instance'] = '2.example.com' props['primary-nic'] = 'eth0' props['backup-nic'] = 'eth0' otd_createFailoverGroup(props)
注意: フェイルオーバー・グループを作成する場合は、それらのマシン上でroot ユーザーとしてotd_startFailover を実行する必要があります。これはフェイルオーバーを手動で開始するためです。このコマンドを実行しないとフェイルオーバーは開始しないため、高可用性を実現できません。otd_startFailover の詳細は、『Oracle Traffic Director WebLogic Scripting Toolコマンド・リファレンス』を参照してください |
これらをアクティブ-アクティブ・フェイルオーバーを有効にするには、同じ2つのノードを含む別のフェイルオーバー・グループを作成しますが、プライマリとバックアップ・ロールを逆にします。
otd_createFailoverGroup
の詳細は、『Oracle Traffic Director WebLogic Scripting Toolコマンド・リファレンス』を参照してください。
フェイルオーバー・グループを管理するには、フェイルオーバー・デーモンを特権ユーザー(通常はroot)で実行する必要があり、フェイルオーバー・グループのプライマリおよびバックアップ・インスタンスが実行されるマシン上で、otd_startFailover
コマンドを特権ユーザーで実行する必要があります。同様に、デーモンを停止するには、otd_stopFailover
を実行する必要があります。keepalived
デーモンの構成パラメータは、フェイルオーバー・グループの一部である各インスタンスのconfig
ディレクトリにあるkeepalived.conf
というファイルに格納されます。otd_startFailover
またはotd_stopFailover
の詳細は、『Oracle Traffic Director WebLogic Scripting Toolコマンド・リファレンス』を参照してください。
フェイルオーバー・グループを作成したら、それをリストしたり、設定を表示したり、フェイルオーバー・グループのプライマリ・インスタンスを変更したり、プライマリ・インスタンスとバックアップ・インスタンスを切り替えたり、削除したりできます。フェイルオーバー・グループのVIPまたは任意のプロパティを変更するには、フェイルオーバー・グループを削除してから新たに作成しなおす必要があることに注意してください。
Fusion Middleware ControlまたはWLSTのいずれかを使用して、フェイルオーバー・グループを表示、変更および削除できます。
Fusion Middleware Controlを使用したフェイルオーバー・グループの管理
Fusion Middleware Controlを使用してフェイルオーバー・グループを表示、変更および削除するには、次を実行します。
1.7.2項「Fusion Middleware Controlの表示」の説明に従ってFusion Middleware Controlにログインします。
ページの左上隅にある「WebLogicドメイン」ボタンをクリックします。
「管理」→「OTD構成」を選択します。
使用可能な構成のリストが表示されます。
フェイルオーバー・グループを管理する構成を選択します。
「共通タスク」ペインの「Traffic Director構成」をクリックします。
「管理」→「フェイルオーバー・グループ」を選択します。
フェイルオーバー・グループ・ページが表示されます。これには、構成に定義されているフェールオーバー・グループのリストが表示されます。
フェイルオーバー・グループのプロパティを表示するには、その仮想IPをクリックします。
プライマリ・ノードおよびバックアップ・ノードのホストを切り替えるには、「プライマリの切替え」ボタンをクリックします。結果のダイアログ・ボックスで、「OK」をクリックします。
フェイルオーバー・グループを削除するには、「削除」ボタンをクリックします。結果のダイアログ・ボックスで、「OK」をクリックします。
注意:
|
WLSTを使用したフェイルオーバー・グループの管理
フェイルオーバー・グループを表示、変更および削除するには、次の例をその下の詳細とともに参照してください。
構成: ha
プライマリ・インスタンス: 1.example.com
バックアップ・インスタンス: 2.example.com
仮想IPアドレス: 10.128.67.44
たとえば、フェイルオーバー・グループをリストするには、otd_listFailoverGroups
コマンドを実行します。
props = {} props['configuration'] = 'ha' otd_listFailoverGroups(props)
たとえば、フェイルオーバー・グループを切り替えるには、otd_toggleFailovergroupPrimary
コマンドを実行します。
props = {}
props['configuration'] = 'ha'
props['virtual-ip'] = '10.128.67.44
'
otd_toggleFailovergroupPrimary(props)
たとえば、フェイルオーバー・グループのプロパティを変更するには、otd_getFailoverGroupProperties
コマンドを実行します。
props = {}
props['configuration'] = 'ha'
props['primary-instance'] = '1.example.com
'
otd_getFailoverGroupProperties(props)
たとえば、フェイルオーバー・グループを削除するには、otd_deleteFailoverGroup
コマンドを実行します。
props = {} props['configuration'] = 'ha' props['virtual-ip'] = '10.128.67.44' otd_deleteFailoverGroup(props)
詳細は、『Oracle Traffic Director WebLogic Scripting Toolコマンド・リファレンス』を参照してください。