9 リモートホストでのサービスの管理 #
リモートホストでサービスを監視および管理できることが、ここ数年の間にますます重要になってきています。SUSE Linux Enterprise High Availability 11 SP3では、監視プラグインを介したリモートホストでのサービスの詳細な監視機能を提供してきました。SUSE Linux Enterprise High Availability 15 SP6では、最近追加されたpacemaker_remote
サービスを使用すると、リモートマシンにクラスタスタックをインストールしていなくても、実際のクラスタノードと同様にリモートホストでリソースを全面的に管理および監視できます。
9.1 監視プラグインを使用したリモートホストでのサービスの監視 #
仮想マシンの監視はVMエージェント(ハイパーバイザにゲストが出現する場合のみチェックを行う)を使用して行うか、VirtualDomainまたはXenエージェントから呼び出される外部スクリプトによって行うことができます。これまでは、精度の高い監視を行うには、仮想マシン内にHigh Availabilityスタックを完全にセットアップするしか方法がありませんでした。
今回、SUSE Linux Enterprise High Availabilityでは、監視プラグイン(旧称はNagiosプラグイン)に対するサポートを提供することで、リモートホストでサービスを監視できるようになりました。ゲストイメージを変更することなく、ゲストの外部ステータスを収集できます。たとえば、VMゲストはWebサービスまたは単純なネットワークリソースを実行している可能性があり、これらはアクセス可能である必要があります。Nagiosリソースエージェントによって、ゲスト上のWebサービスまたはネットワークリソースを監視できるようになりました。これらのサービスにアクセスできなくなった場合は、SUSE Linux Enterprise High Availabilityがそれぞれのゲストの再起動またはマイグレーションをトリガします。
ゲストがサービス(そのゲストによって使用されるNFSサーバなど)に依存している場合、そのサービスは、クラスタによって管理される通常のリソースか、Nagiosリソースによって監視される外部サービスのどちらかにすることができます。
Nagiosリソースを設定するには、ホスト上に次のパッケージをインストールする必要があります:
monitoring-plugins
monitoring-plugins-metadata
必要に応じて、YaSTまたはZypperが、これ以上のパッケージに対する依存性を解決します。
一般的な使用例としては、1つのリソースコンテナに属するリソースとして監視プラグインを設定します。このリソースコンテナは通常はVMです。リソースが失敗した場合、コンテナが再起動されます。設定例については、例9.1「監視プラグインのリソースの設定」を参照してください。または、Nagiosリソースエージェントを使用してネットワーク経由でホストまたはサービスを監視する場合、このエージェントを通常のリソースとして設定することもできます。
primitive vm1 VirtualDomain \ params hypervisor="qemu:///system" config="/etc/libvirt/qemu/vm1.xml" \ op start interval="0" timeout="90" \ op stop interval="0" timeout="90" \ op monitor interval="10" timeout="30" primitive vm1-sshd nagios:check_tcp \ params hostname="vm1" port="22" \ 1 op start interval="0" timeout="120" \ 2 op monitor interval="10" group g-vm1-and-services vm1 vm1-sshd \ meta container="vm1" 3
サポートされるパラメータは、監視プラグインの長いオプションと同じです。プラグインは、パラメータ | |
ゲストオペレーティングシステムが起動してサービスが実行されるまでには少し時間がかかるので、監視リソースの起動タイムアウトは十分な長さに設定する必要があります。 | |
|
上の例には、check_tcp
プラグイン用の1つのリソースしか含まれていませんが、さまざまなプラグインタイプ(たとえば、check_http
やcheck_udp
など)用に複数のリソースを設定することもできます。
複数のサービスのホスト名が同じである場合、hostname
パラメータを個別のプリミティブに追加するのではなく、グループに対して指定することもできます。例:
group g-vm1-and-services vm1 vm1-sshd vm1-httpd \ meta container="vm1" \ params hostname="vm1"
監視プラグインによって監視されているいずれかのサービスに、VM内で障害が発生した場合は、クラスタがこれを検出し、コンテナリソース(VM)を再起動します。この場合に実行される操作は、サービスの監視操作に関するon-fail
属性を指定することで設定できます。デフォルトでは、restart-container
に設定されています。
VMのマイグレーションしきい値を検討する場合は、サービスの障害発生回数が考慮されます。
9.2 pacemaker_remote
を使用したリモートノードでのサービスの管理 #
pacemaker_remote
サービスを使用すると、High Availabilityクラスタを仮想ノードまたはリモートベアメタルマシンに拡張することができます。クラスタスタックを実行して、クラスタのメンバーになる必要はありません。
SUSE Linux Enterprise High Availabilityでは現在、仮想環境(KVMおよびLXC)、およびこれらの仮想環境内に存在するリソースを起動できるようになりました(PacemakerまたはCorosyncの実行に仮想環境は必要としません)。
クラスタリソースとしての仮想マシンおよびVM内に存在するリソースの両方を管理する使用例では、次の設定を使用できるようになりました。
「通常」(ベアメタル)クラスタノードは、SUSE Linux Enterprise High Availabilityを実行します。
仮想マシンは、
pacemaker_remote
サービスを実行します(VM側で必要な設定はほとんどありません)。「通常」クラスタノード上のクラスタスタックはVMを起動し、VM上で実行されている
pacemaker_remote
サービスに接続して、それらをリモートノードとしてクラスタに統合します。
リモートノードでクラスタスタックがインストールされていないときは、これには次の意味があります。
リモートノードはクォーラムに参加しません。
リモートノードはDCになることはできません。
リモートノードは、スケーラビリティの制約に制限されません(Corosyncには32ノードのメンバー制限があります)。
remote_pacemaker
サービスに関する詳細については(詳細な設定手順から成る複数の使用例を含む)、Pacemaker Remote Quick Startを参照してください。