こんにちは、SCSKの前田です。
私が携わった LifeKeeper の案件で導入を行った ARK について紹介をかねてお話したいと思います。
今回は、SQL Server 編と言うことで、マイクロソフト社が開発したリレーショナルデータベース管理システムを簡単に冗長化するための ARK の導入事例について、ご紹介していきます。
注意
マイクロソフト によると、SQL Server フェイルオーバークラスターインスタンス (FCI) では、クラスターノードがドメインに参加している必要があります。この制限により、Windows 版の LifeKeeper を使用し、ワークグループ環境で SQL Server フェイルオーバークラスターインスタンスを保護することはできません。
おさらい
LifeKeeperのARKについて、おさらいしたいと思います。
ARK とは、Application Recovery Kits の略で、LifeKeeper が特定のアプリケーション(オープンソースソフトウェアや商用アプリケーション)を容易にリソースとして組み込むことが可能になる製品です。
ARK による、アプリケーションのリソースへの組み込みはウィザード形式(GUI上で設定)で作業が可能となり、ARK には、アプリケーションを操作(起動・停止・監視・再起動)するための4つのスクリプトがあらかじめ準備されているため、スクリプトを設計・作成するための開発工数の削減や人的なミスを防止することが出来ます。
概要説明
SQL Server ARK では、SQL Server 本体を保護対象リソースとして登録し、下記表にまとめたオプションサービス(必要に応じ選択が可能)を含めて保護する機能を提供します。
オプションサービス名 | 備考 |
---|---|
SQL Server Agent | |
SQL Server Reporting Services | |
Distributed Transaction Coordinator | |
SQL Server Browser | |
SQL Server VSS Writer | |
SQL Server Integration Services | SQL Server 2014 より利用可能 |
SQL Full-text Filter Daemon Launcher | SQL Server 2016 より利用可能 |
SQL Server Launchpad | SQL Server 2016 より利用可能 |
SQL Server PolyBase Data Movement | SQL Server 2016 より利用可能 |
SQL Server PolyBase Engine | SQL Server 2016 より利用可能 |
SQL Server CEIP service | SQL Server 2016 より利用可能 |
注意
SQL Server ARK では、SQL Server の次の機能を利用できません
・SQLレプリケーション(スナップショット、マージ、トランザクション)
・SQL のログ配布
・SQL データベースのミラーリング
・SQL Server AlwaysOn 可用性グループ
また、分散トランザクションはサポートされません。
SQL Server ARK は、汎用アプリケーション(Generic Application)リソースの導入とは違い、起動・停止・監視・再起動を行うためのスクリプトを明示的に指定することはなく、リソースの作成に必要な項目に対するパラメータをウィザード形式で入力または、選択することでリソースを作成することが出来ます。
SQL Server ARK として SQL Server の処理内容は以下の通りとなります。
SQL Server の処理
処理名 | 処理内容 |
---|---|
起動処理 | ① sc query コマンドによるサービス名を取得 ② ARK の内部処理($LKBIN/ScQueryState.exe)によってサービスの起動状態を取得 ③ サービスの状態が RUNNING 以外の場合、sc start コマンドによりサービスの開始を実施 ④ オプションサービスも保護する場合、オプションサービスに対して②と③を実施 ⑤ 起動した SQL Server 本体のサービスに対し、管理ユーザで接続出来るか確認を実施 |
停止処理 | ① オプションサービスも保護する場合、ARK の内部処理($LKBIN/ScQueryState.exe)によってオプションサービスの起動状況を取得 ② オプションサービスの状態が RUNNING か PAUSED の場合、sc stop コマンドによりオプションサービスの停止を実施 ③ ARK の内部処理($LKBIN/ScQueryState.exe)によって SQL Server 本体サービスの起動状況を取得 ④ SQL Server 本体サービスの状態が RUNNING か PAUSED の場合、sc stop コマンドにより SQL Server 本体サービスの停止を実施 ⑤ ④で SQL Server 本体サービスが停止出来なかった場合、net stop コマンドにより SQL Server 本体サービスの停止を実施 ⑥ ⑤で SQL Server 本体サービスが停止出来なかった場合、もう一度④で SQL Server 本体サービスの停止を実施 |
監視処理 | sc query コマンドにより、SQL Server 本体 及び、オプションサービスの起動状態の確認を実施 |
詳細監視処理 | ① SQL Server 本体のサービスに対し、管理ユーザで接続出来るか確認を実施 ② マスター DB にクエリーを発行し、結果が取得できるか確認を実施 |
再起動処理 | 起動処理と同一の処理を実施 |
SQL Server ARK の構築例
それでは、実際に SQL Server ARK の構築についてお話していきたいと思います。
SQL Server ARK のパラメータ項目
SQL Server のリソース作成時に設定する特有のパラメータを一覧表にまとめました。
項目 | 説明 |
---|---|
Microsoft SQL Server のインスタンスの選択 | LifeKeeper for Windows で保護する Microsoft SQL Server のインスタンスを選択 |
Microsoft SQL 管理ユーザ名の入力 | このサーバで Microsoft SQL の管理権限を持つユーザの名前を入力。(マスタデータベースに対する SA 権限が必要) |
パスワードの入力 | 入力したユーザアカウントの管理パスワードを入力 |
保護対象のオプショナルサービスの選択 | この階層で保護されるオプションの SQL サービスを選択(リストには LifeKeeper の保護に適したサービスのみが表示される) |
保護された IP アドレス | インスタンスで保護する IP アドレスを選択(名前付きパイプだけを使用する場合、IP アドレスは不要) |
名前付きパイプのエイリアス | 名前付きパイプの別名を入力 |
SQL Server リソースの作成
SQL Server リソースを LifeKeeper の GUI によって作成する流れを例として紹介します。
注意
SQL Server で使用する共有ディスクリソースと、 IP リソース、及び、別のリソース等、それぞれの依存関係がある状態で SQL Server リソースを作成した場合、SQL Server リソース作成時の自動による依存関係の作成が失敗する可能性があるため、必要に応じて依存関係を削除する必要があります。
以降の例では、共有ディスクリソースと IP リソースの依存関係がない状態で SQL Server リソースの作成を実施しています。
これで、LifeKeeper による SQL Server のリソースが完成です。
依存関係の作成
SQL Server リソースを作成した後、全リソースの起動(停止)する順序を定義するため、必要に応じてリソース間の依存関係(リソースツリーの下から起動され、上から停止される)を作成する必要があります。
例として、別で作成していた仮想 IP リソースを始めに起動させるようリソースツリーの下部に配置させ、その後に共有ディスクリソースと SQL Server が起動されるように依存関係を作成します。
処理内容 | GUI画面例 |
---|---|
依存関係作成前のツリー構造 | ![]() |
SQL Server リソースの依存関係作成後 | ![]() |
これで、SQL Server に関連する LifeKeeper によるリソース構成ツリーの完成です。
まとめ
今回は LifeKeeper ARK の導入事例と言うことで、SQL Server のリソース作成について紹介してみました。
SQL Server ARK は、汎用アプリケーション(Generic Application)リソースとは違い、起動・停止・監視・再起動を行うためのスクリプトを準備する必要がなく、リソースを作成することで意識することなく自動でスクリプトが導入されます。
また、SQL Server ARK では、SQL Server 本体を保護サービスとしてリソースに登録すると共に、必要なオプションサービスを保護する機能も提供しています。システムの要件に合わせ、保護対象のサービスを選択することが可能になっています。
SQL Server ARK を導入するための手順を纏めます。
・SQL Server のリソース固有のパラメータの設定値を検討する
・LifeKeeper GUI を用いて、SQL Server のリソースを作成する
・仮想 IP リソース含め、リソースの起動順序を定義するため依存関係を作成する
その他 ARK の導入事例に関しては以下のリンクからどうぞ!