Furyu
[フリュー公式]

Tech Blog

フリュー株式会社の技術ブログです

2018年11月2日

awata

pacemaker+corosync環境を作成した時にハマった話

こんにちは。
ピクトリンク事業部インフラ課の粟田です。
今回は pacemaker+corosync環境をCentOS7上に構築した時にハマった話を書こうかと。

発生した問題

サーバ2台(CentOS7)にpacemakerとcorosyncをインストールして環境を構築中にcorosyncが疎通できていなくて、pcs status corosync や crm_mon を実行すると、お互いにOFFLINE……

ログを見てみると unclean(offline)の文字列が見えたので、ググって出てきた結果を参照すると、再起動したら直ったというようなものが出てきたけれども解決に至らず……

原因

corosyncの設定時には(DNSで解決可能な)ホスト名を指定してたんですが、corosyncはこのホスト名を127.0.0.1と認識してたんでした。

なんで127.0.0.1になるんだろうと原因探していると/etc/hostsが悪さしてたんでした。

127.0.0.1にホスト名書くなよ……

きっとこの辺の設定を全サーバで意識したくなかったせいなんだろうな。

あとがき

無駄に時間使っちゃったよ……


2018年05月18日

Kayo

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

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

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

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

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

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

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

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

(正)

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

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

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

(誤)

(正)

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

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

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

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

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


2018年04月23日

Kayo

Pacemaker+Corosyncを使ってみました!(crmコマンド編)

みなさん、こんにちは。ピクトリンク事業部インフラ課(3月末から事業部名が変わりました)の藤本佳世です。今回は「Pacemaker+Corosyncを使ってみました!」の続編、crmコマンドを使った設定の部分についてお話しします。

前回の記事はこちら

crmコマンド集

Pacemakerの設定をしたり、確認や削除といった作業は、crmコマンドを使って行います。
今回の構築で使ったコマンドをまとめてみました。※詳しい説明は後ほど

Pacemakerの設定

crm configureコマンド使ってPacemakerの設定ができます。

この状態で1つずつ設定していくことも可能ですが、私の場合は、設定したい項目をすべてcrmファイルに書き出して、crm configure load updateコマンドを使って設定を反映させました。

setting.crmの内容はこちらです。
※仮想VIP設定は、「primitive prmVIPcheck ocf:heartbeat:VIPcheck」の部分です。
※ping疎通監視設定は、「primitive pingd_gw ocf:pacemaker:ping」の部分です。

設定内容を確認するコマンドは下記のようにshowを付けます。

また、設定を削除したいときは、eraseを最後に付けます。

ただし、ノードが「running」ステータスでは下記のようなエラーが発生します。

その場合は、全ノードを「standby」ステータスに切り替え、「running」ステータス以外にする事が必要です。

再度「online」ステータスに切り替えるには下記を実行。

そして最後に、設定のバックアップ取っておくコマンドがこちらです。

現在設定されている項目をbackup.crmに書き出してくれます。
設定をバックアップ取っておくと、再構築になった際にとても便利ですね。
backup.crmの使い方は、最初にお伝えしたように、loadするだけです。

 

今回の投稿は以上です。次回は最終版として構築ではまった部分をみなさんに共有したいと思います。


2018年03月7日

Kayo

Pacemaker+Corosyncを使ってみました!(インストール編)

みなさん、こんにちは。コンテンツ・メディア第1事業部インフラ課の藤本佳世です。
今回は、Pacemaker+Corosyncについてお話しします。
今までは、Heartbeatを使っていたのですが、サーバリプレースに伴い、最新バージョンで推奨されているPacemaker+Corosyncを構築しました。まずは、インストールの部分をお話ししたいと思います。

Pacemakerとは

オープンソースソフトウェアとして開発されている、HAクラスタソフトのこと(Heartbeat の後継)。
障害を検知したら他のサーバに自動的にフェイルオーバしてくれます。
Corosyncと組み合わせて利用します。
※HAとは、「High Availability」高可用性のこと。

Corosyncとは

ノードの死活監視を行うオープンソースソフトウェア。
Pacemakerと組み合わせて、クラスタシステムを構成します。

フリューでの利用について

主に、データベースサーバでPacemaker+Corosyncを採用しています。
サーバ(master)に仮想VIPがセカンダリIPとして割り当てられており、サーバ(master)に障害が発生した際、10秒以内(弊社環境)でサーバ(slave)に仮想VIPが付与され、masterとして稼働します。
以前のHeartbeatよりも、Corosyncの方が切替の時間が早いというメリットもあります。

構築した環境

サーバ名 OS Pacemakerバージョン Corosyncバージョン IPアドレス 仮想VIP
server1 CentOS7.4 1.1.16.1 2.4.2-1 192.168.33.28 192.168.33.21
server2 CentOS7.4 1.1.16.1 2.4.2-1 192.168.33.29

Pacemaker+Corosyncの構築

LINUX-HA JAPANのドキュメントを参考に進めました。
詳しく手順が書かれているので、この通りに進めるだけです。

インストールの後は、corosync.confを修正します。

以下のbindnetaddrとquorumの部分を修正しました。

  • bindnetaddr:構築するネットワーク環境に合わせて設定
  • expected_votes :クラスタを構成するノードの数を設定

続いて、corosync認証鍵ファイルの設定です。
どれか一つのノード上で実行します。

/etc/corosync配下にauthkey ファイルが生成されます。
作成されたauthkeyファイルをクラスタを構成する全てのノードにコピーします。

この後は、pacemakerファイルの設定です。
pacemakerの内部プロセスが故障した場合も、ノード故障として取り扱うようにするため、
以下の設定に変更します。

そして、最後にクラスタ起動スクリプトの設定です。
ドキュメントに下記の設定を反映させるために修正が必要と書かれています。

  • pacemakerサービス停止時に corosyncサービスも同時に停止させるため
  • corosyncプロセス故障時に watchdog 機能を有効にするため
  • corosyncの改善により soft_margin オプションは不要となったため

※ExecStart/Stop は置き換える前に空白にする必要があるので注意してください。

これで完了です。
ドキュメント通り進めるだけなので、簡単に構築できると思います。

いよいよ起動

設定が終わったら、いよいよ起動です。

起動確認

Onlineになっています!問題なさそうです。

ここまでがインストールの作業です。
次に、仮想VIPやping疎通監視など設定していきますが、詳細は次回説明したいと思います。
crm configureコマンドを使った設定などご紹介する予定なので、お楽しみに。