部署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条路径了