Serviceguard + Oracle DB 構築手順 - Hewlett Packard

HP Integrity サーバ + HP-UX 11i v3(11.31)
Serviceguard + Oracle DB 構築手順
3. Serviceguard クラスタの作成
初版 2009/07
目次
3.
Serviceguard クラスタの作成 .......................................................................................................... 2
3.1
クラスタ作成の前に(全ノード作業) ........................................................................................... 3
3.2
クラスタの作成(作業ノード hp01 で作業)................................................................................ 10
3.3
クラスタ操作方法(起動と停止) .............................................................................................. 15
関連情報 .......................................................................................................................................... 24
HP-UX 11i Knowledge-on-Demand ....................................................................................................... 24
3. Serviceguard クラスタの作成
この章の概要
Serviceguard クラスタを作成します。
Oracle DB ソフトウェアのインストールを先に行うことも可能ですが、Serviceguard クラスタを先に作成しておくと、前章
で作成した共有ディスクの排他制御が可能になります。操作ミスによる、複数ノードからの共有ディスク上のファイルシ
ステムの同時マウント等を防ぐことが可能です。このため、ここでは Serviceguard クラスタを先に構築しています。
含まれる内容
□ Serviceguard クラスタの作成
□ Serviceguard クラスタの起動と停止
2
3.1 クラスタ作成の前に(全ノード作業)
1. 作業前に決めておく項目
クラスタ作成にあたって、いくつか決めておく項目があります。(表 3-1)
項目名
説明
クラスタ名
クラスタの名前です。デフォルトは“cluster1”ですが、ServiceGuard Manager 等の監
視ソフトウェア(複数のクラスタを監視可能)を使用する場合等を考慮し、ユニークなク
ラスタ名を決めておきます。
ハートビート用ネットワーク
クラスタ内で使用されるいくつかのネットワーク対して、クラスタ特有のハートビート通
信を行わせる・行わせないの選択を決めておきます。特にハートビート通信を行わせ
たくないネットワークが存在しない場合は、可用性を高めるため、すべてのネットワー
クにハートビート通信を行わせて構いません。
クラスタロック機能
いくつかの障害発生時に、クラスタの生存ノード選定処理に、クラスタロック機能を必
要とします。クラスタロック機能の1つの実装方法は、共有 VG 上に構築する「ロックデ
ィスク」があります。「ロックディスク」は Oracle DB で使用するデータを配置する共有
VG と兼用できるためコストはかかりませんが、クラスタ再構成に約 60 秒(フォルト設
定時)かかります。なお、Serviceguard Extension for Faster Failover を導入すれば、
このクラスタ再構成の時間を数秒に短縮することも可能です。3 台以上のクラスタでは
クラスタロック機能は必須ではありません。
ハートビートインターバル
ハートビートタイムアウト
使用パッケージ総数
クラスタ内でノードの UP/DOWN をチェックするためにハートビート通信が行われま
すが、その送信間隔(ハートビートインターバルデフォルト 1 秒)とそのタイムアウト(デ
フォルト2秒)を決めておきます。
障害時に待機ノードへフェイルオーバーする単位を Serviceguard では「パッケージ」と
呼びます。Oracle DB の場合は、DB インスタンスとリスナーを合わせて DB パッケー
ジと設定されます。このパッケージを幾つ作成可能にするかを決めておきます。デフォ
ルト値は Serviceguard11.17 より前のバージョンではゼロ、Serviceguard 11.17 以
降では 150 です。Oracle DB で複数のインスタンスを使用する場合はインスタンス毎
にパッケージが必要です。
表 3-1 クラスタ作成前に決めておく項目一覧
3
2. /etc/hosts ファイルの変更(全ノード作業)
/etc/hosts の記載方法に制約があります。クラスタノード間の通信可能な全 IP アドレスに対して、hostname コマンドで
表示されるホスト名をエイリアスとして設定しなければなりません。
[設定ファイル]
/etc/hosts
実行例
etc/hosts ファイルを編集します。ここではエディターとして vi を使用しています。
/etc/hosts ファイル:
使用するすべてのネットワークを書き込みます。クラスタに参加する全ノードに同じファイルを作成します。
4
3. /etc/nsswitch.conf ファイルの変更(全ノード作業)
DNS を使用している場合は、DNS より先に/etc/hosts ファイルを参照させる制約があります。以下に
/etc/nsswitch.conf の設定例を示します。
[設定ファイル]
/etc/nsswitch.conf
実行例
/etc/nsswitch.conf ファイルを編集します。ファイルが存在しない場合は、新規作成します。ここではエディターとして vi
を使用しています。
/etc/nsswitch.conf ファイル:
クラスタに参加する全ノードに同じ内容に編集します。
5
4. /etc/cmcluter/cmclnodelist ファイル作成(全ノード作業)
クラスタに参加させるすべてのノードを/.rhosts ファイルまたは/etc/cmcluster/cmclnodelist ファイルに登録しておきま
す。
このファイルは存在しませんので新規に作成します。/.rhosts ファイルはセキュリティ上、作成を認めない方針のシステ
ムもあります。その場合は、/etc/cmcluster/cmclnodelist ファイルを作成します。
ここでは、セキュリティを考慮し、/etc/cmcluster/cmclnodelist ファイルを使用します。
[設定ファイル(新規作成)]
/etc/cmcluster/cmclnodelist
実行例
/etc/cmcluster/cmclnodelist ファイルを作成します。ここではエディターとして vi を使用しています。
/etc/cmcluster/cmclnodelist ファイル:
使用するすべてのホスト名を書き込みます。ホスト名は hostname コマンドで表示される名前を指定します。クラスタに
参加する全ノードに同じファイルを作成します。
セキュリティを考えてファイルのパーミッションを読み取り専用に変更します。
ワンポイント・アドバイス
Servicegard 11.16 以降では、cmclnodelist のエントリーは、クラスタ構成ファイル内のアクセス制御ポリシーに自動的
に組み込まれます。アクセスロールの詳細については、マニュアル「Serviceguard の管理第 15 版」の第 5 章 HA クラ
スタの構成、クラスタの構成、クラスタへのアクセスの制御を参照してください。
6
5. 作業ノード以外で共有ボリュームグループ(VG)のディアクティベイト(作業ノード hp02)
ここではノード hp01 でクラスターを作成します。ノード hp01 以外で共有 VG がディアクティベイト(非活性化)されてい
ることを確認し、アクティベイトされたままの場合はディアクティベイトします。また、作業ノード hp01 側では、他のノード
の共有 VG のディアクティブを確認後に共有 VG をアクティベイト(活性化)します。
[コマンド説明]
# vgdisplay [共有 VG 名]
# vgchange –a [y/n] [共有 VG 名]
オプション
設定する内容/設定値の意味
–a [y/n]
y を指定すると、VG をアクティベイト(活性化)します。
n を指定すると、VG をディアクティベイト(非活性化)します。
引数
設定する内容/設定値の意味
共有 VG 名
共有 VG 名を指定します。
実行例
作業ノード hp01 以外では、共有 VG がアクティブになったままの場合はディアクティベイトします
7
作業ノード hp01 では、共有 VG をアクティベイトします。
8
共有 VG をアクティベイトするだけで構いません。ファイルシステムとしてマウントする必要はありません。
ワンポイント・アドバイス
ファイルシステムをアンマウントしていないと、VG のディアクティベイトは実行できません。
bdf(1M) コマンドまたは df(1M) コマンドで、マウント状況を確認できます。
アンマウントを行う時に、“Device Busy”でアンマウントできないことがあります。この場合は、何かのプロセスがファイ
ルシステムを使用しています。使用中はアンマウントできません。どのプロセスが使用しているのかわからない場合は、
「# fuser -u /oradata」などを実行します。プロセス番号が表示された場合は、その数字の部分だけ(英字は削ります)
を「# ps -ef | grep [数字部分]」コマンドで調べることにより使用中のプロセスを特定できます。fuser コマンドで複数の
プロセスが表示された場合も、この方法で 1 つずつ解決します。
su コマンドを繰り返し使用している場合、作業をしている自分自身のシェルのどれかが/oradata などにいるケースも
あります。どうしても解決できない場合は、すべてのターミナルを exit コマンドで抜けて、新規ターミナルから再度アンマ
ウントを行います。
9
3.2 クラスタの作成(作業ノードhp01 で作業)
1. クラスタ設定ファイルの作成(作業ノード hp01)
クラスタ設定ファイルを作成します。cmquerycl(1M) コマンドによってサンプルファイルが抽出されますので、そのファ
イルを編集します。
[コマンド説明]
# cmquerycl -v -C [クラスタ設定ファイル] –n [ホスト名] –n [ホスト名] (-n …)
オプション
設定する内容/設定値の意味
-v
コマンド実行時の冗長メッセージを出力します。
-C[ クラスタ設定
ファイル]
デフォルト設定値のサンプル・クラスタ設定ファイルの名前を指定します。ファイル名は任意
です。相対パスで指定する場合は、コマンド実行のカレントディレクトリに作成されます。
-n[ ホスト名]
クラスタに参加させるノードのホスト名を"-n"オプション区切りで全ノード指定します。
実行例
10
2. クラスタ設定ファイルの編集(作業ノード hp01)
cmquerycl(1M) コマンドで作成したクラスタ設定ファイルを編集し、作業前に決めておいた項目内容を反映させます。
[設定ファイル]
/etc/cmcluster/cluster.ascii
実行例
/etc/cmcluster/cluster.ascii ファイルを作成します。ここではエディターとして vi を使用しています。
/etc/cmcluster/cluster.ascii ファイル:
「編集箇所」以外のパラメータも確認の上、必要があれば変更します。
11
3. クラスタの作成(作業ノード hp01)
クラスタ設定ファイルを使用してクラスタを作成します。
[コマンド説明]
# cmapplyconf –v –C [クラスタ設定ファイル]
オプション
設定する内容/設定値の意味
-v
コマンド実行時の冗長メッセージを出力します。
-C [クラスタ設定ファイ
ル]
cmquerycl(1M) コマンドで作成し、編集したものを指定します。
実行例
12
ワンポイント・アドバイス
クラスタ作成可能な状態にあるかどうかをチェックする、cmcheckconf(1M) コマンドもあります。
cmapplyconf(1M) コマンドを実行する前にチェックすることも出来ます。
cmcheckconf(1M) コマンドの実行例:
削除する場合は、cmdeleteconf(1M) コマンドを使用して削除を行います。
※クラスタ起動中は削除できません。停止させてから削除を行います。
cmdeleteconf(1M) コマンドの実行例:
13
4. 作業ノードで共有ボリュームグループ(VG)のディアクティベイト(作業ノード hp01)
作業ノード hp01 側でアクティブにしていた共有 VG をディアクティベイトします。
[コマンド説明]
# vgchange –a n [共有 VG 名]
オプション
設定する内容/設定値の意味
–a n
n を指定すると、VG をディアクティベイト(非活性化)します。
引数
設定する内容/設定値の意味
共有 VG 名
共有 VG 名を指定します。
実行例
クラスターを作成した時点で、共有 VG はクラスターによって排他制御されます。
今後、クラスターが稼動していない状態では共有 VG をアクティベイトできなくなります。
14
3.3 クラスタ操作方法(起動と停止)
1. クラスタの起動(クラスタ内の任意の 1 ノード作業)
クラスタを起動させます。クラスタに参加しているどれか 1 ノードで実行します。
[実行コマンド]
# cmruncl -v
オプション
設定する内容/設定値の意味
–v
コマンド実行時の冗長メッセージを出力します。
実行例
クラスタを起動しただけでは共有 VG へのアクセスは出来ません。次の作業で共有 VG のアクティベイト方法を説明し
ます。
15
2. クラスタの起動確認(クラスタ内の任意の 1 ノード作業)
クラスタの起動状態を確認します。クラスタに参加しているどれか 1 ノードで実行します。
[確認コマンド]
# cmviewcl -v
オプション
設定する内容/設定値の意味
–v
コマンド実行時の冗長メッセージを出力します。
実行例
すべての STATE/STATUS が up/running になっていなければなりません。
16
ワンポイント・アドバイス
cmruncl(1M) コマンドを実行したときの各ノードのシステムのログもチェックします。ここでは、hp01 で cmruncl(1M)
コマンドを実行しています。
hp01 のシステムのログ(/var/adm/syslog/syslog.log)ファイルの出力結果例:
17
hp02 のシステムのログ(/var/adm/syslog/syslog.log)ファイルの出力結果例:
18
3. 共有 VG のアクティベイト・ファイルシステムのマウント(クラスタ内の作業する 1 ノード作業)
クラスタ起動後、共有 VG をアクティベイトし、ファイルシステムをマウントします。この作業はどれか 1 ノード上でしか
行えません。Serviceguard の場合、複数ノードから同時に共有 VG をアクティベイトすることはできません。
[コマンド説明]
# vgchange –a e [VG 名]
# mount -F vxfs -o log,largefiles,nodatainlog [LV 名] [マウントポイント]
オプション
設定する内容/設定値の意味
(vgchnage) -a e
Serviceguard の排他制御対応のオプションです。1 ノード上でアクティブ中の VG は他のノ
ードからはアクティブさせない機能が働いています。クラスタ作成作業中に使用していた
「vgchange -a y」は使用できなくなり、「vgchange -a e」を使用します。
実行例
この作業は、Oracle データベースを作成後、Serviceguard の「パッケージ化」を行うことにより自動化され、メンテナン
ス作業等の特殊ケース以外では不要になります。
19
4. ファイルシステムのアンマウント・共有 VG のディアクティベイト(マウント中のノード作業)
正しくマウントされていない、あるいは何らかの理由でクラスタを停止させたい場合や、アクティベイト・マウントしている
共有 VG をディアクティベイトしたい場合には、これ以降の作業を実施します。また、現在アクティベイトされている共有
VG を他のノードでアクティベイト・マウントさせたい場合にも、先に、アクティベイトされているノードでこの作業が必要で
す。
とくに問題がなければ、HP-UX 11i v3(11.31) + Oracle DB 10g R2 データベース構築手順の「Oracle インストー
ル」に進んでください。
[コマンド説明]
# umount [マウントポイント]
# vgchange –a n [VG 名]
実行例
この作業は、Oracle DB インストール・DB 作成後に、Serviceguard の「パッケージ化」を行うことにより自動化され、メ
ンテナンス作業等の特殊ケース以外では不要になります。
ワンポイント・アドバイス
bdf(1M) コマンドまたは df(1M) コマンドで、マウントを確認できます。
アンマウントを行う時に、“Device Busy”でアンマウントできないことがあります。この場合は、何かのプロセスがファイ
ルシステムを使用しています。使用中はアンマウントできません。どのプロセスが使用しているのかわからない場合は、
「# fuser -u /oradata」等を実行します。プロセス番号が表示された場合は、その数字の部分だけ(英字は削ります)を
「# ps -ef | grep [数字部分]」コマンドで調べることにより使用中のプロセスを特定できます。fuser コマンドで複数のプ
ロセスが表示された場合も、この方法で 1 つずつ解決します。
su コマンドを繰り返し使用している場合、作業をしている自分自身のシェルのどれかが/oradata などにいるケースも
あります。どうしても解決できない場合は、すべてのターミナルを exit コマンドで抜けて、新規ターミナルから再度アンマ
ウントを行います。
20
5. クラスタの停止(クラスタ内の任意の1ノード作業)
クラスタを停止させます。クラスタに参加しているどれか 1 ノードで実行します。この作業の実行前に、すべてのノード
上で共有 VG がディアクティベイトされていなければいけません。
[実行コマンド]
# cmhaltcl [-f] -v
オプション
設定する内容/設定値の意味
–f
強制実行オプションです。パッケージが起動されている場合、パッケージを停止させて、そ
の後にクラスタを停止させます。
–v
コマンド実行時の冗長メッセージを出力します。
実行例
すべてのノードで、共有 VG がアクティベイトされていないことを確認します。アクティベイトされている場合はディアクテ
ィベイトします。この作業はクラスタ内のすべてのノードで確認します。
クラスタ内のどれか任意の 1 ノードから、クラスタを停止します。
21
ワンポイント・アドバイス
クラスタの停止の確認を、cmviewcl(1M) コマンドで行います。
クラスタ停止後の cmviewcl(1M) の実行例:
22
また、各ノードのシステムのログ(/var/adm/syslog/syslog.log)のチェックも行い、エラーが出ていないかどうかを確
認します。
hp01 のシステムのログ(/var/adm/syslog/syslog.log)ファイルの出力結果例:
hp02 のシステムのログ(/var/adm/syslog/syslog.log)ファイルの出力結果例:
23
関連情報
Serviceguard の管理
http://www.docs.hp.com/ja/B3936-90136/B3936-90136.pdf
Serviceguard A.11.18 リリースノート
http://www.docs.hp.com/ja/B3935-90120/index.html
HP-UX 11i Knowledge-on-Demand
www.hp.com/jp/kod
HP-UX をはじめとした技術情報を Web 経由で提供する情報提供プログラムです。
記載されている会社名および商品名は、各社の商標または登録商標です。
記載事項は2009 年7 月現在のものです。
本書に記載された内容は、予告なく変更されることがあります。
本書中の技術的あるいは校正上の誤り、省略に対して、
いかなる責任も負いかねますのでご了承ください。
© Copyright 2009 Hewlett-Packard Development Company, L.P.
日本ヒューレット・パッカード株式会社
〒102-0076 東京都千代田区五番町7
24
PDFHS09019-01