MSFCのクラスタリソースとして動作しているSQL Server や SQL Server Agentを再起動する場合、
必ずフェールオーバクラスタマネージャ上から行う必要があります。
コントロールパネルのサービス一覧やnetコマンドで直接サービスを停止してはいけません。
なぜなら、クラスタリソースとして動作しているSQL Server や SQL Server Agentは
クラスタサービスの管理下に置かれています。
クラスタサービスからオフライン/オンライン操作を行うと、以下のように要求が走ります。
1.クラスタサービス → SQL Server クラスタリソース へクラスタリソースのオンライン/オフライン要求が走ります。
2.SQL Server クラスタリソース → サービスコントロールマネージャ へサービスの開始/停止要求が走ります。
3.サービスコントロールマネージャ → SQL Server サービス へサービスの開始/停止要求が走ります。
コントロールパネルのサービス一覧やnetコマンドで直接サービスを停止した場合、
停止要求は直接 サービスコントロールマネージャへ送られます。
クラスタサービスから見るとオフライン要求を掛けていないにもかかわらずサービスが停止しているため、
クラスタリソースが失敗したと見なされます。
その結果クラスタリソースの状態としては「失敗」となり、
復旧させるためクラスタサービスによってオンライン要求が出されます。
ただし、ここにサービスの依存関係が絡んできます。
SQL Server Agent クラスタリソースはSQL Server クラスタリソースに依存し、
SQL Server Agent サービスはSQL Server サービスに依存しています。
何れかのサービスをサービス一覧やnetコマンドで停止した場合、
これらの依存関係が絡み合ってサービスの停止/開始/失敗が連鎖的に発生する可能性があります。
こうなると、フェールオーバしてしまったり予期せぬ動作にが起きることになります。
正しい手順で再起動を行うようにしましょう。
コメント