部署Multipath多路径环境
通过Multipath,实现以下目标:
在共享存储服务器上配置iSCSI,为应用服务器共享存储空间
应用服务器上配置iSCSI,发现远程共享存储
应用服务器上配置Multipath,将相同的共享存储映射为同一个名称
配置2台虚拟机,每台虚拟机均为两块网卡:
eth1和eth3都可用于iSCSI存储通讯
proxy eth0: 192.168.4.5/24
eth1: 192.168.2.5/24
web1 eth0: 192.168.4.100/24
eth1: 192.168.2.100/24
# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
# nmcli connection up eth0
# ping 192.168.4.5
步骤一:存储服务器上添加额外的磁盘(如果虚拟机已经有磁盘,此步骤可以忽略)
使用KVM软件新建(或修改)虚拟机,为虚拟机额外添加一块硬盘。
步骤二:存储服务器上安装并配置共享存储(如果有iscsi共享,此步骤可用忽略)
步骤三:在client服务器上安装并配置iSCSI客户端(前面的案例1已经完成的情况下,可以忽略此步骤)
... ...
web1上操作:
2)发现存储服务器的共享磁盘
因为有两条链路都可以连接到共享存储,所以需要在两条链路上都发现它。
注意:两次发现使用的IP地址不同!
# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.5 --discover
3)登陆共享存储
只需要将iscsi服务重启就可以自动登陆(就不需要再login了)。
在login之前,只能看到本地的存储,登陆之后,将会多出两块新的硬盘。
# systemctl restart iscsi
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
... ...
提示:登陆的是同一个服务器的同一个iSCSI,但客户端看到的是两个独立的设备,sda和sdb。其实,这两个设备是同一个设备。
4)设置开机自启动
iscsi用于自动login远程存储,iscsid是守护进程。
# systemctl enable iscsid
# systemctl enable iscsi
----------------------------------------------------------------------------------
步骤四:配置Multipath多路径
1)安装多路径软件包(克隆的虚拟机已默认安装,企业一般最小化安装,不会装)
# yum list | grep multipath
device-mapper-multipath.x86_64 0.4.9-111.el7 @anaconda/7.4
device-mapper-multipath-libs.x86_64 0.4.9-111.el7 @anaconda/7.4
device-mapper-multipath-libs.i686 0.4.9-111.el7 rhel7
# yum install -y device-mapper-multipath
2)生成配置文件(找到模版,拷贝模版)
# cd /usr/share/doc/device-mapper-multipath-0.4.9/
# ls
AUTHOR COPYING FAQ multipath.conf
# cp multipath.conf /etc/
3)获取wwid
登陆共享存储后,系统多了两块硬盘,这两块硬盘实际上是同一个存储设备。应用服务器使用哪个都可以,但是如果使用sdb时,sdb对应的链路出现故障,它不会自动切换到sda。
为了能够实现系统自动选择使用哪条链路,需要将这两块磁盘绑定为一个名称。
通过磁盘的wwid来判定哪些磁盘是相同的。
取得一块磁盘wwid的方法如下:(纯手打,tab不出来)
# /usr/lib/udev/scsi_id --whitelisted --device=/dev/sdb
360014054011feb0f7b148a3a3a04979d
# /usr/lib/udev/scsi_id --whitelisted --device=/dev/sda #可以发现sda和sdb的wwid一样,证明是同一个设备
360014054011feb0f7b148a3a3a04979d
4)修改配置文件
首先声明自动发现多路径:
# vim /etc/multipath.conf
defaults { #默认是开启的,这段不用修改
user_friendly_names yes
find_multipaths yes
}
然后在文件的最后加入多路径声明,如果哪个存储设备的wwid和第(3)步获取的wwid一样,那么,为其取一个别名,叫mpatha。
multipaths {
multipath {
wwid 360014054011feb0f7b148a3a3a04979d
alias mpatha
}
}
------------------------------------------------------------------------
步骤五:启用Multipath多路径,并测试
1)启动Multipath,并设置为开机启动
# systemctl start multipathd.service
# lsblk
页面显示
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
└─mpatha 253:2 0 20G 0 mpath #会发现多了一个mpatha
└─mpatha1 253:3 0 20G 0 part #原来磁盘有过1个分区并且格式化过,所以会有mpatha1
sdb 8:16 0 20G 0 disk
└─mpatha 253:2 0 20G 0 mpath
└─mpatha1 253:3 0 20G 0 part
# systemctl enable multipathd
2)检查多路径设备文件
如果多路径设置成功,那么将在/dev/mapper下面生成名为mpatha的设备文件:
# ls /dev/mapper/
control mpatha mpatha1
3)对多路径设备文件执行分区、格式化、挂载操作
提示:如果前面已经对iscsi做过分区操作,则这里可以直接识别到mpatha1(就不需要再次分区了)。
# mount /dev/mapper/mpatha1 /mnt/ #如果之前用sda挂载过一次,一定要记得umount /dev/sda后,再执行这个步骤。
4)验证多路径
查看多路径,sda和sdb都是running状态。
# multipath -rr
页面显示
reload: mpatha (360014054011feb0f7b148a3a3a04979d) undef LIO-ORG ,store
size=20G features='0' hwhandler='0' wp=undef
|-+- policy='service-time 0' prio=1 status=undef
| `- 2:0:0:0 sda 8:0 active ready running #可以看到有路径sda
`-+- policy='service-time 0' prio=1 status=undef
`- 3:0:0:0 sdb 8:16 active ready running #可以看到有路径sdb
---------------------------------------------------------------------------------------------------
先关闭一个路径192.168.4.100(eth0),不要关闭eth1,因为我们现在正在远程的是eth1,关掉它会导致远程断掉。
# nmcli connection down eth0
成功取消激活连接 'eth0'(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
# multipath -rr
页面显示
reload: mpatha (360014054011feb0f7b148a3a3a04979d) undef LIO-ORG ,store
size=20G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef
`- 2:0:0:0 sda 8:0 active ready running #现在只剩下一个路径sda了
还能正常使用/mnt,说明能正常使用虚拟磁盘。
# echo "test" > /mnt/a.txt
# nmcli connection up eth0
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6)
# multipath -rr #又可以看到2条路径了