本文作者 / Wenda
关注存储以及周边生态,独立的存储系统生存太艰难,融入生态才体现价值。
1、背 景
我们Ceph作为后端存储时,这里只针对块存储空间的使用进行讨论。
对于块存储空间,Linux用户的使用方法有多种,如:rbd map方式、rbd-nbd map方式、 rbd-fuse方式, 但是对于Windows用户,如何使用呢?--- 答案:通过ISCSI访问。
2、说 明
针对块存储场景,iSCSI gateway的作用:
1) 采用ceph作为后端存储时,通过iSCSI协议为Windows/VMWare/database提供数据存储服务。
2) 采用2个/多个iSCSI gateway,通过iSCSI协议提供HA高可用方案。
如图,这是各种操作系统通过ISCSI访问Ceph块存储空间的架构图。
3、iSCSI gateway节点检查&确认
iSCSI gateways服务可以与OSD节点融合部署,也可以部署在独立的节点上。
注:官方建议 RHEL/CentOS 7.5; Linux kernel v4.17 or newer
实际采用:
操作系统:CentOS Linux release 7.4.1708 (Core);
内核版本:3.10.0-693.el7.x86_64;
确认内核选项启用,如下:
注:官方建议 Ceph Luminous (12.2.x) release or newer
实际采用:Ceph Kraken (11.1.0)
通过快速检测OSDs 故障、快速检测请求超时,尽量减少iSCSI initiator端业务超时的情况。
建议如下配置:
确认配置:
确认名称为”rbd”的pool存在,如下:
确认支持5个features,如下:
确认支持VAAI性能加速,如下:(如果不支持功能升也能使用)
4、安 装
参照:
http://docs.ceph.com/docs/master/rbd/iscsi-target-cli-manual-install/
注:ceph-iscsi-cli 和target tools依赖以下packages:
注:rtslib-fb依赖pyudev>=0.16.1
4.2. iSCSI gateway节点部署相关服务
4.2.2. 部署rtslib-fb
4.2.3. 部署configshell-fb
4.2.4. 部署targetcli-fb
4.2.5. 创建配置文件
4.2.6. 部署ceph-iscsi-config
4.2.8. 检查各个服务状态正常
首先,检查相关服务状态正常:
例如以“iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw”为iqn创建iSCSI target。
5.2. 创建iSCSI gateways
配置地址解析,如下:
其中,”10.10.10.121” 是本节点IP,且该IP用于读/写服务,”wenda-centos7-1801” 是本节点hostname。
例如,要配置2个gateway。
注意:配置/etc/hosts后,需要重启 这3个服务:
注意:在2个gateway节点上,要分别确认这3个服务正常运行。
如下创建2个gateway,提供HA方案:
然后,检查3260端口监听正常:
5.3. 创建iSCSI disk
如下创建RBD Image作为iSCSI 后端disk:
首先登陆iSCSI initiator节点(即iSCSI client端),获取InitiatorName。
然后在gateway节点以“iqn.1994-05.com.redhat:rh7-client”为iqn创建iSCSI client。
注:建议略过该步骤。
一旦配置CHAP认证信息,则iSCSI连接时必须提供CHAP用户信息。
例如设置client的CHAP用户名为”myiscsiusername”,密码为”myiscsipassword”
例如 为iSCSI client添加disk名称为”rbd.disk_1”,该”rbd.disk_1”可在gwcli "ls /disks/"查询。
6.2. 配置multipath服务
创建默认配置/etc/multipath.conf,并enable multipathd service。
修改配置/etc/multipath.conf,内容如下:
注意:高可用策略不适用ALUA。因为CentOS7.4内核版本的target不支持ALUA属性。
重启multipath服务。
命令: systemctl reload multipathd |
---|
如果iSCSI client没有配置CHAP认证信息,则iSCSI initiator端也无需配置CHAP信息。
例如 iSCSI gateway的IP是10.10.10.121
登陆iSCSI initiator端节点,然后执行命令:
命令iscsiadm -m discovery -t st -p 10.10.10.121 |
---|
例如target的iqn为iqn.2003-01.com.redhat.iscsi-gw:iscsi-igwww
命令iscsiadm -m node -T iqn.2003-01.com.redhat.iscsi-gw:iscsi-igwww --login |
---|
如下在客户服务器上执行命令 ll /dev/disk/by-path/,查看到扫描的iSCSI盘映射为客户服务器块设备为/dev/sda 和/dev/sdb
Linux/CentOS 7.4及更旧版本,系统中struct tcmu_dev没有qfull_time_out成员。
【解决方法一】
说明:lun.py中不设置qfull_time_out。
影响:存储异常时,业务可能由于iSCSI设备TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE导致阻塞。
修改:vim ceph-iscsi-config/ceph_iscsi_config/lun.py
注意:修改后重启 rbd-target-gw 服务和 rbd-target-api 服务,就可以正常运行了。
【解决方法二】
说明:系统中struct tcmu_dev增加qfull_time_out成员。
影响:存储异常时,业务由于iSCSI设备被设置SAM_STAT_TASK_SET_FULL,及时返回失败,不阻塞。
内核patch:qfull_timeout : 参照http://www.oscube.cn/blog/page-11/
设置成不支持ALUA。
修改方法:vim ./ceph-iscsi-config/ceph_iscsi_config/gateway.py
注意:修改后重启 rbd-target-gw 服务和 rbd-target-api 服务,就可以正常运行了。
猜你还想看这些内容
· END ·
点它!