第7章 HA コントローラーリソースの調査と修正
pcs constraint show コマンドは、サービスの起動方法に対する制約を表示します。このコマンドの出力には、各リソースの場所、リソースの起動順序、どのリソースと一緒に起動する必要があるのかなどの制約が表示されます。問題がある場合には、これらの問題を修正してから、リソースをクリーンアップします。
pcs constraint show コマンドは、場所 (特定のホスト上でのみ実行可能)、順序 (起動前に他のリソースが有効化されているかによって左右される)、コロケーション (他のリソースと同じ場所に配置されている必要がある) などによりリソースがどのように制約されているかを表示します。コントローラーノードで実行した pcs constraint show の出力を途中省略して以下に記載します。
$ sudo pcs constraint show Location Constraints: Resource: my-ipmilan-for-controller-0 Disabled on: overcloud-controller-0 (score:-INFINITY) Resource: my-ipmilan-for-controller-1 Disabled on: overcloud-controller-1 (score:-INFINITY) Resource: my-ipmilan-for-controller-2 Disabled on: overcloud-controller-2 (score:-INFINITY) Ordering Constraints: start ip-172.16.0.10 then start haproxy-clone (kind:Optional) start ip-10.200.0.6 then start haproxy-clone (kind:Optional) start ip-172.19.0.10 then start haproxy-clone (kind:Optional) start ip-192.168.1.150 then start haproxy-clone (kind:Optional) start ip-172.16.0.11 then start haproxy-clone (kind:Optional) start ip-172.18.0.10 then start haproxy-clone (kind:Optional) start mongod-clone then start openstack-ceilometer-central-clone (kind:Mandatory) start openstack-glance-registry-clone then start openstack-glance-api-clone (kind:Mandatory) start openstack-heat-api-clone then start openstack-heat-api-cfn-clone (kind:Mandatory) start delay-clone then start openstack-ceilometer-alarm-evaluator-clone (kind:Mandatory) ... Colocation Constraints: ip-172.16.0.10 with haproxy-clone (score:INFINITY) ip-172.18.0.10 with haproxy-clone (score:INFINITY) ip-10.200.0.6 with haproxy-clone (score:INFINITY) ip-172.19.0.10 with haproxy-clone (score:INFINITY) ip-172.16.0.11 with haproxy-clone (score:INFINITY) ip-192.168.1.150 with haproxy-clone (score:INFINITY) openstack-glance-api-clone with openstack-glance-registry-clone (score:INFINITY) openstack-cinder-volume with openstack-cinder-scheduler-clone (score:INFINITY) neutron-dhcp-agent-clone with neutron-openvswitch-agent-clone (score:INFINITY) ...
この出力には、以下の 3 つの主要なセクションが表示されています。
- Location Constraints
- このセクションには、リソースの割り当て先の制約は特にないことが表示されています。ただし、出力では、 ipmilan リソースが各コントローラー上で無効化されていることが分かります。そのため、この点に関してさらに調査する必要があります。
- Ordering Constraints
- このセクションでは、仮想 IP アドレスリソース (IPaddr2) は HAProxy より前に起動するように設定されている点に注目してください。mongod-clone を openstack-ceilometer-central-clone よりも前に起動することや、openstack-glance-registry-clone を openstack-glance-api-clone よりも前に起動することなど、必須の Ordering Constraints も多数あります。これらの制約を把握することによって、サービス間の依存関係を理解することができます。言い換えると、問題のあるサービスまたは他のリソースを修正できるようにするには、どのような依存関係を設定する必要があるかが分かります。
- Colocation Constraints
- このセクションでは、どのリソースを併置する必要があるかが表示されています。たとえば、特定の IP アドレスが haproxy-clone リソースに関連づけられています。また、openstack-glance-api-clone リソースは openstack-glance-registry-clone リソースと同じホストに配置する必要があります。
7.1. コントローラー上のリソースの問題修正
失敗したアクションは、pcs status コマンドで表示します。多くの異なる問題が発生する可能性があります。一般的には、以下の方法で問題に対処することができます。
- コントローラーの問題
コントローラーのヘルスチェックでエラーが発生した場合には、そのコントローラーにログインしてサービスが問題なく起動できるかどうかを確認してください。サービスの起動で問題がある場合には、コントローラー間での通信の問題がある可能性があることになります。コントローラー間の通信問題のその他の兆候には、以下が含まれます。
- 1 台のコントローラーが他のコントローラーよりも過度にフェンシングされる
- 特定のコントローラーから、不審な大量のサービスでエラーが発生している
- 個別のリソースの問題
- コントローラーからのサービスが基本的には機能しているが、個別のリソースでエラーが発生している場合には、 pcs status のメッセージで問題を特定できるか確認します。さらに情報が必要な場合には、リソースの問題があるコントローラーにログインして、以下のステップのいくつか試してください。
エラーが発生した個別リソースの問題を特定するには、「7章HA コントローラーリソースの調査と修正」で説明した Ordering Constraints を確認します。エラーの発生したリソースが依存するリソースすべてが稼働していることを確認し、下から順番に修正していきます。
エラーが発生したリソースとリソースが実行されるコントローラーの名前を指定して、コントローラーにログインして問題のデバッグすることができます。エラーが発生したリソースが systemd サービスの場合は (例: openstack-ceilometer-api)、systemctl でそのステータスを確認し、journalctl でジャーナルメッセージを検索することが可能です。以下に例を示します。
$ sudo systemctl status openstack-ceilometer-api openstack-ceilometer-api.service - Cluster Controlled openstack-ceilometer-api Loaded: loaded (/usr/lib/systemd/system/openstack-ceilometer-api.service; disabled) Drop-In: /run/systemd/system/openstack-ceilometer-api.service.d └─50-pacemaker.conf Active: active (running) since Thu 2015-10-08 13:30:44 EDT; 1h 4min ago Main PID: 17865 (ceilometer-api) CGroup: /system.slice/openstack-ceilometer-api.service └─17865 /usr/bin/python /usr/bin/ceilometer-api --logfile /var/log/ceilometer/api.log Oct 08 13:30:44 overcloud-controller-2.localdomain systemd[1]: Starting Cluster Controlled openstack-ceilo..... Oct 08 13:30:44 overcloud-controller-2.localdomain systemd[1]: Started Cluster Controlled openstack-ceilom...i. Oct 08 13:30:49 overcloud-controller-2.localdomain ceilometer-api[17865]: /usr/lib64/python2.7/site-package.... $ sudo journalctl -u openstack-ceilometer-api -- Logs begin at Thu 2015-10-01 08:57:25 EDT, end at Thu 2015-10-08 14:40:18 EDT. -- Oct 01 11:22:41 overcloud-controller-2.localdomain systemd[1]: Starting Cluster Controlled openstack... Oct 01 11:22:41 overcloud-controller-2.localdomain systemd[1]: Started Cluster Controlled openstack-ceilometer-api... Oct 01 11:22:52 overcloud-controller-2.localdomain ceilometer-api[8918]: /usr/lib64/python2.7/...
エラーが発生したリソースを修正した後には、pcs resource cleanup コマンドを実行すると、リソースの状態と失敗回数をリセットすることができます。たとえば、httpd-clone リソースの問題を修正するには、以下のコマンドを実行します。
$ sudo pcs resource cleanup httpd-clone
Resource: httpd-clone successfully cleaned up
Comments