高可用性のサポート
可用性の高い環境での Zen の使用
この章では、以下の項目について説明します。
技術の概要
Zen は、物理環境および仮想環境において稼働時間を最大化する数々のソリューションと互換性があります。そのようなソリューションは絶えず進化し続けていますが、通常、そのタイプは高可用性、フォールト トレランスおよび障害回復に分類されます。
高可用性
「高可用性」の定義は、高可用性ソリューションを提供するソフトウェア ベンダーによって異なる可能性があります。一般的には、ハードウェア障害やソフトウェア障害、または必要なメンテナンスの発生にかかわらず、稼働し続ける時間の基準レベルに対するシステム設計手法を指します。
物理環境において高可用性を保証するための一般的な手法はフェールオーバー クラスタリングです。仮想マシン環境において高可用性を保証するための一般的な手法はマイグレーション(移行)です。
フェールオーバー クラスタリング
Zen はフェールオーバー クラスター環境のリソースとして機能するよう設計されています。この環境では一度に 1 つのサーバー ノードのみが共有記憶域サブシステムにアクセスします。プライマリ ノードがエラーになった場合は、セカンダリ ノードへのフェールオーバー(切り替え)が発生します。フェールオーバー クラスタリングを使用すると、ソフトウェアのアップグレードやハードウェアのメンテナンスの実行時にもシステムを利用可能な状態にしておくことができます。
Zen は Microsoft フェールオーバー クラスター サービスおよび Linux Heartbeat と互換性があります。フェールオーバー クラスタリングの定義および実装については、各ベンダーのドキュメントを参照してください。Zen Enterprise Server と Cloud Server はフェールオーバー クラスタリングに推奨されるエディションです。
マイグレーション
一般論として、マイグレーションとは、実行している仮想マシンまたはアプリケーションを、クライアントやアプリケーションを切断することなく異なる物理マシン間で移動させることです。通常は、仮想マシンのメモリ、記憶域およびネットワーク接続が移行先に移行されます。
Zen は Microsoft Hyper-V、VMware vSphere および Citrix XenServer で提供されるマイグレーション機能と互換性があります。ホスト名が仮想マシンの移動後も同じままであれば、Zen は正常に動作し続けます。マイグレーションの定義および実装については、各ベンダーのドキュメントを参照してください。
フォールト トレランス
高可用性が稼働時間の予測可能な基準レベルを目指すのに対し、フォールト トレランスはコンポーネントに障害が発生してもシステムを中断することなく稼働させることを目的としています。フォールト トレランスでは同期された共有記憶域が必要です。仮想化環境では、障害が発生した仮想マシンと、置き換わる仮想マシンは異なる物理ホスト上に存在している必要があります。
フォールト トレランスは物理マシンのみを使用して実現します。ただし、仮想環境は、互いに足並みを揃えた仮想サーバーを保持することが容易であるため、物理環境のみという状況は次第に少なくなっています。Zen サーバーは物理環境のみでのフォールト トレランス機能と互換性があります。
仮想環境の場合、Zen は VMware vSphere や Citrix XenServer で提供されるフォールト トレランス機能と互換性があります。フォールト トレランスの定義および実装については、各ベンダーのドキュメントを参照してください。
障害回復
障害回復では、大きな障害の発生後にコンピューター操作の復元が必要となります。通常、これには日常的なオフサイトのデータ バックアップや新しい場所で主要な情報システムをアクティブ化する手続きが含まれます。
Zen は、バックアップ物理マシンまたは仮想マシンを初期化する障害回復技術をサポートする主要なハイパーバイザーと互換性があります。すべてのホスト名が仮想マシンの移動後も同じままであれば、Zen は正常に動作し続けます。これにより、短時間でのサーバー置換および回復が可能です。
障害回復の定義および実装については、各ハイパーバイザー ベンダーのドキュメントを参照してください。
ハードウェア要件
このセクションで述べているすべての技術を利用する場合、ベンダーが提供するハードウェア互換性リストで挙げられているサーバー、ディスク サブシステムおよびネットワーク コンポーネントを選択することをお勧めします。弊社でも、ベンダーの製品との互換性テストを行う際にはこの同じハードウェア要件に従っています。
フェールオーバー クラスタリング
フェールオーバー クラスタリングは、複数の物理サーバー(ノード)が、1 つ以上のファイル共有またはボリュームを持つ、共通の共有記憶域サブシステムにアクセスする機能を提供します。このフェールオーバー サービスでは、一度に 1 つのサーバーだけがファイル共有またはボリュームを制御します。共有記憶域サブシステムの制御は、障害により停止したサーバーからクラスター内の次のアクティブ サーバーへ自動的に渡されます。
Zen エンジンは、インストールしたクラスター ノード単位で個別にライセンスされている必要があります。これはそのノードが物理マシンまたは仮想マシンのどちらでも同じです。『
Zen User's Guide』の
「ライセンス モデル」も参照してください。ここで説明しているフェールオーバー クラスタリングは、Microsoft フェールオーバー クラスタリングまたはクラスター サービス、および Linux Heartbeat を対象としています。仮想マシン ベースのクラスターを取り入れるようなその他の高可用性ソリューションとは異なります。
ここでは、以下の項目について説明します。
Windows Server 用 Microsoft フェールオーバー クラスタリング
ここでは、Microsoft フェールオーバー クラスターへの Zen サービスの追加について説明します。これは次のことを前提とします。
•フェールオーバー クラスタリングのインストールおよび構成方法を知っていること。また、Zen エンジン サービスを追加および管理するための情報が必要であること。
•Zen および Zen Control Center(ZenCC)などの主要ユーティリティの使用法をよく理解していること。
•ODBC アドミニストレーターを使用して DSN を設定できること。
事前要件
Zen サービスを追加する前に、フェールオーバー クラスタリングが正常に機能している必要があります。たとえば、フェールオーバーを実行し、すべてのリソースが利用可能になっていることを確認してください。この操作を、フェールオーバーを開始した最初のノードに戻るまで繰り返し行います。フェールオーバー クラスタリングのセットアップ、動作確認、インターフェイスを使ったタスクの実行方法については、Microsoft のドキュメントを参照してください。
推奨されるインストール手順
次の表では、Windows Server のクラスター サービスに Zen を追加する際の推奨手順を説明しています。
表 27 Windows Server のクラスター サービスへの Zen の追加
操作 | 説明 |
---|
Zen をクラスター ノードにインストールする | 各クラスター ノードに Zen サーバーをインストールし、それらすべてに同一のオプションを選択します。 Zen データ ファイルが存在するクラスター共有記憶域には Zen をインストールしないでください。 インストール後、Zen エンジン サービスはオペレーティング システムの起動時に自動的に開始されるよう設定されます。スタートアップの種類を手動に変更します。 |
役割を追加し、Zen エンジン サービスを汎用サービスとして選択する データのファイル共有を追加する リソースを追加し、Zen エンジン サービスを汎用サービスとして選択する | レジストリ レプリケーションは、Zen エンジン サービスではサポートされていません。 ZenCC を使ってデータベース エンジンのプロパティを設定するで説明されているとおり、すべてのノードで Zen データベース エンジンが手動設定されている必要があります。 ファイル サーバーを Zen エンジン サービスの依存関係として設定します。[ネットワーク名をコンピューター名として使う]オプションを選択します。 |
必要なファイルとディレクトリを共有記憶域に置く | 通常、Zen エンジン サービスは、ローカル システム アカウント下で実行されます。ローカル システム アカウントには必ず共有ディスクへの読み取り/書き込み権限を持たせる必要があります。 Zen をインストールしたアクティブ ノードの ProgramData ディレクトリにある DBNAMES.CFG ファイルを、共有記憶域上の任意のディレクトリにコピーします。 同一ノード上の ProgramData ディレクトリから、以下のディレクトリを共有記憶域内の同じディレクトリにコピーします。DBNAMES.CFG と同じディレクトリにこれらをコピーできますが、別の場所でもかまいません。 •defaultdb •Demodata •tempdb •Transaction Logs |
ZenCC を使ってデータベース エンジンのプロパティを設定する | ZenCC でデータベース エンジンを設定して、特定の構成設定をレジストリに追加します。クラスター内の現在のアクティブ ノードのエンジンを設定した後、クラスター グループを移動させて、クラスター内の各ノードに設定の変更を加えます。 ZenCC で、ディレクトリに関する以下のエンジン プロパティを設定します。ZenCC からサービスの再起動を求められた場合は、[いいえ]を選択します。 •[トランザクション ログのディレクトリ]には、Transaction Logs ディレクトリをコピーする共有ディスク上の場所を指定します。 •[DBNames 設定ファイルのディレクトリ]には、DBNAMES.CFG ファイルをコピーする共有ディスク上の場所を指定します。 フェールオーバー クラスター管理コンソールで、Zen リソースを一旦オフラインにし、オンラインに戻して設定を適用します。 ZenCC で、お使いのサーバーのデータベース ノードの下で、次のデータベース エンジン プロパティを設定します。 •DEFAULTDB プロパティの[ディレクトリ]では、[辞書のロケーション]に、Defaultdb ディレクトリをコピーする共有ディスク上の場所を設定します。[データ ディレクトリ]のデフォルトのエントリを、これと同じ場所に置き換えます。 •DEMODATA プロパティの[ディレクトリ]では、[辞書のロケーション]に、Demodata ディレクトリをコピーする共有ディスク上の場所を設定します。[データ ディレクトリ]のデフォルトのエントリを、これと同じ場所に置き換えます。 •TEMPDB プロパティの[ディレクトリ]では、[辞書のロケーション]に、Tempdb ディレクトリをコピーする共有ディスク上の場所を設定します。[データ ディレクトリ]のデフォルトのエントリを、これと同じ場所に置き換えます。 |
これで、Zen フェールオーバー クラスターの設定が完了しました。
メモ:クラスター環境の Zen サーバーにパッチを適用する必要がある場合は、弊社サポート ページの「
バージョンアップ関連」を参照してください。
Linux Heartbeat
Heartbeat プログラムは Linux-HA(High-Availability Linux Linux)プロジェクトの中心的なコンポーネントの 1 つです。Heartbeat はあらゆる Linux プラットフォームで動作し、1 つのプロセスで停止ノードの検出、通信およびクラスター管理を行います。
ここでは、Linux Heartbeat への Zen エンジン サービスの追加について説明します。これは次のことを前提とします。
•Heartbeat プログラムのインストールおよび構成方法を知っていること。また、Zen をクラスター サービス グループに追加するための情報が必要であること。
•Zen および ZenCC などの主要ユーティリティの使用法をよく理解していること。
事前要件
Zen をクラスターに追加する前に、Linux Heartbeat が正常に機能していることが必須です。Heartbeat のインストール、動作確認、タスクの実行方法については、「The High Availability Linux プロジェクト」(http://www.linux-ha.org/ja/HomePage_ja)ドキュメントを参照してください。
ほかのアプリケーションの場合と同様に、Zen を追加する前には必須のクラスター コンポーネントを設定します。
推奨されるインストール手順
次の表では、Linux Heartbeat に Zen を追加する際の推奨手順を説明しています。
表 28 Linux Heartbeat への Zen の追加
操作 | 説明 |
---|
Zen をクラスター ノードにインストールする | 各クラスター ノードに Zen サーバーをインストールし、それらすべてに同一のオプションを選択します。Zen データ ファイルが存在するクラスター共有記憶域には Zen をインストールしないでください。 インストールが完了すると、オペレーティング システムの起動時にデータベース エンジンが自動的に起動するよう設定されます。ただし、クラスタリングでは、Linux Heartbeat がデータベース エンジンの起動と停止を制御します。クラスターの実稼動ノードがエンジンを起動し、それ以外のノードはエンジンを起動しません。 Zen サーバーをインストールしたら、zen-data および zen-adm 用のグループ ID と zen-svc 用のユーザー ID がすべてのノードにおいて一致していることを確認してください。ID が一致していなければ、同一になるよう変更します。 |
共有記憶域を構成する | 共有記憶域は、Zen データ ファイルが存在する場所です。Heartbeat の共有記憶域はさまざまな方法で実装できます。このマニュアルではその数多くの実装方法のすべてを説明することはできません。そのためここでは、NFS マウントの使用を想定しています。 共有記憶域上で、データベースを配置する場所を作成します。この場所は自由に選択できます。ユーザー zen-svc がその場所に対して読み取り、書き込み、および実行権限を持っていることを確認してください。 共有記憶域に 2 つのグループと 1 人のユーザーを作成し、各クラスター ノードがデータベース ファイルにアクセスできるようにします。 •zen-data グループおよび zen-adm グループはそれぞれ、クラスター ノード上の zen-data グループ ID および zen-adm グループ ID と一致している必要があります。 •ユーザー zen-svc は、クラスター ノード上の zen-svc ユーザー ID と一致している必要があります。 |
共有記憶域マウント用のディレクトリを作成する | クラスター ノードごとに、ユーザー zen-svc としてログインし、共有記憶域へマウントされるディレクトリを作成します。ユーザー zen-svc にはパスワードがありません。su コマンドを使用した root アカウントによるアクセスのみを行うことができます。ディレクトリ名は自由に選択できます。 |
Heartbeat サーバーを構成する | Zen データベース エンジンを制御するノードごとに Heartbeat サーバーを構成します。次のような構成を行います。 •ノード。クラスターに参加させるすべてのノードを追加します。 •認証。ノード間のネットワーク通信に使用する認証のタイプを指定します。 •媒体。Heartbeat がノード間の内部的な通信に使用する方法を指定します。 •スタートアップ。Heartbeat サーバーの起動のタイミングについての設定を指定します。これをオンに設定すると、Heartbeat サーバーはブート時に起動するようになります。 |
Heartbeat ユーザーのパスワードを割り当てる | Linux Heartbeat では Heartbeat Management Client へログインする際のデフォルトのユーザー名として hacluster を提供します。Heartbeat Management Client を実行するノードごとに、ユーザー hacluster のパスワードを割り当てます。 |
Zen のリソース グループを追加する | root としてログインし、クラスター ノードの 1 つで Heartbeat Management Client を開始します。ユーザー hacluster としてログインし、新しいグループを追加します。[ID]には、Zen グループの名前を指定します。[Ordered]と[Collocated]には true を設定します。 |
リソースをグループに追加する | 次の 3 つのリソースを Zen グループに追加します。 •IPaddr(IP アドレス) •Filesystem(ファイルシステム) •Zen(OCF リソース エージェント) IPaddr(IP アドレス) Heartbeat Management Client で、新しい native 項目を追加します。[Belong to group]には、Zen 用に追加したグループを選択します。[Type]には IPaddr を選択します。 追加したリソースで、IP の値に対してクラスターの IP アドレスを指定します。Linux Heartbeat がインストールされ構成されたときには、(ノードではなく)クラスターに割り当てられた IP アドレスを使用します。 Filesystem(ファイルシステム) 新しい native 項目をもう 1 つ追加します。[Belong to group]には、Zen 用に追加したグループを選択します。 [Type]には Filesystem を選択し、fstype というパラメーターを削除します。新しいパラメーターを追加し、[Name]には "device" を選択します。[Value]には、共有記憶域のデバイス名、コロン、共有マウントの場所を指定します。 新しいパラメーターをもう 1 つ追加し、[Name]には "directory" を選択します。[Value]には、NFS マウントで使用するディレクトリを指定します。 Zen(OCF リソース エージェント) 新しい native 項目をもう 1 つ追加します。[Belong to group]には、Zen 用に追加したグループを選択します。[Type]では、[Description]フィールドに "Zen OCF Resource Agent" の記載がある zen-svc エントリをクリックします。この他に設定は必要ありません。 |
マウントされた共有記憶域上にサブディレクトリを作成する | Filesystem リソースを追加できた場合は、クラスター サーバーと共有記憶域間にマウントが存在するようになります。クラスター ノードの 1 つに、ユーザー zen-svc としてログインします。共有記憶域マウントで、"log" と "etc" という名前のディレクトリを作成します。 たとえば、マウント ディレクトリが /usr/local/actianzen/shared の場合、/usr/local/actianzen/shared/log と usr/local/actianzen/shared/etc というディレクトリを追加します。 |
ZenCC でクラスター サーバーを構成する | それぞれのクラスター ノードで、ZenCC を使ったクラスター サーバーを構成する必要があります。 ZenCC を実行するノード以外のすべてのクラスター ノードを代替モードにします。zen-svc ユーザーとして、1 つのアクティブ ノードで、あるいはアクティブ ノードにアクセスできるクライアントから ZenCC を実行します。 Zen エクスプローラーで、新しいサーバーを追加し、クラスターの名前(または IP アドレス)を指定します。 追加したサーバーのプロパティにアクセスします。ログインを指示された場合は、admin ユーザーとしてログインします。パスワードは空のままにします。[ ディレクトリ]プロパティにアクセスします。[ トランザクション ログのディレクトリ]には、"log" ロケーション用に作成したディレクトリを指定します。[ DBNames 設定ファイルのディレクトリ]には、"etc" ロケーション用に作成したディレクトリを指定します。 マウントされた共有記憶域上にサブディレクトリを作成するを参照してください。 ZenCC で新しいサーバーを追加し、そのプロパティをほかの各クラスター ノードから設定します。ZenCC を実行するノード以外のすべてのノードを代替モードにします |
共有記憶域上にデータベースを作成する | クラスター ノードのうち 1 つのノードのオペレーティング システムから、ユーザー zen-svc としてログオンし、データベースを置くファイル システム共有下にディレクトリを作成します(ユーザー root としてディレクトリを作成する場合、ユーザー zen-svc はそのディレクトリに対して読み取り、書き込み、および実行権限を持っていることを確認してください)。 ZenCC を実行するノード以外のすべてのクラスター ノードを代替モードにします。 zen-svc ユーザーとして、1 つのアクティブ ノードで、あるいはアクティブ ノードにアクセスできるクライアントから ZenCC を実行します。 ZenCC でクラスター サーバーを構成するで追加したサーバーに新しいデータベースを作成します。[ 場所]には、データベースを置くディレクトリを指定します。必要に応じてその他のデータベース オプションを指定します。 新しいデータベースの場合、必要であればテーブルを作成します。 |
各ノードからのデータベースへのアクセスを確認する | 各クラスター ノードは共有記憶域上の Zen データベースにアクセスできる必要があります。データベースを作成したクラスター ノードを代替モードにします。これは zen-svc リソース(データベース エンジン)を実行しているノードです。 クラスターの次のノードへフェール オーバーします。次のノードが、zen-svc リソースの実行の制御を受け取ることを確認してください。クラスター内の各ノードに対して、上記の手順(代替、フェールオーバー、確認)を繰り返し、開始したノードまで戻ったら終了します。 |
クラスター環境における Zen の管理
フェールオーバー クラスター環境に Zen をインストールすると、リソースとして管理できます。ここでは、一般的な管理の内容について説明します。
Zen ライセンスおよびノードのメンテナンス
通常の Zen ライセンスやマシンのメンテナンスに関する手順は、フェールオーバー クラスター環境のノードにも同様に適用されます。データベース エンジンがインストールされた物理マシンまたは仮想マシンの構成を変更する前には Zen 製品キーを認証解除してください。構成の変更が完了したら再度認証してください。
『
Zen User's Guide』の
「キーを認証解除するには」および
「キーを認証するには」を参照してください。
Zen 停止時の動作
クラスター ノードでエラーが発生した場合、Zen クライアントはスタンバイ ノード上の Zen エンジンに自動的に再接続しません。アプリケーションでクライアントを Zen データベースに再接続するか、アプリケーションを再起動する必要があります。データベース エンジンで[自動再接続の有効化]がオンに設定されていたとしても同様の対処が必要です。
トランザクション一貫性保持がオフで、トランザクションが完了する前にエラーが発生した場合には、自動的にトランザクションを開始する前の状態にロール バックされます。つまり、すぐ前の完了済みチェック ポイントへ戻るということです。ロール バックは、アクティブ サーバーがデータ ファイルへのアクセスを要求した時点で発生します。
トランザクション一貫性保持を設定している場合、クラスター ノードに障害が発生した時点と最後のチェック ポイントの時点との間に発生した完了済みの変更は回復させることができます。トランザクション一貫性保持はすべてのノードで同じように構成される必要があります。また、トランザクション ログは共有記憶域に置かれます。ただし、トランザクション一貫性保持が有効だった場合でも、クラスターの障害が発生した時点で完了していないトランザクションは失われます。
Actian Zen エンジン サービスの停止と再起動
オペレーティング システムから Zen データベース エンジン サービスを手動で停止すると、アクティブ ノードからクラスターのフェールオーバーが発生します。サービス ノードのメンテナンスを実行しており、そのようなフェールオーバーを回避したい場合は、サービスをクラスター ユーティリティから停止します。
Zen 設定の変更
変更する設定によってはデータベース エンジンを再起動する必要があります。
「設定リファレンス」を参照してください。
►設定の変更を適用するために Zen データベース エンジン サービスを停止し、再起動するには
Windows クラスター アドミニストレーターで、次の手順を記載されている順序で実行します。
1 "Actian Zen Engine Service" を右クリックして、[このリソースをオフラインにする]をクリックします。
2 "Actian Zen Engine Service" を右クリックして、[このリソースをオンラインにする]をクリックします。
ソフトウェアのパッチ
ある時点で、Zen またはフェールオーバー クラスター ソフトウェアにパッチを適用する必要があるかもしれません。この実行をサポートするために、弊社では
バージョンアップ関連のサポート資料を提供しています。
マイグレーション
マイグレーションでは、Zen を実行している仮想マシンを、ある物理ホストから別のホストへ移動します。通常は、仮想マシンのメモリ、記憶域およびネットワーク接続が移行先に移行されます。ハイパーバイザーによって、マイグレーションは "ライブ" マイグレーションまたは "ホット" マイグレーションと呼ばれます。
"ライブ" マイグレーションまたは "ホット" マイグレーションでは、クライアントから Zen への接続がそのまま維持されます。これにより、ハードウェア バランスまたはリソース バランスの変更が可能です。"コールド" マイグレーションでは、仮想マシンを一時停止する必要があるため、ネットワーク接続が中断されます。クライアントから Zen への接続を再確立する必要があります。
マイグレーション環境には、実行中の Zen のインスタンスが 1 つだけあります。これにより、ホスト マシンがクラッシュした、またはホスト マシンを直ちにオフラインにする必要がある場合、その環境はやや脆弱になります。また、共有記憶域にエラーが生じた場合、データベース エンジンは物理記憶域に対する読み込みまたは書き込みを処理することができません。ハイパーバイザーによっては、共有記憶域を使用しないマイグレーション ソリューションを提供しています。
ホスト名が仮想マシンの移行後も同じままであれば、Zen は正常に動作し続けます。製品キーの状態は "アクティブ" のままです。
マイグレーション環境で Zen をインストールまたは構成する際、特別な手順は必要ありません。ハイパーバイザーのドキュメントを参照してください。
フォールト トレランス
フォールト トレラント環境はマイグレーション環境と似ていますが、さらにコンポーネントがエラーになっても動作が中断されないようする機能も備えています。フォールト トレラント環境では、ネットワーク接続、継続的なサービスおよび同期された共有記憶域を介したデータ アクセスが確保されます。コンポーネントの切り替えが起こっても、クライアント マシンおよびアプリケーションは正常に機能し続け、データベース エンジンは中断されません。
フォールト トレラント環境で Zen をインストールまたは構成する際、特別な手順は必要ありません。ハイパーバイザーのドキュメントを参照してください。
障害回復
障害回復にはデータの回復やサイトの回復が含まれています。データの回復はデータを保護および復元する方法です。サイトの回復は、データを含むサイト全体を保護および復元する方法です。
データの回復は、ハイパーバイザーの共有記憶域および Zen のトランザクション ログとトランザクション一貫性保持によって容易に行うことができます。
「トランザクション ログおよびトランザクション一貫性保持」を参照してください。Zen Enterprise Server および Cloud Server ではトランザクション ログとトランザクション一貫性保持を使用できます。
サイトの回復は物理マシンと仮想マシンのどちらでも実行できます。回復されたサイトでホスト名が同じままであれば、Zen は正常に動作します。これは一般に仮想マシンの場合です。物理マシンを回復する場合、回復したサイトでホスト名が回復前と異なっていると、Zen の起動時に Zen 製品キーの状態が検証失敗に変わります。Zen は検証失敗の状態でもしばらくの間は正常に動作し続けます。その間にキーを修復するか、元のサイトへ戻すことができます。
障害回復環境で Zen をインストールまたは構成する際、特別な手順は必要ありません。ハイパーバイザーのドキュメントを参照してください。