おつかれさまです!Dです。
またまたクラスター構成(PacemakerやDRBD)についての記事になります。
何気なく構築すると思わずハマりそうなことだったので、実際に挙動を試してみました。
それではやっていきましょう。
内容
OSは前回同様にRHEL8で2台構成でマスター、スレーブ構成になります。
マスターがダウンすると、スレーブ側がマスターに切り替わって
サービスを引き継いてダウンタイムを減らすといったイメージになります。
今回は先に結論から伝えてから検証していきます。DRBD領域で利用するフォルダやファイルの権限のUIDを1号機、2号機で合わせておく必要があります。これを合わせていないと1号機がダウンし2号機に切り替わった際に思わぬトラブルになります。
字面で書くとなかなかイメージが難しいと思うので、実際に試していきましょう。
hogehogeというユーザー名は同じですがUIDは別の値になっています。
〇1号機
# id hogehoge
uid=1001(hogehoge) gid=1001(hogehoge) groups=1001(hogehoge)
〇2号機
# id hogehoge
uid=2001(hogehoge) gid=2001(hogehoge) groups=2001(hogehoge)
「/data」配下がDRBD領域なのですが、そこにテストファイルを作成しhogehogeの所有者に変更します。※1号機にて
----------------------------------
# cd /data
# vi testUID
---------------
test
---------------
# chown hogehoge: testUID
----------------------------------
この状態で1号機のクラスターを停止し、2号機へフェイルオーバーさせます。
ステータスも確認すると、2号機に正常にフェイルオーバーされているようです。
# pcs cluster stop
Stopping Cluster (pacemaker)...
Stopping Cluster (corosync)...
※2号機にて実行
# pcs status
Cluster name: db_cluster
Cluster Summary:
* Stack: corosync (Pacemaker is running)
* Current DC: db2 (version 2.1.6-8.el8-6fdc9deea29) - partition with quorum
* Last updated: Mon Dec 11 19:54:32 2023 on db2
* Last change: Mon Dec 11 19:51:56 2023 by hacluster via crmd on db1
* 2 nodes configured
* 3 resource instances configured
Node List:
* Online: [ db2 ]
* OFFLINE: [ db1 ]
Full List of Resources:
* Resource Group: db-ha:
* filesystem (ocf::heartbeat:Filesystem): Started db2
* mariadb (ocf::heartbeat:mysql): Started db2
* virtual_ip (ocf::heartbeat:IPaddr2): Started db2
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
DRBD領域に作成したテストファイルを見てみましょう。2号機にもhogehogeユーザーを作成しているので、ファイルの所有者はhogehogeかと思いきや、、、UIDになっていますね、、
2号機でもhogehogeユーザーは存在するのですが、UIDが2001になってます。また1001のUIDに紐づくユーザーがいないため、1号機から引き継がれたUIDがもろに表示されている状態です。
# ls -al
total 8
drwxr-xr-x 3 root root 48 Dec 11 20:44 .
drwxr-xr-x. 19 root root 271 May 11 2018 ..
-rw-r--r-- 1 1001 1001 5 Dec 11 20:44 testUID
2号機でhogehogeユーザーに切り替えて、DRBD領域のテストファイルに書き込もうとすると。。権限が無いぞ!と怒られますね。。
echo testtest > /data/testUID
bash: /data/testUID: Permission denied
ただ、ファイル権限的にはその他ユーザは読込可能なのでファイルを閲覧することは出来ますね。
cat testUID
test
例としてDRBD領域でWebコンテンツを公開している場合に、このようなことが起こると1号機ではうまく稼働していたのに2号機では不具合が起こるといったようなことが起こる可能性があります。こわい。。。
【まとめ】
冗長化構成はダウンした時の影響を最小限に抑えることが出来ますが、設定を理解した上で実装する必要がありますね。なかなか難しい。。