1つまたは2つの仮想IP (VIP)アドレスで表されたフェイルオーバー・グループ内で2つのOracle Traffic Directorインスタンスを組み合せることによって、Oracle Traffic Directorインスタンスの高可用性を確保できます。フェイルオーバー・グループ内の両方のホストでは、同じオペレーティング・システム・バージョンを実行し、同一のパッチおよびサービス・パックを使用し、同じ構成のOracle Traffic Directorインスタンスを実行する必要があります。
注意:
|
図14-1は、アクティブ-パッシブ・モードでの高可用性を実現するためにデプロイされたOracle Traffic Directorを示しています。
図14-1 Oracle Traffic Directorネットワーク・トポロジ: アクティブ-パッシブ・フェイルオーバー・モード
図14-1に示されたトポロジは、2つのOracle Traffic Directorインスタンス(otd_1
とotd_2
)で構成され、アクティブ-パッシブ・フェイルオーバー・ペアを形成し、クライアント・リクエストに対し単一の仮想IPアドレスを提供します。アクティブなインスタンス(この例ではotd_1
など)がリクエストを受信すると、リクエストの送信先のサーバー・プールを特定し、そのサーバー・プールに定義されたロード分散メソッドに基づいてプール内のいずれかのサーバーにリクエストを転送します。
図14-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)実装を使用することによって、フェイルオーバー・グループ内のインスタンス間におけるフェイルオーバーをサポートしています。
Exalogic環境のOracle Linuxには、Keepalived v1.2.2が含まれています。インストールまたは構成する必要はありません。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インスタンスの高可用性ペアを実装する方法を説明します。フェイルオーバーの動作方法の詳細は、14.2.1項「フェイルオーバーの動作」を参照してください。
管理コンソールまたはCLIのいずれかを使用して、フェイルオーバー・グループを作成できます。
始める前に
フェイルオーバー・グループに割り当てる一意の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を実際にプラミングする際には、そのノードからのすべての発信トラフィックがVIPをソース・アドレスとして使用しないように、ホストマスク(IPv4には32、IPv6には128)を使用することをお薦めします。
フェイルオーバー・グループ内のプライマリ・ノードおよびバックアップ・ノードとして構成するOracle Traffic Director管理ノードを識別します。
ここで選択する管理ノードに、指定した構成に使用するOracle Traffic Directorインスタンスが存在している必要があります。
各ノードのネットワーク・インタフェースを識別します。
ネットワーク・インタフェースを指定しない場合、管理サーバーによって、指定したVIPで使用可能なネットワーク・インタフェースの検出が自動的に試行されます。現在ホスト上で稼働しているネットワーク・インタフェースごとに、管理サーバーによって、インタフェースの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を指定しない場合、最初のフェイルオーバー・グループについては255に設定されます。後続のフェイルオーバー・グループを作成するたびに、デフォルトのルーターIDは、254、253のように1つずつ減ります。
管理コンソールを使用したフェイルオーバー・グループの作成
管理コンソールを使用してフェイルオーバー・グループを作成するには、次の操作を行います:
2.3.2項「管理コンソールへのアクセス」の説明に従って、管理コンソールにログインします。
ページの左上隅にある「構成」ボタンをクリックします。
使用可能な構成のリストが表示されます。
フェイルオーバー・グループを作成する構成を選択します。
ナビゲーション・ペインで、「フェイルオーバー・グループ」を選択します。
フェイルオーバー・グループ・ページが表示されます。
「新規フェイルオーバー・グループ」をクリックします。
新規フェイルオーバー・グループ・ウィザードが表示されます。
画面上のプロンプトに従って、仮想IPアドレス、ネットワーク・インタフェース、管理ノードのホスト名など、前に決定した詳細を使用してフェイルオーバー・グループの作成を完了します。
フェイルオーバー・グループが作成されたら、新規フェイルオーバー・グループ・ウィザードの結果画面に、フェイルオーバー・グループの作成が成功したことを示すメッセージが表示されます。
結果画面で、「閉じる」をクリックします。
フェイルオーバー・グループ・ページに、作成したフェイルオーバー・グループの詳細が表示されます。
注意: この時点では、2つのノードはアクティブ-パッシブ・ペアになっています。これらをアクティブ-アクティブ・ペアに変更するには、同じ2つのノードを含む別のフェイルオーバー・グループを作成しますが、その際、異なるVIPを割り当て、プライマリおよびバックアップ・ロールを逆にします。 |
CLIを使用したフェイルオーバー・グループの作成
フェイルオーバー・グループを作成するには、create-failover-group
コマンドを実行します。
たとえば、次のコマンドでは、次の詳細でフェイルオーバー・グループが作成されます。
構成: soa
プライマリ・ノード: node1.example.com
バックアップ・ノード: node2.example.com
仮想IPアドレス: 10.229.227.80
VIPのネットワーク接頭辞: 指定されていないため、コマンドでは、ネットワーク接頭辞は24
(サブネット・マスク255.255.255.0
に相当)と見なされます
> tadm create-failover-group --config=soa --virtual-ip=10.229.227.80 --primary-node=node1.example.com --backup-node=node2.example.com
OTD-70201 Command 'create-failover-group' ran successfully.
注意: フェイルオーバー・グループを作成する際、インスタンスが存在するノード上で管理ノード・プロレスが非root として実行されている場合は、これらのノードでroot ユーザーとしてstart-failover を実行する必要があります。これはフェイルオーバーを手動で開始するためです。このコマンドを実行しないとフェイルオーバーは開始しないため、高可用性を実現できません。start-failover の詳細は、『Oracle Traffic Directorコマンドライン・リファレンス』を参照してください。 |
これらをアクティブ-アクティブ・フェイルオーバーを有効にするには、同じ2つのノードを含む別のフェイルオーバー・グループを作成しますが、プライマリとバックアップ・ロールを逆にします。
create-failover-group
の詳細は、『Oracle Traffic Directorコマンドライン・リファレンス』を参照するか、--help
オプションを付けてコマンドを実行してください。
Oracle Traffic Directorでは、フェイルオーバー・グループの一部であるインスタンスを起動するとkeepalived
デーモンが自動的に起動され、インスタンスを停止するとデーモンが停止されます。keepalived
デーモンの構成パラメータは、フェイルオーバー・グループの一部である各インスタンスのconfig
ディレクトリにあるkeepalived.conf
というファイルに格納されます。インスタンスが存在するノード上で管理ノード・プロレスが非root
として実行されている場合は、これらのノードでroot
ユーザーとしてstart-failover
コマンドを実行する必要があります。これはフェイルオーバーを手動で開始するためです。このコマンドを実行しないとフェイルオーバーは開始しないため、高可用性を実現できません。start-failover
の詳細は、『Oracle Traffic Directorコマンドライン・リファレンス』を参照してください。
注意: keepalived デーモンが自動的に起動および停止するようにするには、コマンドを実行して、Oracle Traffic Directorインスタンスをroot ユーザーとして起動および停止する必要があります。 |
フェイルオーバー・グループを作成したら、それらをリストしたり、設定を表示したり、フェイルオーバー・グループのプライマリ・ノードを変更したり、プライマリ・ノードとバックアップ・ノードを切り替えたり、それらを削除したりすることができます。フェイルオーバー・グループのVIPまたは任意のプロパティを変更するには、フェイルオーバー・グループを削除してから新たに作成しなおす必要があることに注意してください。
管理コンソールまたはCLIを使用することによって、フェイルオーバー・グループを表示、変更および削除できます。
管理コンソールを使用したフェイルオーバー・グループの管理
管理コンソールを使用してフェイルオーバー・グループを表示、変更および削除するには、次の操作を行います:
2.3.2項「管理コンソールへのアクセス」の説明に従って、管理コンソールにログインします。
ページの左上隅にある「構成」ボタンをクリックします。
使用可能な構成のリストが表示されます。
フェイルオーバー・グループを管理する構成を選択します。
ナビゲーション・ペインで、「フェイルオーバー・グループ」を選択します。
フェイルオーバー・グループ・ページが表示されます。使用可能なフェイルオーバー・グループのリストが表示され、各フェイルオーバー・グループのプライマリ・ノードおよびバックアップ・ノードが示されます。
フェイルオーバー・グループのプロパティを表示するには、その仮想IPをクリックします。
プライマリ・ノードおよびバックアップ・ノードのホストを切り替えるには、「プライマリの切替え」ボタンをクリックします。結果のダイアログ・ボックスで、「OK」をクリックします。
フェイルオーバー・グループを削除するには、「削除」ボタンをクリックします。結果のダイアログ・ボックスで、「OK」をクリックします。
CLIを使用したフェイルオーバー・グループの管理
構成のフェイルオーバー・グループのリストを表示するには、次の例に示すようにlist-failover-groups
コマンドを実行します。
tadm> list-failover-groups --config=soa --verbose --all
virtual-ip primary-node backup-node
-------------------------------------------
10.229.231.254 node1.example.com node2.example.com
10.229.231.253 node2.example.com node1.example.com
フェイルオーバー・グループの現在の設定を表示するには、次の例に示すようにget-failover-group-prop
コマンドを実行します。
tadm> get-failover-group-prop --config=soa --virtual-ip=10.229.231.254
virtual-ip=10.229.231.254
backup-node=node2.example.com
network-prefix-length=21
router-id=255
primary-node=node1.example.com
primary-nic=eth0
backup-nic=eth0
フェイルオーバー・グループのプライマリとバックアップ・ノードを切り替えるには、set-failover-group-primary
コマンドを実行します。
たとえば、次のコマンドを実行すると、構成soa
のVIPアドレス10.228.12.250
で表されるフェイルオーバー・グループのプライマリ・ノードがapp2.example.com
に変更されます。
tadm> set-failover-group-primary --config=soa --virtual-ip=10.228.12.250 --primary-node=app2.example.com
OTD-70201 Command 'set-failover-group-primary' ran successfully.
注意: 管理ノード・プロセスがインスタンスの置かれているノードで非root として実行中である場合、これらのノードでroot ユーザーとしてstart-failover を実行する必要があります。これはノードを手動で切り替えるためです。このコマンドを実行しないとノードは切り替わりません。get-failover-group-prop を実行すると、実行結果に構成済のプライマリ・ノードとバックアップ・ノードが含まれますが、これらは実行時のプライマリ・ノードおよびバックアップ・ノードであるとはかぎりません。 |
フェイルオーバー・グループを削除するには、次の例に示すように、delete-failover-group
コマンドを実行します。
tadm> delete-failover-group --config=soa --virtual-ip=10.228.12.250
OTD-70201 Command 'delete-failover-group' ran successfully.
注意: フェイルオーバー・グループを削除する際、管理ノード・プロセスがインスタンスの置かれているノードで非root として実行中であり、少なくとも1つのフェイルオーバー・グループが引き続き使用可能である場合、これらのノードでroot ユーザーとしてstart-failover を実行する必要があります。これとは逆に、フェイルオーバー・グループを削除すると、当該インスタンスで使用できるフェイルオーバー・グループがなくなる場合は、stop-failover を実行してフェイルオーバーを停止する必要があります。start-failover とstop-failover のいずれも実行しなかった場合、削除したフェイルオーバー・グループに関連付けられているVIPが使用可能な状態として存続し続けます。これらのコマンドの詳細は、『Oracle Traffic Directorコマンドライン・リファレンス』を参照してください。 |
この項で説明されたコマンドの詳細は、『Oracle Traffic Directorコマンドライン・リファレンス』を参照するか、--help
オプションを付けてコマンドを実行してください。
注意:
|