我爱上班,风雨无阻
大家每天去上班,不可能只有一条路线
可以地铁、也可以开车或公交
万一地铁停运或车子限行,至少还有其他线路选择
企业级存储也是如此
关键业务的存储访问一般有多条路径
网络或单个存储设备故障后
访问路径会自动切换,确保业务不间断运行
对于分布式存储
本地实现业务不中断的高可用机制主要有
VIP和MPIO两种方式
千人一面VIP
VIP 即Virtual IP Address,虚拟IP地址
VIP相当于企业的客服微信,头像昵称永远不变
但回复你的工作人员可能每天都不同
张三生病了,那就由李四顶上
李四请假了,就让王五支持
总之,这个号永远有人响应
分布式存储的VIP机制也一样
它通过虚拟IP地址在集群不同节点间漂移
实现IO链路的故障切换,确保存储服务不间断
VIP就是企业微信号,存储节点是客服团队成员
虚拟IP是一个不固定分配的IP地址
它根据集群状态落在任意节点
动态对外提供存储服务
因此使用VIP挂载分布式存储提供的存储资源时
真正承载IO访问的节点并不是固定的
集群所有节点工作正常
可能会由多个节点在同时提供存储服务
集群中有节点故障时
虚拟IP会从该节点漂移到其他正常节点
从而让IO访问转移到其他节点
实现业务的高可用切换
在分布式存储集群中
当可用节点B通过BeatHeart得知
节点A对外服务质量低于预期的时候
(比如发生故障,服务无响应)
会将自己的ARP缓存发送出去
告知网络中所有主机虚拟IP地址指向本机
这时外界再次访问虚拟IP的时候
就访问到节点B
而A降级为备用服务器
这就完成了主从机器的自动切换
如果B节点故障,其他可用节点也会再次接管虚拟IP
脚踏两船MPIO
MPIO即 MultiPath Input Output
简称MPIO或多路径
MPIO机制相当于一个脚踏两条船的渣男
永远有两个或多个女朋友
女朋友A生气了,他就去找女朋友B
和女朋友B闹矛盾了,他又回头找女朋友A
但在他父母眼里
一直以为他交往的是同一个女友
在存储系统中,不同的FC或IP链路就是女朋友
要传输的数据是渣男
而客户端主机则是被蒙在鼓里的父母
MPIO多路径是一种常见的存储高可用技术
其核心原理是
业务主机通过多条路径同时连接到一个存储设备
并通过存储虚拟化技术实现对存储设备的
识别、并行访问与故障切换
这种设计可以显著提高存储系统的性能和可靠性
iSCSI多路径连接
多路径客户端会把iSCSI上报的多条路径合并管理
对主机呈现虚拟的单一路径(设备)
这样不仅可以防止多条路径读写不一致
还能实现高可用切换与性能提升
主路径发生故障后
多路径服务进行透明的主从切换(FailOver)
当路径恢复后自动进行回切(FailBack)
那么主机是如何识别多个路径上报的设备
是同一个LUN呢
答案其实很简单
只需要LUN有相同的WWN或LUN ID
多路径客户端就会按相同设备进行多路径处理
VIP与MPIO多角度对比
(1) 管理配置
-
MPIO配置相对复杂,需要通过不同路径重复映射,并在主机端部署多路径组件进行多路径配置。
-
VIP使用简单,直接通过VIP挂载存储卷即可,无需在主机端进行额外配置。
(2)单卷性能
-
MPIO单卷可以使用多条路径实现性能叠加与负载均衡,性能更高。
-
VIP单卷只对应一条访问路径,性能受限于链路速率。
(3) 切换效率
-
MPIO是把多链路挂载的同一个卷,通过MPIO客户端把路径(设备)合并,故障时直接切换到预定的备用链路,切换响应时间短。
-
VIP是IP地址的重新映射,故障切换时需要将漂移虚拟IP、刷新路由表,然后访问到新的存储服务节点,响应时间可能略长(与超时判断、网络质量、漂移机制有关)。
(4)兼容性
-
部分虚拟化/云计算对接存储要求使用MPIO,如华为云、zstack、easystack等。
-
部分虚拟化/云计算无明确限制,可以灵活选择VIP或MPIO方式,如OpenStack。
(5)虚拟化挂载
-
MPIO适合卷数量少、虚拟化宿主机直接挂载存储卷的场景,简单可靠。
-
VIP适合虚机直接挂载存储的多卷环境,还可通过Cinder驱动连接,配置管理存储资源灵活方便。
MPIO和VIP对比表
各有所长,适用场景不同
MPIO经典,可靠性高,但配置部署相对复杂
数据库/虚拟化等场景较适用
VIP简单易用,资源分配灵活
适合多样化的异构业务环境、卷数量较多的业务场景
FASS本地高可用实践
大道云行FASS分布式存储系统
默认采用VIP高可用模式
在集群配置时需要设置VIP地址
且VIP地址需与业务网络网段一致
保证业务正常访问
客户端直接使用VIP地址挂载存储卷即可使用
FASS VIP服务流程步骤:架构主要有以下四部分组成
-
集群所有节点通过raft算法选举出master节点,本发明中采用外部组件etcd工具选举和漂移master。
-
master建立到所有target服务的心跳,并根据target ID建立统一hash视图。
-
master将多VIP均匀分配到视图中(一致性hash算法,实现多VIP均衡)。
-
各节点VIP服务向master获取分配结果,激活或禁用本节点的虚拟IP。
VIP漂移与分配
以iSCSI为例,应用主机(iSCSI Initiator)使用集群VIP访问存储卷时,FASS软件会将请求重定向至iSCSI Target服务所在的目标节点,应用主机无需知道目标节点的物理IP地址即可正常访问iSCSI存储资源。应用主机(iSCSI Initiator)登陆iSCSI Target并发起I/O读写后,一旦目标iSCSI Target服务所在的节点故障,VIP就会漂移到其他的可用的存储节点,确保Discovery Portal与存储卷的iSCSI Target服务始终可用。当有新的iSCSI Initiator登陆请求时,存储集群会将访问重定向到提供iSCSI Target服务的健康节点。
FASS存储集群的故障重定向登陆
当前连接的iSCSI Target服务失效时,FASS集群在启用新的iSCSI Target服务节点后,会通知应用主机重新发起iSCSI登陆,从而导向到提供iSCSI Target服务的新节点,数据访问在短暂中断后即可自动恢复正常。
除了VIP挂载,FASS同时支持iSCSI和NVMeoF多路径模式,使用多路径部署时,仅需要在配置文件将多路径参数设置为“on”即可。
客户端的与标准存储设备配置方法一致,安装好多路径客户端、开启服务,挂载存储,然后进行多路径配置即可以,以redhat操作系统为例:
(1) multipath安装
在redhat中,安装操作系统的时候multipath已经默认被安装,查看安装情况
# rpm -qa | grep device-mapper
检查安装是否正常
# lsmod |grep dm_multipath
如果模块没有加载成功,使用下面的命令初始化DM:
#modprobe dm-multipath
#modprobe dm-round-robin
#service multipathd start
#multipath –v2
(2) 编辑配置文件
# vim /etc/multipath.conf
--------------------------------------------------
device {
vendor "TaoCloud" #厂商
product "FASS" #设备名
path_grouping_policy multibus #路径组策略
path_checker tur #路径状态决定方法
path_selector "round-robin 0" #备选IO路径
failback immediate #故障恢复模式
---------------------------------------------------
(3) 获取WWID
# cat /etc/multipath/bindings 或 # multipath -v3
(4) 启动multipathd服务并设置自启动
#service multipathd restart
#chkconfig --level 345 multipathd on
#chkconfig --list | grep multipathd
(5) 检查multipath设备信息
# multipath -ll
(6) 检查配置是否成功
# ll /dev/mapper/
如果配置正确的话就会在/dev/mapper/目录下多出mpath0、mpath1(自动分配的名称)等之类设备,如果在配置时起了别名,则会使用别名代替默认名称
然后用fdisk -l命令可以看到多路径软件创建的卷
SDS2.0的时代已经来来临,FASS作为SDS2.0的代表产品,既可以提供不亚于传统阵列的的性能,也可以提供传统存储不具备的Scale-out弹性扩展能力。
从数据可靠性角度,FASS有多副本、纠删码数据冗余保护。在本地高可用特性上,FASS有VIP和MPIO功能加持,FASS同时支持iSCSI和NVMeoF的多路径管理,在iSCSI多路径模式下,4节点可达到数十万IOPS能力;在VIP模式下,FASS切换时间可以低至5秒,实现不亚于MPIO的快速切换响应。不管是传统数据库业务,还是云计算、AI等应用,FASS可以灵活选择高可用模式,从容应对上述场景,满足各类业务的不间断访问要求。