読者です 読者をやめる 読者になる 読者になる

めもぶろぐ

お勉強したこと、趣味なんかを適当に書いてます。。。

DRBD Corosync PacemakerでHAクラスタ | 解説

Linux サーバ

前回はただただメモしていた状態だったので、今回のは解説を残しておきたいと思います。

 

 

chiita01.hatenablog.com

 

 

yum -y install pcs corosync pacemaker

クラスタを構築するのに必要なパッケージをインストールします。

クラスタエンジン:corosync

リソースマネージャ:pacemaker

管理コマンド:pcs

 

pcsは馴染みがありませんが、pacemaker/corosync configuration systemの略だそうです。

 

 

passwd hacluster

1号機と2号機で認証をするために、各ノードでhaclusterユーザのパスワードを設定します。

 

service pcsd start

各ノードでpcsデーモンを起動します。

 

 

pcs cluster auth ha01 ha02 -u hacluster -p hacluster --force

ha01とha02ノードで認証の設定をします。その際に使用するユーザが前述したhaclusterユーザと、設定したパスワードです。

 

認証に失敗したり、やり直したりするのにこれを実行する場合は、--forceオプションを付けておきましょう。

 

 

pcs cluster setup --name dbrb-cluster ha01 ha02 --force

クラスタ名称の設定をします。

 

pcs cluster start --all

クラスタサービスを開始します。

クラスタノードのpacemaker と corosyncサービスの起動をしてくれます。

 

サービスやノードを個別に落としたりあげたりしなくても良いです。

 

 

pcs status

クラスタサービスの状態確認ができます。

 

pcs resource cleanup

エラー検知のステータスとかをきれいにしてくれます。そういうステータスの初期化をします。

 

pcs property set stonith-enabled=false

本来のクラスタ構成では、スプリットブレイン対策でstonithデバイスを使用して、異常なノードを切り離す必要があります。

 

当然、個人で使っているPC等でクラスタサービスを組んだりしていると、ILOなどのデバイスは搭載されていませんので、無効にしておきます。

 

BMCが搭載されているものはこれが使えるかもしれませんが、今回は向こうにしておきます。有効化してある場合は、pcs statusを実行すると警告が出力されるはずです。

 

 

pcs property set default-resource-stickiness=200

下記サイトの説明によれば、リソースをそのノードにとどまらせる優先度の値、だそうです。そのデフォルト値を設定しています。

5.4. リソースのメタオプション

 

pcs resource create vip ocf:heartbeat:IPaddr2 params ip="192.168.11.232" cidr_netmask="24" op start interval="0" timeout="20" op monitor interval="10" timeout="20"

resource createはリソースの作成をします。

pcs resource create vipで、vipというリソースIDを指定します。

 

ocf:heartbeat:IPaddr2は、仮想IPと呼ばれるリソースを作成する際に必要な指定値です。

 

opでオペレーションアクションを設定しますが、既定値で良ければ特に設定は必要ありません。

interval:動作の実行頻度を設定

timeout:動作の失敗を許容する時間

 

他には、on-fail, enabledなどがあります。

opの直後に指定している実行する動作は、monitor,start,stopが一般的な指定値だそうです。詳細は下記を参照してください。

5.5. リソースの動作

 

ちなみにあとから設定追加可能です。

pcs resource op add リソースID オペレーションアクション 

 

 

pcs resource create res_drbd ocf:linbit:drbd params drbd_resource="0" op start interval="0" timeout="240" op stop interval="0" timeout="120" op monitor interval="20" role="Slave" timeout="20" op monitor interval="10" role="Master" timeout="20"

なっがいですが、vipリソースの作成とほぼ同じです。

Slave/Masterの箇所だけ説明とします。

 dbbdをつかってみればわかりますが、PrimaryとSecondaryというステータスで、現用待機状態になっていると思います。

マスタとスレーブという状態を保っていますので、クラスタ構成の際もその概念を適用していきます。

monitorアクションでroleオプション指定で、マスタとスレーブの監視動作を定義します。

 

pcs resource master ms_drbd res_drbd master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true

マルチステートメントリソースの設定です。

drbdのリソースマウントは片系でしかできませんが、サービスは立ち上げて置かなければレプリケーションができません。そのためのリソース設定です。

master-max:マスタは1台(How many copies of the resource can be promoted to masterstatus; default 1.)

 

master-node-max:マスタは1台(How many copies of the resource can be promoted to masterstatus on a single node; default 1.)

 

clone-max:ノード構成は2台(How many copies of the resource to start. Defaults to the number of nodes in the cluster.)

 

clone-node-max:複製ノードは1台(How many copies of the resource can be started on a single node; the default value is 1.)

 

notify:マルチステートメントリソースを有効(When stopping or starting a copy of the clone, tell all the other copies beforehand and when the action was successful. Allowed values: falsetrue. The default value is false.)

 

詳細は下記。

8.2. Multi-State Resources: Resources That Have Multiple Modes

 

Chapter 8. Advanced Resource types

 

 

pcs resource create res_FS ocf:heartbeart:Filesystem params device="/dev/drbd0" directory="/cvol" fstype="ext4" op start interval="0" timeout="60" op stop interval="0" timeout="60" op monitor interval="20" timeout="40"

drbdのリソースをマウントしないとフェイルオーバクラスタとしては意味が無いので、デバイスマントの設定をします。

 

ファイルシステムについてのリソース設定をする際は、ocf:heartbeat:Filesystemという指定が必要なようです。

ここは見ての通りかと思います。

device:デバイス名の指定

directory:マウントポイントの指定

fstype:ファイルシステムのタイプ指定

 

drbdの構築をした際に、ext4でフォーマットしているとので、これを指定しています。マウントポイントはどこでも良いです。

 

pcs resource group add drbd-ha vip res_FS

リソースグループを作成します。別になくてもいい手順ですが、後続の手順と関係すること、お勉強のために構成しています。

 

リソースグループ名drbd-haに、vipリソースとres_FSリソースを追加します。

 

pcs constraint colocation add drbd-ha ms_drbd INFINITY with-rsc-role=Master

リソースの制約についての設定です。リソースは同じノードで起動して使用したいためcolocationで定義します。

 

マルチステートメントリソースの設定で、Masterを設定しているノードで、drbd-haグループを実行するための設定です。

 

続いてそのリソース設定に加えて、起動順序の設定です。

 

pcs constraint order promote ms_drbd then start drbd-ha

ms_drbdリソースが起動したらdrbd-haグループの起動とします。drbdサービスが起動したら、ファイルシステムのマウントとvipを付与するサービスが実行されます。

 

orderの後のアクションを指定していない場合は、startアクションが規定値として定義されます。

 

startだけだと、ノード1と2のどちらがマスタになるのか不明なので、ms_drbdリソースが起動する際にスレーブリソースからマスタリソースにリソースの昇格を行うpromoteアクションを指定します。

 

詳しくは下記を参照。

6.2. 順序の制約

 

 

pcs resource clearnup

前述したとおりです、まあ実行しておきましょう。

 

pcs status

ここまで実行してくれば、ステータスを確認してみると正常になっているはずです。フェイルオーバクラスタっぽくなっているはず。

 

ともなれば、クラスタサービスの起動停止をやってみる他ありません。

 

pcs cluster stop --all

前述したとおり、pacemaker、corosyncのサービスを停止してくれます。

 

pcs cluster start --all

クラスタサービスを全て起動します。

 

いじょうですか。

おわり

広告を非表示にする