PowerGres Plus HA 運用手引き

1 はじめに

本マニュアルは PowerGres Plus HA の日常的な運用について記述したものです。
より詳しい説明が必要なときにはそれぞれのマニュアルを参照してください。 マニュアルの参照についてはこちらを参照してください。

2 基本的な操作

LifeKeeper GUI の起動

LifeKeeper GUI を起動するとダイアログが表示されます。 Server Name、Login、Password にそれぞれログインするサーバ名、ユーザ名、パスワードを入力し、[OK] をクリックすると LifeKeeper GUI にログインすることができます。

コマンドラインからの起動

コマンドラインから LifeKeeper GUI を起動するには、以下のように lkGUIapp コマンドを実行します。

# /opt/LifeKeeper/bin/lkGUIapp &

Web ブラウザからの起動

Web ブラウザから LifeKeeper GUI を起動するには、以下の URL にアクセスします。

http://<server name>:81/

<server name> にはサーバ名を指定します。

LifeKeeper GUI の画面構成

LifeKeeper GUI にログインすると以下のような画面が表示されます。
この画面では、リソース階層やサーバ、リソースの状態を確認することができます。

LifeKeeper のマニュアル

LifeKeeper のマニュアルには「LifeKeeper Plus 日本語マニュアル」CD-ROM に含まれる PDF ファイル 「Release Notes」「Planning and Instllation Guide」「IP Recovery Kit Administration Guide」とオンラインマニュアルがあります。

man

LifeKeeper のコマンドのマニュアルを参照するには、コマンドラインから以下のように man コマンドを実行します。

# man -M /opt/LifeKeeper/man <name>

<name> にはマニュアルを参照するコマンド名を指定します。

例えば、lkstart コマンドのマニュアルを参照するには、以下のように man コマンドを実行します。

# man -M /opt/LifeKeeper/man lkstart

Online Product Manual

「Online Product Manual」を参照するには、Web ブラウザから以下の URL にアクセスします。

http://<server name>:81/help/lksstart.htm

<server name> にはサーバ名を指定します。

また、LifeKeeper GUI のメニューから「Help」、「Contents」を選択することによって「Online Product Manual」を参照することもできます。

PowerGres Plus のマニュアル

PowerGres Plus のマニュアルには「PowerGres Plus」CD-ROM に含まれる HTML ファイルがあります。

なお、PowerGres Plus のマニュアルにはPostgreSQL と異なることを中心に記述されているので、 PostgreSQL に関する詳しい説明は PostgreSQL のドキュメントを参照してください。
PostgreSQL のドキュメントは /usr/local/pgsqlplus/doc/html ディレクトリ以下にインストールされています。 また、以下の URL でも見ることができます。

PostgreSQL 8.2.5 文書
http://www.postgresql.jp/document/pg825doc/html/

3 モニタリング

正常状態の確認

LifeKeeper GUI からの確認

  1. サーバの状態がプライマリサーバ、バックアップサーバともに Alive となっている。
  2.  ↓

  3. コミュニケーションパスの状態がすべて Alive となっている。

    1. メニューから「Edit」、「Server」、「Properties...」 を選択するとダイアログが表示されます。
    2. タブから「CommPaths」を選択するとコミュニケーションパスの状態が表示されます。
    3. [OK] をクリックするとダイアログが閉じられます。

     ↓

  4. リソース階層の状態がすべて ISP (In-Service, Protected) となっている。
  5.  ↓

  6. すべてのリソースの状態がいずれかのサーバで ISP (In-Service, Protected) となっている。

コマンドラインからの確認

コマンドラインから正常な状態を確認するには以下のように lcdstatus コマンドを実行します。

# /opt/LifeKeeper/bin/lcdstatus -q

エラーの表示例

LifeKeeper ログの表示

LifeKeeper GUI からの表示

  1. LifeKeeper GUI を起動し、ログインします。
  2. # /opt/LifeKeeper/bin/lkGUIapp &
    
  3. メニューから 「Edit」、「Server」、「View Logs...」 を選択するとダイアログが表示されます。
  4. Server からログを表示するサーバを選択します。
  5. Log Type からログの種類を選択します。
  6. Log Size からログのサイズを選択します。
  7. [OK] をクリックするとダイアログが閉じられます。

コマンドラインからの表示

LifeKeeper のログは パイプと循環ファイルによって実装されているため、テキストエディタから読み込むことができません。 コマンドラインからログを表示するには、root ユーザで以下のように lk_log コマンドを実行します。
lk_log コマンドはログを表示するためのコマンドです。

# /opt/LifeKeeper/bin/lk_log <log>

<log> にはログの種類(log、LCD、LCM、TTYLCM、remote exec、GUI、SNMP のいずれか) を指定します。

例えば、log という種類のログを /tmp/lk.log ファイルに出力するには、以下のように lk_log コマンドを実行します。

# /opt/LifeKeeper/bin/lk_log log > /tmp/lk.log

ログの表示例

LifeKeeper ログの種類

LifeKeeper では6 種類のログが記録されます。

log
このログには LifeKeeper が保護しているアプリケーションやリソースに関する情報が含まれます。
アプリケーションの remove および restore スクリプトによって出力される情報、LifeKeeper の停止や起動、 サービスの起動やフェイルオーバーなど、LifeKeeper のほとんどのイベントがこのログに記録されます。
LCD
このログには LCD についての情報が含まれます。 LifeKeeper データベースやその状態の変化に関する情報がこのログに記録されます。
LCM
このログには LCM についての情報が含まれます。 TCP コミュニケーションパスのイベントや状態の変化がこのログに記録されます。
TTYLCM
このログには TTYLCM についての情報が含まれます。 TTY コミュニケーションパスのイベントや状態の変化がこのログに記録されます。
remote_exec
このログにはすべてのリモート なLifeKeeper のリクエストが記録されます。
GUI
このログには LifeKeeper GUI についての情報が含まれます。
SNMP
このログには SNMP トラップについての情報が含まれます。

PowerGres Plus のログ

PowerGres Plus のログは、syslog (/var/log/messages) に出力されます。

ログの表示例

2007-12-25 14:37:55 JST [16058]
   LOG:  database system was shut down at 2007-12-25 11:14:50 JST
2007-12-25 14:37:55 JST [16058] 
   LOG:  checkpoint record is at 0/42C858 
2007-12-25 14:37:55 JST [16058] 
   LOG:  redo record is at 0/42C858; undo record is at 0/0; shutdown TRUE
2007-12-25 14:37:55 JST [16058] 
   LOG:  next transaction ID: 0/598; next OID: 10820
2007-12-25 14:37:55 JST [16058] 
   LOG:  next MultiXactId: 1; next MultiXactOffset: 0
2007-12-25 14:37:55 JST [16058] 
   LOG:  database system is ready

SNMP トラップ

LifeKeeper では SNMP トラップによってサービスの起動やフェイルオーバーなどのイベントを送信することができます。

  1. lk configsnmp コマンドによってイベントを送信するサーバの IP アドレスを設定します。 ip にはイベントを受信するサーバの IP アドレスを指定します。
  2. # /opt/LifeKeeper/bin/lk_configsnmp ip
    

     ↓

  3. /etc/snmp/snmp.conf ファイルに以下の記述を追加します。
  4.  ↓

  5. イベントを受信するサーバで、以下のように snmptrapd コマンドを実行します。
  6. # snmptrapd -P
    

     ↓

  7. LifeKeeper GUI からイベントを発生させ、イベントを受信するサーバでログが標準出力に出力されることを確認します。

なお、SNMP トラップによるイベントの送信については「Online Product Manual」の 「Overview of LifeKeeper Event Forwarding via SNMP」も参照してください。
「Online Product Manual」のタブからContents を選択し、「Configuring LifeKeeper」、「LifeKeeper Event Forwarding via SNMP」、 「Overview of LifeKeeper Event Forwarding via SNMP」を選択すれば参照することができます。

LifeKeeper イベントテーブル

LifeKeeper イベント トラップ番号 オブジェクト ID
LifeKeeper Startup Complete 100 .1.3.6.1.4.1.7359.1.0.100
LifeKeeper Shutdown Initiated 101 .1.3.6.1.4.1.7359.1.0.101
LifeKeeper Shutdown Complete 102 .1.3.6.1.4.1.7359.1.0.102
LifeKeeper Manual Switchover Initiated on Server 110 .1.3.6.1.4.1.7359.1.0.110
LifeKeeper Manual Switchover Complete - recovered list 111 .1.3.6.1.4.1.7359.1.0.111
LifeKeeper Manual Switchover Complete - failed list 112 .1.3.6.1.4.1.7359.1.0.112
LifeKeeper Node Failure Detected for Server 120 .1.3.6.1.4.1.7359.1.0.120
LifeKeeper Node Recovery Complete for Server - recovered list 121 .1.3.6.1.4.1.7359.1.0.121
LifeKeeper Node Recovery Complete for Server - failed list 122 .1.3.6.1.4.1.7359.1.0.122
LifeKeeper Resource Recovery Initiated 130 .1.3.6.1.4.1.7359.1.0.130
LifeKeeper Resource Recovery Failed 131 .1.3.6.1.4.1.7359.1.0.131
LifeKeeper Resource Recovery Complete 132 .1.3.6.1.4.1.7359.1.0.132
LifeKeeper Communications Path Up 140 .1.3.6.1.4.1.7359.1.0.140
LifeKeeper Communications Path Down 141 .1.3.6.1.4.1.7359.1.0.141

4 メンテナンス

LifeKeeper の起動

LifeKeeper を起動するには、root ユーザで以下のように lkstart コマンドを実行します。 なお、LifeKeeper は、LifeKeeper GUI を起動するときには、すでに起動していなければなりません。

# /opt/LifeKeeper/bin/lkstart

LifeKeeper の起動

LifeKeeper を停止するには、root ユーザで以下のように lkstop コマンドを実行します。 このコマンドを実行すると、LifeKeeper に保護されていたリソースのサービスも停止します。

# /opt/LifeKeeper/bin/lkstop
-f
LifeKeeper に保護されているリソースのサービスを停止しません。
-n
LifeKeeper に保護されているリソースのサービスをバックアップサーバにフェイルオーバーさせます。 なお、-r および-f オプションとともに使用することはできません。
-r
システムを再起動したときに、LifeKeeper を起動します。 このオプションを指定しなければ、システムを再起動したときに、LifeKeeper は停止したままになります。

 ↓

例えば、LifeKeeper に保護されているリソースのサービスを、バックアップサーバにフェイルオーバーさせ LifeKeeper を停止するには、以下のように lkstop コマンドを実行します。

# /opt/LifeKeeper/bin/lkstop -n

LifeKeeper GUI Server の起動

LifeKeeper GUI を起動するには、それぞれのサーバで LifeKeeper GUI Server が起動していなければなりません。

LifeKeeper GUI Server を起動するには、root ユーザで以下のようにコマンドを実行します。

# /opt/LifeKeeper/bin/lkGUIserver start

LifeKeeper GUI Server を停止するには、root ユーザで以下のようにコマンドを実行します。

# /opt/LifeKeeper/bin/lkGUIserver stop

 ↓

PowerGres Plus の起動と停止

PowerGres HA では、LifeKeeper によって PowerGres Plus が保護されているため、 pg ctl コマンドで PowerGres Plus を停止したとしても、LifeKeeper によってローカルリカバリーされてしまいます。
LifeKeeper に保護されている PowerGres を起動・停止するには、LifeKeeper から PowerGres リソースのサービスを起動・停止しなければなりません。

LifeKeeper GUI からの起動と停止

  1. LifeKeeper GUI を起動し、ログインします。
  2. # /opt/LifeKeeper/bin/lkGUIapp &
    

     ↓

     ↓

  3. メニューから「Edit」、「Resource」、サービスの起動であれば「In Service...」、 サービスの停止であれば「Out of Service...」を選択するとダイアログが表示されます。
  4. サービスの起動であれば Server からサービスを起動するサーバを選択し、[Next] をクリックします。
  5. Resource(s) からサービスを起動・停止するPowerGres リソースを選択し、[Next] をクリックします。
  6. PowerGres リソースのサービスの起動であれば [In Service]、停止であれば [Out of Service] をクリックすると、 PowerGres リソースのサービスの起動、停止が開始されます。
  7. [Done] をクリックするとダイアログが閉じられます。

コマンドライン からの起動と停止

コマンドラインから PowerGres リソースのサービスを起動・停止するには、root ユーザで以下のように perform_action コマンドを実行します。

perform_action コマンドはアクションスクリプトを実行するコマンドです。

# /opt/LifeKeeper/bin/perform_action -t <tag> -a action

<tag> にはPowerGres リソースのタグ名を指定します。
<action> にはアクション名、サービスの起動であれば restore、サービスの停止であれば 
remove を指定します。

例えば、powergres-/share/data というタグ名の PowerGres リソースのサービスを停止するには、 以下のように perform_action コマンドを実行します。

# /opt/LifeKeeper/bin/perform_action -t powergres-/share/data -a remove

5 フェイルオーバーとスイッチオーバーの確認

初期設定が完了したことによって、PowerGres Plus が実際に LifeKeeper for Linux の保護下に置かれていることを確認します。

スイッチオーバーの確認

  1. プライマリサーバにおいて、PowerGres Plus のインスタンスが起動していることを確認します。
  2. PowerGres Plus が起動しているサーバで、データベースデーモン(postgres) が起動していることを確認します。 以下のようにプロセスが表示されたときは、PowerGres Plus が起動しているということです。

    # ps -C postgres
    PID TTY TIME CMD
    1246 ? 00:00:00 postgres
    1249 ? 00:00:00 postgres
    1251 ? 00:00:00 postgres
    

     ↓

  3. PowerGres Plus Database リソース階層を、バックアップサーバへスイッチオーバーさせます。
  4. LifeKeeper GUI を起動し、PowerGres Plus が起動していないサーバの PowerGres リソースに対して In Service を実行すると PowerGres Plus がスイッチオーバーされます。

    1. LifeKeeper GUI を起動し、ログインします。
    2. # /opt/LifeKeeper/bin/lkGUIapp &
      
    3. LifeKeeper GUI の Edit メニューから Resource を選択し、そして、In Service を選択します。
    4. クラスタ内のすべてのサーバが含まれるリストから、PowerGres Plus Database リソース階層をサービス中にさせたい Server、 ここではバックアップサーバを選択します。
    5. 選択したサーバ上に存在するすべてのリソース階層が含まれるリストか、PowerGres Plus Database リソース階層を選択します。
    6. 選択したサーバ上の選択したリソース階層をサービス中にすることを確認するダイアログボックスが、表示されます。
      [In Service] をクリックすると、リソース階層をサービス中にすることが開始されます。
    7. リソース階層をサービス中にしている状態が、インフォメーションボックスに表示されます。
      [Done] をクリックすると、ダイアログボックスが閉じられます。

     ↓

    LifeKeeper GUI によるスイッチオーバーについて、詳しくは「LifeKeeper for Linux 日本語マニュアル」を参照してください。

     ↓

  5. スイッチオーバーされたことを確認します。
  6. PowerGres Plus がスイッチオーバーされたサーバで、データベースデーモンが起動していることを確認します。 以下のようにプロセスが表示されたときは、PowerGres Plus がスイッチオーバーされたということです。

    # ps -C postgres
    PID TTY TIME CMD
    1278 ? 00:00:00 postgres
    1280 ? 00:00:00 postgres
    1282 ? 00:00:00 postgres
    

フェイルオーバーの確認

  1. PowerGres Plus が実際に起動していることを確認します。
  2. PowerGres Plus が起動しているサーバで、データベースデーモンが起動していることを確認します。 以下のようにプロセスが表示されたときは、PowerGres Plus が起動しているということです。

    # ps -C postgres
    PID TTY TIME CMD
    1246 ? 00:00:00 postgres
    1249 ? 00:00:00 postgres
    1251 ? 00:00:00 postgres
    

     ↓

     ↓

  3. PowerGres Plus をフェイルオーバーします。
  4. PowerGres Plus が起動しているサーバで、データベースデーモンを強制的に停止します。

    # kill <pid>
    
    <pid> には、データベースデーモンのプロセス ID を指定します。
    

    しかし、データベースデーモンを強制的に停止しただけでは、データベースデーモンがローカルリカバリされるため、 PowerGres Plus がフェイルオーバーされません。 そこで、データベースデーモンを起動できないようにするため、データベースデーモンのファイル名を一時的に変更します。

    # mv /usr/local/pgsqlplus/bin/postgres /usr/local/pgsqlplus/bin/postgres~
    

    しばらくすると、PowerGres Plus が 優先度が高いサーバへフェイルオーバーされます。 PowerGres Plus のフェイルオーバー確認後、データベースデーモンのファイル名は必ず元に戻してください。

     ↓

  5. フェイルオーバーされたことを確認します。
  6. PowerGres Plus がフェイルオーバーされたサーバで、データベースデーモンが起動していることを確認します。 以下のようにプロセスが表示されたときは、PowerGres Plus がフェイルオーバーされたということです。

    # ps -C postgres
    PID TTY TIME CMD
    1278 ? 00:00:00 postgres
    1280 ? 00:00:00 postgres
    1282 ? 00:00:00 postgres
    

    PowerGres Plus がもともと起動していたサーバで、データベースデーモンのファイル名を元に戻します。

    # mv /usr/local/pgsqlplus/bin/postgres~ /usr/local/pgsqlplus/bin/postgres
    

6 FAQ

FAQ については以下のURL も合わせて参照してください。

LifeKeeper ユーザサイト内 FAQ (サイオステクノロジー株式会社)

ユーザサイト:
http://sios-steeleye.sios.com/
ユーザサイト内 FAQ:
http://sios-steeleye.sios.com/modules/smartfaq/

PowerGres の FAQ
http://powergres.sraoss.co.jp/s/ja/faq.php