Tihiroのストレスフリーな生活

少しだけ頭使って後は根性

CentOS7でPacemaker+Corosyncの環境構築したメモ。

環境

CentOS 7

構築

参考URL

docs.openstack.org

www.sraoss.co.jp

構築手順

何事も手順を明確にしておくのは大事。

  1. ソフトウェアインストール
    • yum install corosync pacemaker pcs
  2. corosyncの設定
    • corosync.confを編集するのではなく、pcsコマンドとかで設定するのが推奨らしい。
    • 各ノードのcorosync.confは同一にしておく。
  3. corosyncの認証のためのなにか
    • corosync-keygen -lの実行
    • 作成されたファイルを各ノードにコピーする。
  4. hostsの設定
    • 各ノードのIPアドレス解決用に設定しておくと便利。
  5. haclusterユーザにパスワード設定
    • pcs cluster authコマンドで必要。
  6. pcsdの起動
    • systemctl start pcsd
    • systemctl enable pcsd
  7. pacemakerの設定
  8. ノードを認証?
    • pcs cluster auth -u <user_name> -p <ip_address> <ip_address> ...
    • -uと-pでユーザ名、パスワードを指定しておかないと、コマンド実行時に毎回聞かれるみたい。
    • <ip_address>のところは<host_name>にすると上手くいかなかった。
  9. pcs cluster setupコマンドの実行
    • これは不要かも?
  10. クラスタの起動
    • pcs cluster start --all
  11. クラスタリソースの作成
    • pcs resource create VIP ocf:heartbeat:IPaddr2 ip=172.18.0.250 cidr_netmask=24 op monitor interval=30s

コマンド集

crm

クラスタの状態確認

crm_mon

表示中に[f]とか[n]とか[r]とか[t]とかを押すと表示が拡張される(オプションをつけてcrm_monしたのと同じ表示?)。

pcs

クラスタの設定確認

pcs config

クラスタの状態確認

pcs status

とか

pcs status --full

リソースの状態確認

pcs status resources --full

リソースの設定確認

pcs resource show <resource_name>

リソース故障履歴(Failed Resource Actions)のクリア

pcs resource cleanup <resource_name>

リソースの再起動が行われるので、本番環境でやる場合は注意。

リソースの故障回数(fail count)のクリア

pcs resource failcount reset <resource_name>

基本的にリソースの再起動は伴わないらしいけど、ものによってはリソースの再起動が行われることもあるらしい。怖い。

リソースの動作に対する設定変更

pcs resource update <resource_name> op <resource_option>=<value>

例)障害発生時の動作を設定

pcs resource update <resource_name> op monitor on-fail=<value>

[ 参考URL ]

access.redhat.com

リソースのメタオプションに対する設定変更

pcs resource meta <resource_name> <meta_option>=<value>

例)何回障害が発生したらフェイルオーバーさせるかの閾値設定

pcs resource meta <resource_name> migration-threshold=<value>

メタオプションの削除方法がわかんねぇ(多分↓?)。

pcs resource meta <resource_name> migration-threshold=

[ 参考URL ]

access.redhat.com

クラスタ設定ファイルの確認

pcs cluster cib

corosync

corosyncの状態確認

corosync-cfgtool -s

とか

systemctl status corosync

corosyncの設定確認

corosync-cmapctl

corosyncの設定ファイルの再読み込み(適用)

corosync-cfgtool -R

多分、リロード(reload)の"R"。

corosyncのリンク状態の復旧

corosync-cfgtool -r

多分、リペア(repair)の"r"。

"corosync-cfgtool -s"で見たときにFAULTYとかになっている場合に利用する模様。 FAULTYになっていると、その経路は利用してくれないので復旧させる必要がある。

corosyncのグループ(冗長設定?)確認

corosync-cpgtool

結果は下みたいな感じ。ここでグループになっていないと冗長化の設定に失敗している?

Group Name PID Node ID

crmd¥x00

1674 1 (172.18.0.2 172.19.0.2)

1369 2 (172.18.0.3 172.19.0.3)

attrd¥x00

1672 1 (172.18.0.2 172.19.0.2)

1367 2 (172.18.0.3 172.19.0.3)

stonith-ng¥x00

1670 1 (172.18.0.2 172.19.0.2)

1365 2 (172.18.0.3 172.19.0.3)

cib¥x00

1669 1 (172.18.0.2 172.19.0.2)

1364 2 (172.18.0.3 172.19.0.3)

pacemakerd¥x00

1668 1 (172.18.0.2 172.19.0.2)

1363 2 (172.18.0.3 172.19.0.3)

[ 参考URL ]

www.silvernetworks.jp

補足説明的なの

pacemakerのログ

"/var/log/pacemaker.log"にある。けど

pacemakerd: notice: crm_add_logfile: Switching to /var/log/cluster/corosync.log

とかいう記述がみられる。結局のところ、"/var/log/cluster/corosync.log"に書き込まれる模様。

ocf

Open Cluster Frameworkの略らしい。

プロバイダ

"ocf:heartbeat:IPaddr2"の"heartbeat"とかがプロバイダと呼ばれる。

"/usr/lib/ocf/resource.d/"の配下に利用できるプロバイダが存在する。

hacluster ユーザ

pacemakerがインストールされると自動的にできるらしい。パスワードを設定してあげよう。

GUIクラスタ管理

PCSD WEB UIとかいうのが用意されていて https://nodename:2224 に接続するとできるみたい。

その他

tihiro.hatenablog.com

こっちも参照ください。

エラー集

pcs resource createでocf:heartbeat:IPaddr2を作成するとエラー

pcs resource create VIP ocf:heartbeat:IPaddr2 ip=172.168.18.250 cidr_netmask=24 op monitor interval=30s

すると

Error: unable to get cib

な、エラーが発生。クラスターが作成されていませんよ、って話みたい。先にクラスターを作成すればOK。

pcs resource createでocf:heartbeat:IPaddr2を作成するとエラーその2

  • VIP_monitor_0 on standby_node 'not installed' (5): call=5, status=complete, exitreason='Setup problem: couldn't find command: ip',

ipコマンドがないらしいので

yum install net-tools

してみたけど、すでにインストールされているとのこと。結局のところ

yum install which

を実行したらOK。理由はよくわからないけど"which"が必要らしい。

pcs cluster authでエラー

Error: Unable to communicate with standby_node Error: Unable to communicate with main_node

pcsdが起動していないのが原因。

"systemctl start pcsd"で起動したらOK。

systemctl start pacemakerでエラー

parse error in config: Can only set ttl on multicast transport types

というエラーが出る。

メッセージをよく読むと、"transport"に"udp"が設定されていないのに、"ttl"とかのマルチキャスト通信用の設定があるので怒っているみたい。ので、マルチキャスト通信をしたい場合は"transport"に"udp"を設定する。

ちなみに"udp"は「UDPマルチキャスト通信」、"udpu"は「UDPユニキャスト通信」という設定らしい。

scpが"connection refused 22"で動かない

多分、SSHサーバーが稼働していない。

yum -y install openssh-server openssh-clients

でインストールして

systemctl start sshd

で"sshd"を起動すればOK。

なんかエラーがでる

kernel:NMI watchdog: BUG: soft lockup - CPU#0 stuck for 118s! [pcs:9482]

気にしなくていいみたい。

IPaddr2リソースが起動しない

pcs status

で確認すると

VIP (ocf::heartbeat:IPaddr2): Stopped

な感じ。

"/var/log/cluster/corosync.log"を見てみたら

ERROR: Unable to find nic or netmask.

とか出てた。

結局のところ、仮想IPのアドレスが違っていたので、正しいものに変更したらOK。と思いきや…

リソースが起動しない

VIP (ocf::heartbeat:IPaddr2): Stopped

てな感じでリソースが起動しない。

ログを見たら

notice: process_lrm_event: Result of probe operation for VIP on standby_node: 7 (not running) | call=5 key=VIP_monitor_0 confirmed=true cib-update=10

なエラーを確認。

どうしても解決しなかったため、リソースの削除→作成したら無事に起動しました。どうやら作成(pcs resource create)するときにIPアドレスを間違えていたのが原因の模様。リソースの更新(pcs resource update)でIPアドレスを変更したのですが、それだとどうにも起動しない模様。

pcs cluster start --allでエラー

172.18.0.2: Unable to authenticate to 172.18.0.2 - (HTTP error: 401), try running 'pcs cluster auth'

172.18.0.3: Unable to authenticate to 172.18.0.3 - (HTTP error: 401), try running 'pcs cluster auth'

172.18.0.2: Not starting cluster - node is unreachable

172.18.0.3: Not starting cluster - node is unreachable

Error: unable to start all nodes

原因1)corosyncが起動していない。

systemctl start corosync

で起動する。

原因2)corosyncの設定が間違っている。

corosync-cfgtool -s

で正しくノードを認識しているか確認する。

原因3)"pcs cluster auth"コマンドを実行していない。

もう一回してみる。

pcs cluster setupコマンドでエラー

Error: Unable to save pcsd certificates to nodes: 172.18.0.2, 172.18.0.3

なエラー発生。

原因は"pcs cluster auth"コマンドをノード名で実行していた。

pcs cluster auth -u hacluster -p hacluster00 main_node standby_node

ではなく

pcs cluster auth -u hacluster -p hacluster00 172.18.0.2 172.18.0.3

としたらOK。

リソースがUNCLEAN (offline)になる

起動中とか初期化中の模様。しばらくするとONLINEになるので気長に待つ。