これは私がしたことです。
次の仮想マシンがあります。
- セフクライアント
- TGTサーバー
- DHCPサーバー
マシンはCeph(RHEL)の画像を公開し、PXEはリモートノード(つまりイニシエータ)を起動します。
VMを複製し、DHCPサーバーをオフにして、複製されたVMにCephクライアントとTGTサーバーの両方が含まれるようにしました。同じターゲットを公開する2つのTGTサーバーがあり、ファイルに2つのTGTサーバーのIPがありますtftpboot
。たとえば、次のようになります。
#!ipxe
sleep 23
set keep-san 1
ifconf --configurator=dhcp net0
sanboot iscsi:10.20.30.1:tcp:3260:1:kumo-dan-installscript-img37 \
iscsi:10.20.30.2:tcp:3260:1:kumo-dan-installscript-img37
boot
公開されたターゲットは次のとおりです。
[root@bmi-introspect conf.d]# tgt-admin -s
Target 1: kumo-dan-installscript-img37
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 4
Initiator: iqn.2010-04.org.ipxe:4c4c4544-0034-4410-8056-cac04f4c3032 alias: localhost.localdomain
Connection: 0
IP Address: 10.20.30.70
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 10737 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: rbd
Backing store path: bmi-introspect/kumo-dan-installscript-img37
Backing store flags:
Account information:
ACL information:
ALL
ノードが起動すると、2つのドライブが表示されます。
- ブートドライブが存在するsdb
- sdaは別のドライブです(マルチパスとして使用されます)。 3.device-multimapper-multipathをインストールします。
mpathconf --enable --with_multipathd y
mpathconf --enable
ファイルが次のように変更されました
/etc/multipath.conf
。(uncommenting the defaults settings) defaults { polling_interval 10 path_selector "round-robin 0" path_grouping_policy multibus uid_attribute ID_SERIAL # prio alua path_checker readsector0 rr_min_io 100 max_fds 8192 rr_weight priorities failback immediate no_path_retry 5 user_friendly_names yes find_multipaths yes }
systemctl start multipathd; systemctl enable multipathd
- multipath -llではデバイスが表示されず、
lsblk
ドライブはmpathとして表示されません。 - ノードを再起動すると、1つのドライブがマルチパスドライブとして表示されます(
lsblk
)。
今私はそうします:
$ multipath -a /dev/sdb (which is where my boot drive is)
$ dracut --force -H --add multipath
...その後、システムをシャットダウンして再起動しました。
表示されたノードにログインします。
[root@localhost ~]# multipath -l mpatha (360000000000000000e00000000010001) dm-0 IET ,VIRTUAL-DISK size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=0 status=active |- 7:0:0:1 sda 8:0 active undef unknown `- 8:0:0:1 sdb 8:16 active undef unknown [root@localhost ~]# multipath -ll mpatha (360000000000000000e00000000010001) dm-0 IET ,VIRTUAL-DISK size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 7:0:0:1 sda 8:0 active ready running `- 8:0:0:1 sdb 8:16 active ready running [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk +-mpatha 253:0 0 10G 0 mpath +-mpatha1 253:1 0 476M 0 part /boot +-mpatha2 253:2 0 5G 0 part / sdb 8:16 0 10G 0 disk +-mpatha 253:0 0 10G 0 mpath +-mpatha1 253:1 0 476M 0 part /boot +-mpatha2 253:2 0 5G 0 part /
メモ:TGT サーバーの 1 つに障害が発生してもマルチパスが機能し、ノードは 2 番目のサーバーに動的に送信されます。
質問
- これは正しいアプローチですか、それとも何か抜けましたか?
- ノードを再起動しようとすると、両方のTGTサーバーが起動するのを待ち、両方のサーバーに接続できない場合は開始されません(したがって目的は失われます)。
この問題を解決する方法はありますか?