NetAppとCentOS7でiscsiマルチパス設定してみました

今日は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 *

Comments are closed.