FURYU Tech Blog - フリュー株式会社

フリュー株式会社の開発者が技術情報を発信するブログです。

Pacemaker+Corosyncを使ってみました!(はまった部分をシェア)

みなさん、こんにちは。ピクトリンク事業部インフラ課の藤本佳世です。前回、前々回と「Pacemaker+Corosyncを使ってみました!」についてお話ししてきましたが、最後に【はまった部分】をみなさんとシェアしたいと思います。何かお役に立つ情報が見つかれば幸いです。

はまった部分①crmファイルのロードエラー

前回の記事で、設定項目をまとめたcrmファイルを作成したとお伝えしました。それぞれの設定が何なのか、下記のように日本語でコメントを記述しました。

### Cluster Option ###
# stonith-enabled        制御不能のサーバを強制的に電源OFFする機能 無効化。
# start-failure-is-fatal 起動の失敗をリソースに対して致命的と処理するかどうかを指定。false に設定するとリソースの failcount と migration-threshold の値を使用する。
# no-quorum-policy       サーバ同士が互いに孤立しクォーラムを失った場合にどう動くかを指定。とりあえずサーバが2台の構成である限りはおまじないとして”ignore”を指定する。
# symmetric-cluster      全てのリソースはどこでも起動できるか。
# startup-fencing        起動時に相手のサーバの状態が把握できない場合に念のために相手をフェンシングする機能(有効)。
# stop-orphan-resources  取り除いたリソースを停止するか。
# stop-orphan-actions    取り除いたアクションを停止するか。
# remove-after-stop      常にfalseを設定する項目。
# is-managed-default     Heartbeatが必要に応じてリソースのstart/stopができる。
# cluster-delay          ネットワークのラウンドトリップ時間。
# pe-error-series-max    The number of PE (Policy Engine) inputs resulting in errors to save.  -1 = unlimited
# pe-warn-series-max     The number of PE inputs resulting in Warnings to save
# pe-input-series-max    The number of other PE inputs to save
property stonith-enabled="false" \
         start-failure-is-fatal="false" \
         no-quorum-policy="ignore" \
         symmetric-cluster="true" \
         startup-fencing="true" \
         stop-orphan-resources="false" \
         stop-orphan-actions="true" \
         remove-after-stop="false" \
         is-managed-default="true" \
         cluster-delay="60s" \
         pe-error-series-max="-1" \
         pe-warn-series-max="-1" \
         pe-input-series-max="-1"
 
(後略)

しかし、このファイルをロードしたらエラーが発生してしまいました。内容を確認すると、文字コードエラーでした。

$ sudo crm configure load update setting.crm
ERROR: 15: configure.load: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

日本語がエラーの原因のようで、英語だと特にエラーは出力されませんでした。何の設定なのか英語で書いても他の人に上手く伝わらない!どうしても日本語で記述する必要があったので、下記のコマンドで無理やり読み込むようにしました。

$ sudo crm configure load update $(grep -v -e '^#' setting.crm > export.crm; echo "export.crm") && rm -f export.crm

はまった部分②cloneの値を間違った

Pacemaker+Corosync環境の検証のため、当初は2台構成をしていましたが、7台に増やした際にはまった部分があります。crmファイルのclone設定部分を2→7に書き換えるのを忘れてしまいました。

(誤)

meta clone-max="2" \

(正)

meta clone-max="7" \

起動した際、ping疎通エラーが出力されてしまい、ログにも「not running」が出力されました。

notice: Result of probe operation for prmVIPcheck on server1: 2 (not running)
notice: Result of probe operation for pingd_gw on server1: 2 (not running)
notice: Result of probe operation for IPaddr2_1 on server1: 2 (not running)

はまった部分③ping(疎通確認)のIPアドレスが間違っていた

crmファイルに間違ったpingIPアドレスを記述してしまいました。

(誤)

host_list="192.168.33.15" \

(正)

host_list="192.168.33.1" \

crm_monにオプション-Aをつけると詳細を確認できます。pingエラーが出ています。

$ sudo crm_mon -A
Node Attributes:
* Node server1:
    + default_ping_set                  : 0             : Connectivity is lost
* Node server2:
    + default_ping_set                  : 0             : Connectivity is lost

ping疎通がエラーになったため、「prmVIPcheck」や「IPaddr2_1」も作動しなかったです。

設定を反映する前に、pingコマンドで疎通確認をしておくことも大切です。

$ ping 192.168.33.1
PING 192.168.33.1 (192.168.33.1) 56(84) bytes of data.
64 bytes from 192.168.33.1: icmp_seq=1 ttl=64 time=0.284 ms
64 bytes from 192.168.33.1: icmp_seq=2 ttl=64 time=0.266 ms

3回にわたってPacemaker+Corosyncについてお話ししてきましたが、少しでも興味をもっていただければ嬉しいです。

今後も役立つインフラ情報をアップする予定なので、引き続きよろしくお願いします。