Project

General

Profile

エンタープライズオプションの GGHealthCheck はどういう機能を提供するのか?

技術ノート
10/31/2013

[番号]
技術ノート KGTN 2011013101

[現象]
エンタープライズオプションの GGHealthCheck はどういう機能を提供するのか?

[説明]
ロードバランサのヘルスチェック機能 (TCP/IPレベル) でGGのポート491を監視した場合,GGは接続要求を検出した時点で様々なリソースを確保します (注:これは一斉ログオン等の高負荷な処理をさばくための仕様です) .しかし,ロードバランサはGGのプロトコルを喋りませんので,コネクションが切断されるまで,それらのリソースが確保され続けます.一斉ログオン時に,複数台のロードバランサがヘルスチェック機能 (TCP/IPレベル) を行うと,それがパフォーマンスに影響を与える可能性があります.GGHealthCheck は,このような問題 (これ以外にもWindowsの仕様に絡む問題があります) を解決するために作成しました.

GGHealthCheck は,定期的にGGサーバの稼働状況をチェックし (GMCheckRaw または GGSessionMonitor コマンドを使用します) ,その状況を記録します.ロードバランサのヘルスチェック機能 (TCP/IPレベル) でGGHealthCheck に接続要求があると, 1) 接続要求を受け付け, 2) 文字列 (最大128文字までの半角文字列) の受信を待ち, 3) 受信した文字列の末尾に “server = UP” という文字列を付加し返信 (送信) し, 4) コネクションを切断します.GGサーバが正常に稼働していない場合は, “server = DOWN” という文字列を付加します.なお,サーバ機能は 「多」 クライアントからの同時アクセス可能な実装になっています.

設定ファイル
設定ファイルGGHealthCheck.ini の default セクションで,以下のパラメタを設定して下さい.

設定項目 説明 mode S = サーバとして起動 (C = クライアントとして起動) host サーバのIPアドレス(IPv4 / IPv6) port サーバの待受けポートの番号 interval ヘルスチェックの間隔(秒) repeat ヘルスチェックの回数(注:-1は無限回) clSleep クライアント時のコネクション切断後の再チェックまでの間隔(秒) svSleep サーバ時のGGサーバを監視する間隔(秒) clTimeout クライアント時の送受信のタイムアウト時間(秒) svTimeout サーバ時の送受信タイムアウト時間(秒)
注:clTimeout +5秒以上を指定すること logd ログを保存するフォルダ(絶対パス) command GMCheckRaw または GGSessionMonitor を起動するコマンド errorCode 9999(固定)
注:クライアント機能は,サーバ機能が正常に動作しているかどうかを確認するためのツールです.通常の運用では, GGHealthCheck のサーバ機能のみを使用し,ロードバランサがこの時のクライアントになります.
設定項目は,下記のコマンドの引数で上書きすることが出来ます.

設定項目 説明 -s サーバとして起動 -c クライアントとして起動 -h address サーバのIPアドレス(IPv4/IPv6) -hp サーバの待受けポートの番号 -i sec コネクション切断後の再チェックまでの間隔(秒) -r times ヘルスチェックの回数(注:-1は無限回) -l dir ログを保存するフォルダ(絶対パス)

補足1 (Ver2.1.0またはそれ以降)
より手軽に利用したいというユーザ様からのご要望があり,以下のように仕様を拡張しました.この設定ではサービス GGAPS の状態を監視し,その結果をロードバランサのヘルスチェック機能に返信 (送信) します.

設定項目 説明 command *GGAPS を指定(APSの開始状態を監視)

補足2 (Ver2.2.0またはそれ以降)
エンタープライズオプション GGSessionMonitor と併用する場合は,以下の指定を行うことで,データベース中のサーバ状態を直接参照して結果を返すことが出来ます.

設定項目 説明 sql3 GGSessionMonitor が生成するデータベースファイルの絶対パス

Files

KGTN2011013101.pdf (106 KB) kitasp 技術センター, 10/31/2013 02:50 PM