部署Multipath多路徑環境
部署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
# 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條路徑了
部署Multipath多路徑環境