今日はiscsiマルチパス設定にチャレンジです。
1.構成
NetApp側
SVM:iSCSI
192.168.0.55(cluster1-01:e0e)
192.168.0.56(cluster1-03:e0e)
iSCSIマルチパスなのでポートのfailoverは無しです。
CentOS7側
192.168.0.40(ens160)
192.168.0.45(ens192)
2.設定時のポイント
CentOS7側で同一セグメント上に複数NICを配置したので、
2つ目のNICから疎通できずルーティングを追加する必要がありました。
3.設定手順
3-1.NetApp側の設定
iSCSI LIFの追加
network interface create -vserver iSCSI -lif iscsi_lif_2 -address 192.168.0.56 -netmask 255.255.255.0 -role data -data-protocol iscsi -home-node cluster1-03 -home-port e0d
設定確認
network interface show -vserver iSCSI
ポートセット追加
portset create -vserver iSCSI -portset iscsips -protocol iscsi
ポートセットにLIFを追加
portset add -vserver iSCSI -portset iscsips -port-name iscsi_lif_1
portset add -vserver iSCSI -portset iscsips -port-name iscsi_lif_2
igroupにポートセットをバインド
lun igroup bind -vserver iSCSI -igroup iSCSI -portset iscsips
設定確認
lun portset show
ここで、iSCSIはポートのfailoverが無いことに気付き、
iSCSI用にNICを追加することにしました。
NetApp SimulaterにNICを追加してみました(ESXi)
https://blog.server-tech.xyz/2019/09/23/netapp-simulater-nic-add/
iSCSIにe0dで関連付けられているポートをe0eに変更します。
ブロードキャストドメインの作成
network port broadcast-domain create -broadcast-domain bcast1 -mtu 1500 -ports cluster1-01:e0e,cluster1-03:e0e
iSCSI LIFの停止
network interface modify -vserver iSCSI -lif iscsi_lif_1 -status-admin down
network interface modify -vserver iSCSI -lif iscsi_lif_2 -status-admin down
iSCSI LIFの変更
network interface modify -vserver iSCSI -lif iscsi_lif_1 -home-node cluster1-01 -home-port e0e
network interface modify -vserver iSCSI -lif iscsi_lif_2 -home-node cluster1-03 -home-port e0e
iSCSI LIFの開始
network interface modify -vserver iSCSI -lif iscsi_lif_1 -status-admin up
network interface modify -vserver iSCSI -lif iscsi_lif_2 -status-admin up
フェールオーバ廻りの設定確認
network interface failover-groups show
Vserver Group Targets
Cluster
Cluster
cluster1-01:e0a, cluster1-01:e0b,
cluster1-03:e0a, cluster1-03:e0b
cluster1
Default
cluster1-01:e0c, cluster1-01:e0d,
cluster1-03:e0c, cluster1-03:e0d
bcast1
cluster1-01:e0e, cluster1-03:e0e
3 entries were displayed.
フェールオーバーグループには強制的に参加させられてしまっています。
network interface show -failover
Logical Home Failover Failover
Vserver Interface Node:Port Policy Group
Cluster
cluster1-01_clus1 cluster1-01:e0a local-only Cluster
Failover Targets: cluster1-01:e0a, cluster1-01:e0b
cluster1-01_clus2 cluster1-01:e0b local-only Cluster
Failover Targets: cluster1-01:e0b, cluster1-01:e0a
cluster1-03_clus1 cluster1-03:e0a local-only Cluster
Failover Targets: cluster1-03:e0a, cluster1-03:e0b
cluster1-03_clus2 cluster1-03:e0b local-only Cluster
Failover Targets: cluster1-03:e0b, cluster1-03:e0a
cifs
cifs-lif cluster1-01:e0d system-defined Default
Failover Targets: cluster1-01:e0d, cluster1-01:e0c,
cluster1-03:e0d, cluster1-03:e0c
cluster1
cluster1-01_mgmt1 cluster1-01:e0c local-only Default
Failover Targets: cluster1-01:e0c, cluster1-01:e0d
cluster1-03_mgmt1 cluster1-03:e0c local-only Default
Failover Targets: cluster1-03:e0c, cluster1-03:e0d
cluster_mgmt cluster1-01:e0c broadcast-domain-wide
Default
Failover Targets: cluster1-01:e0c, cluster1-01:e0d,
cluster1-03:e0c, cluster1-03:e0d
iSCSI
iSCSI_admin_lif1 cluster1-01:e0d system-defined Default
Failover Targets: cluster1-01:e0d, cluster1-01:e0c,
cluster1-03:e0d, cluster1-03:e0c
iscsi_lif_1 cluster1-01:e0e disabled –
Failover Targets: cluster1-01:e0e
Logical Home Failover Failover
Vserver Interface Node:Port Policy Group
iSCSI
iscsi_lif_2 cluster1-03:e0e disabled
Failover Targets: cluster1-03:e0e
nfs
nfs-lif cluster1-01:e0d system-defined Default
Failover Targets: cluster1-01:e0d, cluster1-01:e0c,
cluster1-03:e0d, cluster1-03:e0c
iscsi_lif_1とiscsi_lif_2のFailover Policyがdisabledになっていることを確認します。
これでNetApp側の設定は完了です。
3-2.CentOS7側の設定
予め、VMにNICを追加してIPを設定しておきます。
ここで
ping -I ens160 192.168.0.55
として1枚目のNICで疎通できることを確認
次に
ping -I ens192 192.168.0.56
とするも2枚目のNICで疎通できないことを確認
同一セグメントにNICを2枚挿すと送信時に1枚目のNICから送信しようとするので、
2枚目のNICは受信はできても送信はできない状態であることに気付きました。
同一セグメント上に2枚のNICを挿した場合の対応
テーブルID 100に2枚目のNIC(192.168.0.45)のルーティングを登録
ip rule add from 192.168.0.45 table 100 prio 200
ip route add 192.168.0.0/24 dev ens192 src 192.168.0.45 table 100
ip route add 0.0.0.0 via 192.168.0.1 dev ens160 table 100
上記の設定だけだと、1枚目のNICをテストでdownさせた後にupさせると、
今度は1枚目のNICが疎通できなくなるので対策です。
テーブルID 99に1枚目のNIC(192.168.0.40)のルーティングを登録
ip rule add from 192.168.0.40 table 99 prio 100
ip route add 192.168.0.0/24 dev ens160 src 192.168.0.40 table 99
ip route add 0.0.0.0 via 192.168.0.1 dev ens160 table 99
テーブルID 99,100のルーティングを確認
ip route show table 99
ip route show table 100
疎通確認
ping -I ens160 192.168.0.55
ping -I ens192 192.168.0.56
両方のNICからNetAppに疎通できることを確認して下さい。
永続設定するには、設定ファイルを編集の必要があります。
経路テーブルIDの登録
vi /etc/iproute2/rt_tables
以下を追記
99 rule40
100 rule45
ルールファイルの作成
vi /etc/sysconfig/network-scripts/rule-ens160
from 192.168.0.40 table rule40 priority 100
「送信元IPが192.168.0.40ならrule40に従う、優先度は100」というルールを定義
vi /etc/sysconfig/network-scripts/rule-ens192
from 192.168.0.45 table rule45 priority 200
「送信元IPが192.168.0.45ならrule45に従う、優先度は200」というルールを定義
ルーティングファイルの修正
vi /etc/sysconfig/network-scripts/route-ens160
192.168.0.0/24 dev ens160 src 192.168.0.40 table rule40 …(1)
0.0.0.0 via 192.168.0.1 dev ens160 table rule40 …(2)
(1) 「192.168.0.0/24宛てでホストがens160の192.168.0.40だったらrule40に従う」
(2) 「rule40のデフォルトゲートウェイは192.168.0.1」
vi /etc/sysconfig/network-scripts/route-ens192
192.168.0.0/24 dev ens192 src 192.168.0.45 table rule45
0.0.0.0 via 192.168.0.1 dev ens192 table rule45
ネットワークの再起動
systemctl restart network
ルーティングルールの確認
ip rule
0: from all lookup local
100: from 192.168.0.40 lookup rule40
200: from 192.168.0.45 lookup rule45
32766: from all lookup main
32767: from all lookup default
ip route show table rule40
0.0.0.0 via 192.168.0.1 dev ens160
192.168.0.0/24 dev ens160 scope link src 192.168.0.40
ip route show table rule45
0.0.0.0 via 192.168.0.1 dev ens192
192.168.0.0/24 dev ens192 scope link src 192.168.0.45
疎通確認
ping -I ens160 192.168.0.55
ping -I ens192 192.168.0.56
両方のNICからNetAppに疎通できることを確認して下さい。
障害テスト
ip l set ens160 down
ip l set ens160 up
↑だとポリシールーティングルールがNICダウン時に消えて、アップ時に戻らない
ifdown ens160
ifup ens160
↑だとNIC再開時にポリシールーティング設定ファイルが反映されて、復帰する。
ifaceの作成
iscsiadm -m iface -I iface0 -o new
iscsiadm -m iface -I iface1 -o new
ifaceにMACアドレスを関連付ける
iscsiadm -m iface -I iface0 -o update -n iface.hwaddress -v 00:0c:29:fe:1c:c9
iscsiadm -m iface -I iface1 -o update -n iface.hwaddress -v 00:0c:29:fe:1c:d3
iface確認
iscsiadm -m iface
ターゲットを discovery する
iscsiadm -m discovery -t sendtargets -p 192.168.0.55 -I iface0
iscsiadm -m discovery -t sendtargets -p 192.168.0.56 -I iface1
discovery したターゲットにログインする
iscsiadm -m node –login
確立しているセッションを確認
iscsiadm -m session -o show
tcp: [5] 192.168.0.56:3260,1030 iqn.1992-08.com.netapp:sn.2a541519d78811e9a158000c2995fe70:vs.6 (non-flash)
tcp: [6] 192.168.0.56:3260,1030 iqn.1992-08.com.netapp:sn.2a541519d78811e9a158000c2995fe70:vs.6 (non-flash)
tcp: [7] 192.168.0.55:3260,1028 iqn.1992-08.com.netapp:sn.2a541519d78811e9a158000c2995fe70:vs.6 (non-flash)
tcp: [8] 192.168.0.55:3260,1028 iqn.1992-08.com.netapp:sn.2a541519d78811e9a158000c2995fe70:vs.6 (non-flash)
4接続を確認
パーティションを確認してみる
lsblk -S
NAME HCTL TYPE VENDOR MODEL REV TRAN
sda 2:0:0:0 disk VMware Virtual disk 1.0 spi
sdb 9:0:0:0 disk NETAPP LUN C-Mode 9500 iscsi
sdc 10:0:0:0 disk NETAPP LUN C-Mode 9500 iscsi
sr0 1:0:0:0 rom NECVMWar VMware IDE CDR10 1.00 ata
NetApp側で1つのものであるボリュームがsdbとsdcの2つ見えていることが確認できる。
WWIDの確認
/usr/lib/udev/scsi_id –whitelisted –device=/dev/sdb
3600a09807770457a7a5d4f2d48525a74
/usr/lib/udev/scsi_id –whitelisted –device=/dev/sdc
3600a09807770457a7a5d4f2d48525a74
sdbとsdcで同じことが確認できる。
DM-Multipath をインストール
yum -y install device-mapper-multipath
DM-Multipathのロード
modprobe dm-multipath
multipath.confを作成(mpathXという名前で自動作成する設定)
vi /etc/multipath.conf
blacklist {
devnode “^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*”
devnode “^hd[a-z]”
devnode “sda”
}
blacklist_exceptions {
wwid “3600a09807770457a7a5d4f2d48525a74”
}
defaults {
user_friendly_names yes
find_multipaths yes
}
dry-runして構成を確認
multipath -v2 -d
multipathdのサービス有効化
systemctl enable multipathd.service
systemctl start multipathd.service
systemctl status multipathd.service
multipath状態確認
multipath -ll
3600a09807770457a7a5d4f2d48525a74 dm-0 NETAPP ,LUN C-Mode
size=7.0G features=’4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle’ hwhandler=’1 alua’ wp=rw
-+- policy='service-time 0' prio=50 status=active
|- 9:0:0:0 sdb 8:16 active ready running
– 10:0:0:0 sdc 8:32 active ready running
本来ならここからボリュームのフォーマットを行うが、
先日フォーマット済みなので、マウントします。
mount /dev/dm-0 /mnt/iscsi
dfで確認
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 16G 3.0G 13G 19% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.5M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 283M 155M 129M 55% /boot
/dev/mapper/3600a09807770457a7a5d4f2d48525a74p1 7.0G 33M 7.0G 1% /mnt/iscsi
tmpfs 380M 0 380M 0% /run/user/1000
他コマンドメモ
NetApp停止
system node halt -node cluster1-01 -ignore-quorum-warnings
system node halt -node cluster1-03 -inhibit-takeover true
iSCSIログオフ(CentOS7)
iscsiadm -m node -T iqn.1992-08.com.netapp:sn.2a541519d78811e9a158000c2995fe70:vs.6 -p 192.168.0.55:3260,1028 –logout
iscsiadm -m node -T iqn.1992-08.com.netapp:sn.2a541519d78811e9a158000c2995fe70:vs.6 -p 192.168.0.56:3260,1030 –logout
iSCSI設定削除(CentOS7)
iscsiadm -m node -o delete -T iqn.1992-08.com.netapp:sn.2a541519d78811e9a158000c2995fe70:vs.6 -p 192.168.0.55:3260,1028
iscsiadm -m node -o delete -T iqn.1992-08.com.netapp:sn.2a541519d78811e9a158000c2995fe70:vs.6 -p 192.168.0.56:3260,1030
iSCSI LIFの停止
network interface modify -vserver iSCSI -lif iscsi_lif_1 -status-admin down
network interface modify -vserver iSCSI -lif iscsi_lif_2 -status-admin down
iSCSI LIFの変更
network interface modify -vserver iSCSI -lif iscsi_lif_1 -home-node cluster1-01 -home-port e0e
network interface modify -vserver iSCSI -lif iscsi_lif_2 -home-node cluster1-03 -home-port e0e
iSCSI LIFの開始
network interface modify -vserver iSCSI -lif iscsi_lif_1 -status-admin up
network interface modify -vserver iSCSI -lif iscsi_lif_2 -status-admin up
ポートの停止
set -privilege advanced
network port modify -node cluster1-03 -port e0d -up-admin false
set -privilege admin
ポートの開始
set -privilege advanced
network port modify -node cluster1-03 -port e0d -up-admin true
set -privilege admin
現在ホームポートに無いLIFをホームポートに返す
network interface revert -vserver * -lif *