- Community Home
- >
- HPE Community, Japan
- >
- HP-UX
- >
- System Management
- >
- ServiceGuard に関して
カテゴリ
Company
Local Language
フォーラム
ディスカッションボード
フォーラム
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
ディスカッションボード
ディスカッションボード
ディスカッションボード
フォーラム
ディスカッションボード
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
フォーラム
ブログ
- RSS フィードを購読する
- トピックを新着としてマーク
- トピックを既読としてマーク
- このトピックを現在のユーザーにフロートします
- ブックマーク
- 購読
- 印刷用ページ
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-30-2004 02:26 PM
11-30-2004 02:26 PM
ServiceGuard に関して
cmhaltserv というコマンドをパッケージ制御ファイルの関数 halt_services から起動しているのですが、このコマンドの動作がよくわかりません。
マニュアルには以下のように書いてあるのですが、PIDが何のPIDを指しているのかがわかりません。
「このコマンドによって、SIGTERM シグナルがPID と監視中のサービスの対応するプロセスグループに送信されます。実行中のアプリケーションがシグナルを受信すると、アプリケーションによってプロセスが停止されます。」
パッケージ制御スクリプトの流れを考えると、モニタプロセスを停止しているのではないかと思うのですが。。。
また、test_return 9 の呼び出しの中で表示しているメッセージがログに載らないという現象も起きています。
どなたかわかる方いらっしゃいますか?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-30-2004 04:53 PM
11-30-2004 04:53 PM
ServiceGuard に関して
ドキュメントID: UXSGKBAN00000157
ServiceGuardパッケージ フェイルオーバの理由
CASE 3 - パッケージサービスプロセスIDがなくなりました。
-------------------------------------------
ServiceGuardは、コントロールスクリプトを使用してパッケージのスタートアップと
シャットダウンを自動化します。コントロールスクリプトが「サービス」を開始する
と、サービスのプロセスID(PID)をServiceGuardのメインデーモン - cmcldに渡しま
す。cmcldがPIDのないのを検出すると、サービスの再開を試行します。
サービス再開の試行に失敗すると、ServiceGuardは恐らくパッケージを相手のホスト
に転送しようとするでしょう。Syslog.logメッセージは、PIDには触れませんが、
「サービス」を参照します。
オリジナルホストのsyslog.log
--------------------------
Jan 19 16:03:27 ion cmcld: Service pkg2_xclock in package pkg2 has gone down.
<-----
Jan 19 16:03:27 ion cmcld: Disable node ion from running package pkg2.
Jan 19 16:03:27 ion cmcld: Executing '/etc/cmcluster/pkg2/pkg.sh stop'
for package pkg2, as service PKG*22785.
Jan 19 16:03:27 ion cmcld: Service pkg2_xclock terminated due ton an exit(0).
Jan 19 16:03:29 ion CM-pkg2: cmhaltserv pkg2_xclock
Jan 19 16:03:32 ion LVM: vgchange -a n vg02
Jan 19 16:03:37 ion cmcld: Service PKG*22785 terminated due to an exit(0).
Jan 19 16:03:37 ion cmcld: Halted package pkg2 on node ion.
>マニュアルには以下のように書いてあるのですが、PIDが何のPIDを指しているのか
>がわかりません。
サービスのプロセスIDです。
上記では pkg2_xclock のプロセスIDの 9731 です。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
11-30-2004 06:55 PM
11-30-2004 06:55 PM
ServiceGuard に関して
パッケージとは複数のサービスで構成されるもので、サービスはサービスコマンド(プロセス)と1対1になります。で、このサービスコマンド(プロセス)をモニターすることで、サービスに異常がないかどうかをモニターしているために、モニタープロセスとも言うのでしょうから。
例えば、pkg の conf ファイルに、
SERVICE_NAME pkg_serv1
SERVICE_FAIL_FAST_ENABLED NO
SERVICE_HALT_TIMEOUT 300
SERVICE_NAME pkg_serv2
SERVICE_FAIL_FAST_ENABLED NO
SERVICE_HALT_TIMEOUT 300
とあったとすると、control script には、以下のように、必ずこの二つのサービスに対するサービスコマンド(モニタープロセス)やリスタートの定義があるということです。
SERVICE_NAME=pkg_serv1
SERVICE_CMD="/usr/bin/X11/xclock -display 192.10.25.54:0"
SERVICE_RESTART=""
SERVICE_NAME=pkg_serv2
SERVICE_CMD="/usr/bin/X11/xload -display 192.10.25.54:0"
SERVICE_RESTART="-r 2"
cmhaltserv(1M)にはサービス名を指定しますが、このコマンドを実行すると、cntl script に定義されているサービス名に対応したサービスコマンドのPIDにシグナルを送信するということです。
test_return 9 のメッセージがログに載らないというのは、普通に考えると、cmhaltserv(1M)の戻り値が 0 ということなのではないですか?function halt_services に問題がなければ普通出ないもので、出るほうが問題だと思うのですが…
それとも、cmhaltserv の戻り値が 0 以外なのにメッセージが出ない場合について言及されているのですか?ちょっと仰ってる意味がよくわかりません。
function test_return はその直前のコマンドの戻り値を check して、0 以外の場合には WARNING や ERROR を表示するというものですよね?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
12-01-2004 10:43 AM
12-01-2004 10:43 AM
ServiceGuard に関して
・cmhaltserv について
control script からは、直接アプリケーションを起動しているわけではなく、アプリケーションの生死の確認をおこなうモニタプロセス(シェル)を起動しているため、モニタプロセスという表現を使いました。この場合モニタ=サービスと考えていいということですね。
以下の流れになると考えてよいのでしょうか?
※pkg_01 はパッケージ名、pkg_01.sh は pkg_01 の起動コマンド
cmrunserv pkg_01 pkg_01.sh
(pkg_01.sh を実行し、PID をpkg_01 に結びつけて cmcld が保持)
↓
cmhaltserv pkg_01
(pkg_01 に結びついた PID に対して cmcld が SIGTERM を送信)
・test_return について
cmmakepkg にて control script のテンプレートを作成しますと、以下のように戻り値の判定をせずに test_return を呼び出す形になっています。ところが、control.sh.log には test_return 9 の呼び出しで表示されるはずのエラーメッセージが表示されていなかったため、これはなぜなのかが疑問点です。
-----------------------------------
# Halt each service using cmhaltserv(1m).
function halt_services
{
for I in ${SERVICE_NAME}
do
print "$(date '+%b %e %X') - Node \"$(hostname)\": Halting service $I"
cmhaltserv $I
test_return 9
done
}
-----------------------------------
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
12-01-2004 10:58 AM
12-01-2004 10:58 AM
ServiceGuard に関して
自分で解決しました。
見落としてましたが、test_return の先頭に
if (( $? != 0 ))
という判定がありますね。。。