作为存储管理员,可以为Ceph Storage集群安装和配置iSCSI网关。 借助Ceph的iSCSI网关,可以有效地运行具有常规存储区域网络(SAN)的所有功能和优势的完全集成的块存储基础架构。
CEPH ISCSI网关简介
传统上,对Ceph存储集群的块级访问仅限于QEMU和librbd,这是在OpenStack环境中采用的关键推动因素。 现在,对Ceph存储集群的块级访问可以利用iSCSI标准来提供数据存储。
iSCSI网关将Ceph Storage与iSCSI标准集成在一起,以提供将RADOS块设备(RBD)映像导出为SCSI磁盘的高可用性(HA)iSCSI目标。 iSCSI协议允许客户端(称为启动器)通过TCP / IP网络将SCSI命令发送到称为目标的SCSI存储设备。 这允许异构客户端(例如Microsoft Windows)访问Ceph Storage集群。
ISCSI目标要求
Ceph存储高可用性(HA)iSCSI网关解决方案对网关节点数,内存容量和用于检测OSD的计时器设置有要求。
所需节点数量
至少安装两个iSCSI网关节点。 要提高弹性和I/O处理能力,请最多安装四个iSCSI网关节点。
内存要求
RBD映像的内存占用量可能会增大。 映射到iSCSI网关节点上的每个RBD映像都使用大约90 MB的内存。 确保iSCSI网关节点有足够的内存来支持每个映射的RBD映像。
检测down的OSD
Ceph Mon或OSD没有特定的iSCSI网关选项,但是降低默认计时器以检测OSD至关重要,以减少启动器超时的可能性,这一点很重要。 请遵循降低计时器设置中的说明来检测OSD down,以减少启动器超时的可能性。
安装ISCSI网关
作为存储管理员,必须先安装必需的软件包,然后才能利用Ceph iSCSI网关的优势。
每个iSCSI网关都运行LIO以提供iSCSI协议支持。 LIO利用用户空间直通(TCMU)与Ceph librbd库进行交互,以将RBD映像公开给iSCSI客户端。 借助Ceph iSCSI网关,可以有效地运行具有常规存储区域网络(SAN)的所有功能和优势的完全集成的块存储基础架构。
先决条件
- Rhel 8或7.7或更高版本。
- 运行Red Hat Ceph Storage 4或更高版本的集群。
使用CLI安装Ceph iSCSI网关
Ceph iSCSI网关是iSCSI目标节点,也是Ceph客户端节点。 Ceph iSCSI网关可以是独立节点,也可以位于Ceph对象存储磁盘(OSD)节点上。 完成以下步骤以安装Ceph iSCSI网关。
先决条件
-
Rhel 8或7.7或更高版本。
-
运行Red Hat Ceph Storage 4或更高版本的集群。
-
在存储集群中的所有Monitor节点上,以root用户身份重启ceph-mon服务:
语法
systemctl restart ceph-mon@MONITOR_HOST_NAME
示例
[root@mon ~]# systemctl restart ceph-mon@monitor1
-
如果iSCSI网关未位于OSD节点上,请将/etc/ceph /目录中的Ceph配置文件从存储集群中正在运行的Ceph节点复制到所有iSCSI网关节点。 Ceph配置文件必须存在于/etc/ceph/下的iSCSI网关节点上。
-
在所有iSCSI网关节点上,启用Ceph Tools存储库。 有关详细信息,请参阅《安装指南》中的“启用Red Hat Ceph存储库”部分。
-
在所有Ceph iSCSI网关节点上,安装和配置Ceph cli。 有关详细信息,请参阅《 Red Hat Ceph Storage 4安装指南》中的“安装Ceph lci”一章。
-
如果需要,请在所有iSCSI节点上的防火墙上打开TCP端口3260和5000。
-
创建一个新的或使用现有的RADOS块设备(RBD)。
步骤
-
在所有iSCSI网关节点上,安装ceph-iscsi和tcmu-runner软件包:
[root@iscsigw ~]# yum -y install ceph-iscsi tcmu-runner
如果存在这些软件包的先前版本,请在安装较新版本之前将其删除。 必须从Ceph Storage存储库中安装这些较新的版本。
-
(可选)在所有iSCSI网关节点上,根据需要安装和配置OpenSSL实用程序。
-
安装openssl软件包:
[root@iscsigw ~]# yum -y install openssl
-
在主iSCSI网关节点上,创建一个目录以保存SSL密钥:
[root@iscsigw ~]# mkdir ~/ssl-keys [root@iscsigw ~]# cd ~/ssl-keys
-
在主iSCSI网关节点上,创建证书和密钥文件。 在提示时输入环境信息。
[root@iscsigw ~]# openssl req -newkey rsa:2048 -nodes -keyout iscsi-gateway.key -x509 -days 365 -out iscsi-gateway.crt
-
在主iSCSI网关节点上,创建一个PEM文件:
[root@iscsigw ~]# cat iscsi-gateway.crt iscsi-gateway.key > iscsi-gateway.pem
-
在主iSCSI网关节点上,创建一个公钥:
[root@iscsigw ~]# openssl x509 -inform pem -in iscsi-gateway.pem -pubkey -noout > iscsi-gateway-pub.key
-
从主iSCSI网关节点,将iscsi-gateway.crt,iscsi-gateway.pem,iscsi-gateway-pub.key和iscsi-gateway.key文件复制到其他iSCSI网关节点上的/etc/ceph /目录中 。
-
-
在其中1个iSCSI网关节点上创建配置文件,然后将其复制到所有iSCSI网关节点。
-
在/etc/ceph/目录中创建一个名为iscsi-gateway.cfg的文件:
[root@iscsigw ~]# touch /etc/ceph/iscsi-gateway.cfg
-
编辑iscsi-gateway.cfg文件并添加以下行:
语法:
[config] cluster_name = CLUSTER_NAME gateway_keyring = CLIENT_KEYRING api_secure = true trusted_ip_list = IP_ADDR,IP_ADDR
示例:
[config] cluster_name = ceph gateway_keyring = ceph.client.admin.keyring api_secure = true trusted_ip_list = 192.168.0.10,192.168.0.11
-
将iscsi-gateway.cfg文件复制到所有iSCSI网关节点。 请注意,该文件在所有iSCSI网关节点上必须相同。
-
-
在所有iSCSI网关节点上,启用并启动API服务:
[root@iscsigw ~]# systemctl enable rbd-target-api [root@iscsigw ~]# systemctl start rbd-target-api [root@iscsigw ~]# systemctl enable rbd-target-gw [root@iscsigw ~]# systemctl start rbd-target-gw
-
接下来,配置目标,LUN和客户端。 有关详细信息,请参见使用CLI配置iSCSI目标。
配置ISCSI目标
作为存储管理员,可以使用gwcli命令行实用程序配置目标,LUN和客户端。 还可以使用gwcli reconfigure子命令来优化iSCSI目标的性能。
警告
Red Hat不支持管理由iSCSI网关工具(例如gwcli和ceph-ansible)导出的块设备映像。 另外,使用rbd命令重命名或删除iSCSI网关导出的RBD映像可能会导致存储集群不稳定。
从iSCSI网关配置中删除RBD映像之前,请遵循从操作系统中删除存储设备的标准过程。 有关详细信息,请参阅《 Red Hat Enterprise Linux 7的存储管理指南》或《 Red Hat Enterprise Linux 8的系统设计指南》中的“删除存储设备”一章。
先决条件
- 安装iSCSI网关软件
使用CLI配置iSCSI目标
iSCSI网关是iSCSI目标节点,也是Ceph客户端节点。配置iSCSI网关时,可以在单个节点上配置,也可以在Ceph OSD节点上配置。
警告
除非在本文档中指定或Red Hat支持指示您这样做,否则不要使用gwcli reconfigure子命令来调整其他选项。
先决条件
- 安装iSCSI网关软件
步骤
-
启动iSCSI网关CLI。
root@iscsigw ~]# gwcli
-
使用IPv4或IPv6地址创建iSCSI网关:
语法
/iscsi-targets create iqn.2003-01.com.redhat.iscsi-gw:target_name
goto gateways
create ISCSI_GW_NAME IP_ADDR_OF_GW
create ISCSI_GW_NAME IP_ADDR_OF_GW示例
/iscsi-targets create iqn.2003-01.com.redhat.iscsi-gw:ceph-igw
goto gateways
create ceph-gw-1 10.172.19.21
create ceph-gw-2 10.172.19.22不能混合使用IPv4和IPv6地址。
-
添加Ceph块设备:
语法
cd /disks
/disks/ create POOL_NAME image=IMAGE_NAME size=IMAGE_SIZE_m|g|t示例
cd /disks
>/disks/ create rbd image=disk_1 size=50g
请勿在池或映像名称中使用任何句点(.)。
-
创建客户端:
语法
>goto hosts
>create iqn.1994-05.com.redhat:client_name>auth use username=USER_NAME password=PASSWORD
示例
>goto hosts
>create iqn.1994-05.com.redhat:rh7-client
>auth username=iscsiuser1 password=temp1234567重点
红帽不支持混合客户端,其中一些客户端启用了质询握手身份验证协议(CHAP),而某些客户端则禁用了CHAP。 所有客户端必须启用CHAP或禁用CHAP。 默认行为是仅通过启动器名称对启动器进行身份验证。
如果启动器无法登录目标器,可能是某些启动器配置了错误的CHAP认证。例如
o- hosts … [Hosts: 2: Auth: MISCONFIG]
在hosts级使用以下命令重置所有的CHAP认证
/> goto hosts
/iscsi-target…csi-igw/hosts> auth nochap
ok
ok
/iscsi-target…csi-igw/hosts> ls
o- hosts … [Hosts: 2: Auth: None]
o- iqn.2005-03.com.ceph:esx … [Auth: None, Disks: 4(310G)]
o- iqn.1994-05.com.redhat:rh7-client … [Auth: None, Disks: 0(0.00Y)] -
将磁盘添加到客户端:
语法
/> goto hosts
/iscsi-target…csi-igw/hosts> auth nochap
ok
ok
/iscsi-target…csi-igw/hosts> ls
o- hosts … [Hosts: 2: Auth: None]
o- iqn.2005-03.com.ceph:esx … [Auth: None, Disks: 4(310G)]
o- iqn.1994-05.com.redhat:rh7-client … [Auth: None, Disks: 0(0.00Y)]示例
/>/iscsi-target…eph-igw/hosts
>cd iqn.1994-05.com.redhat:rh7-client
>disk add rbd/disk_1 -
要确认API是否正确使用SSL,请搜索rbd-target-api日志文件,该文件位于/var/log/rbd-target-api.log或/var/log/rbd-target/rbd-target-api.log,对于https,例如:
Aug 01 17:27:42 test-node.example.com python[1879]: * Running on https://0.0.0.0:5000/
-
验证ISCSI网关是否正常工作:
/> goto gateways
/iscsi-target…-igw/gateways> ls
o- gateways … [Up: 2/2, Portals: 2]
o- ceph-gw-1 … [ 10.172.19.21 (UP)]
o- ceph-gw-2 … [ 10.172.19.22 (UP)]如果状态为“UNKNOWN”,请检查网络问题和任何配置错误。 如果使用防火墙,请确认适当的TCP端口已打开。 验证iSCSI网关是否在trusted_ip_list选项中列出。 验证rbd-target-api服务是否正在iSCSI网关节点上运行。
-
(可选)重新配置max_data_area_mb选项:
语法
>/disks/ reconfigure POOL_NAME/IMAGE_NAME max_data_area_mb NEW_BUFFER_SIZE
示例
>/disks/ reconfigure rbd/disk_1 max_data_area_mb 64
注
max_data_area_mb选项控制每个映像可用于在iSCSI目标和Ceph群集之间传递SCSI命令数据的内存量(以兆字节为单位)。 如果此值太小,则可能导致过多的队列完全重试,这将影响性能。 如果该值太大,则可能导致一个磁盘占用过多的系统内存,这可能导致其他子系统的分配失败。 max_data_area_mb选项的默认值为8。
-
配置iSCSI启动器。
优化iSCSI目标的性能
有许多设置可控制iSCSI目标如何通过网络传输数据。 这些设置可用于优化iSCSI网关的性能。
警告
只有在Red Hat Support的指示下或本文档中指定时才更改这些设置。
gwcli reconfigure子命令控制用于优化iSCSI网关性能的设置。
影响iSCSI目标性能的设置
- max_data_area_mb
- cmdsn_depth
- immediate_data
- initial_r2t
- max_outstanding_r2t
- first_burst_length
- max_burst_length
- max_recv_data_segment_length
- max_xmit_data_segment_length
降低检测down osd的定时器设置
有时需要降低计时器设置来检测down的osd。例如,当使用Ceph Storage作为iSCSI网关时,可以通过降低检测down osd的定时器设置来减少启动器超时的可能性。
先决条件
- 运行中的Ceph存储集群
- 可访问Ansible管理节点
步骤
-
配置Ansible以使用新的计时器设置。
- 在Ansible管理节点上,在看起来像这样的group_vars/all.yml文件中添加ceph_conf_overrides部分,或如下编辑任何现有的ceph_conf_overrides部分:
ceph_conf_overrides:
osd:
osd_client_watch_timeout: 15
osd_heartbeat_grace: 20
osd_heartbeat_interval: 5运行Ansible playbook时,以上设置将添加到OSD节点上的ceph.conf配置文件中。
-
转到ceph-ansible目录:
[admin@ansible ~]$ cd /usr/share/ceph-ansible
-
使用Ansible更新ceph.conf文件并在所有OSD节点上重启OSD守护程序。 在Ansible管理节点上,运行以下命令:
裸金属部署
[admin@ansible ceph-ansible]$ ansible-playbook site.yml --limit osds
容器部署
[admin@ansible ceph-ansible]$ ansible-playbook site-container.yml --limit osds -i hosts
-
检查定时器设置是否与在ceph_conf_overrides中设置的相同:
语法
ceph daemon osd.OSD_ID config get osd_client_watch_timeout
ceph daemon osd.OSD_ID config get osd_heartbeat_grace
ceph daemon osd.OSD_ID config get osd_heartbeat_interval示例
[root@osd ~]# ceph daemon osd.0 config get osd_client_watch_timeout
{
“osd_client_watch_timeout”: “15”
}
[root@osd ~]# ceph daemon osd.0 config get osd_heartbeat_grace
{
“osd_heartbeat_grace”: “20”
}
[root@osd ~]# ceph daemon osd.0 config get osd_heartbeat_interval
{
“osd_heartbeat_interval”: “5”
} -
可选:如果无法立即重启OSD守护程序,则可以从Ceph Monitor节点进行在线更新,或直接更新所有Ceph OSD节点。 一旦能够重启OSD守护程序,请按照上述说明使用Ansible将新的计时器设置添加到ceph.conf中,以便这些设置在重启后保持不变。
- 要从Ceph Monitor节点在线更新OSD计时器设置,请执行以下操作:
语法
ceph tell osd.OSD_ID injectargs ‘–osd_client_watch_timeout 15’
ceph tell osd.OSD_ID injectargs ‘–osd_heartbeat_grace 20’
ceph tell osd.OSD_ID injectargs ‘–osd_heartbeat_interval 5’示例
[root@mon ~]# ceph tell osd.0 injectargs ‘–osd_client_watch_timeout 15’
[root@mon ~]# ceph tell osd.0 injectargs ‘–osd_heartbeat_grace 20’
[root@mon ~]# ceph tell osd.0 injectargs ‘–osd_heartbeat_interval 5’-
要从Ceph OSD节点在线更新OSD计时器设置,请执行以下操作:
语法
ceph daemon osd.OSD_ID config set osd_client_watch_timeout 15
ceph daemon osd.OSD_ID config set osd_heartbeat_grace 20
ceph daemon osd.OSD_ID config set osd_heartbeat_interval 5示例
[root@osd ~]# ceph daemon osd.0 config set osd_client_watch_timeout 15
[root@osd ~]# ceph daemon osd.0 config set osd_heartbeat_grace 20
[root@osd ~]# ceph daemon osd.0 config set osd_heartbeat_interval
使用CLI配置iSCSI主机组
iSCSI网关可以配置主机组,用于管理共享相同磁盘配置的多台服务器。iSCSI主机组将主机和组中每个主机都可以访问的磁盘进行逻辑分组。
重点
将磁盘设备共享给多个主机时,必须使用集群文件系统。
先决条件
- 安装iSCSI网关软件
- root级访问iSCSI网关节点
步骤
-
启动iSCSI网关CLI:
[root@iscsigw ~]# gwcli
-
创建新主机组:
语法
cd iscsi-targets/
cd IQN/host-groups
create group_name=GROUP_NAME示例
/> cd iscsi-targets/
/iscsi-targets> cd iqn.2003-01.com.redhat.iscsi-gw:ceph-igw/host-groups/
/iscsi-target…/host-groups> create group_name=igw_grp01 -
添加主机到主机组:
语法
cd GROUP_NAME
host add client_iqn=CLIENT_IQN示例
>cd igw_grp01
/iscsi-target…/host-groups/igw_grp01> host add client_iqn=iqn.1994-05.com.redhat:rh8-client重复此步骤,将其他主机添加到组中。
-
向主机组添加磁盘:
语法
cd /disks/
/disks> create pool=POOL image=IMAGE_NAME size=SIZE
cd /IQN/host-groups/GROUP_NAME
disk add POOL/IMAGE_NAME示例
>cd /disks/
/disks> create pool=rbd image=rbdimage size=1G
/> cd iscsi-targets/iqn.2003-01.com.redhat.iscsi-gw:ceph-igw/host-groups/igw_grp01/
/iscsi-target…s/igw_grp01> disk add rbd/rbdimage
? 重复此步骤以将其他磁盘添加到该组。
配置ISCSI启动器
可以在以下平台上配置iSCSI启动器连接iSCSI网关。
- Red Hat Enterprise Linux
- Red Hat Virtualization
- Microsoft Windows
- VMware ESXi
配置RHEL的iSCSI启动器
先决条件
- 红帽企业Linux 7.7或更高版本
- 必须安装软件包iscsi-initiator-utils-6.2.0.873-35或更高版本
- 必须安装软件包device-mapper-multipath-0.4.9-99或更高版本
步骤
-
安装iSCSI启动器和多路径工具:
[root@rhel ~]# yum install iscsi-initiator-utils
[root@rhel ~]# yum install device-mapper-multipath -
通过编辑“/etc/iscsi/initiatorname.iscsi”文件设置启动器名称。注意,启动器名称必须与使用gwcli命令进行初始设置时使用的启动器名称匹配。
-
配置多路径I/O。
- 创建默认的/etc/multipath.conf文件并启用multipathd服务:
[root@rhel ~]# mpathconf --enable --with_multipathd y
-
更新/etc/multipath.conf文件如下:
devices {
device {
vendor “LIO-ORG”
product “TCMU device”
hardware_handler “1 alua”
path_grouping_policy “failover”
path_selector “queue-length 0”
failback 60
path_checker tur
prio alua
prio_args exclusive_pref_bit
fast_io_fail_tmo 25
no_path_retry queue
}
} -
重启multipathd服务:
[root@rhel ~]# systemctl reload multipathd
-
设置CHAP和iSCSI发现和登录。
-
通过相应地更新/etc/iscsi/iscsid.conf文件来提供CHAP用户名和密码,例如:
node.session.auth.authmethod = CHAP
node.session.auth.username = user
node.session.auth.password = password -
发现目标门户:
语法
iscsiadm -m discovery -t st -p IP_ADDR
-
登录到目标:
语法
iscsiadm -m node -T TARGET -l
-
-
查看多路径I/O配置。 multipathd守护程序根据multipath.conf文件中的设置自动设置设备。
-
使用multipath命令显示设备在故障切换配置中设置的每个路径的优先级组,例如:
示例
[root@rhel ~]# multipath -ll
mpathbt (360014059ca317516a69465c883a29603) dm-1 LIO-ORG,TCMU device
size=1.0G features=‘0’ hwhandler=‘1 alua’ wp=rw
|-± policy=‘queue-length 0’ prio=50 status=active
|- 28:0:0:1 sde 8:64 active ready running \
-± policy=‘queue-length 0’ prio=10 status=enabled
`- 29:0:0:1 sdc 8:32 active ready runningmultipath-ll 输出中prio值表示ALUA状态,其中prio=50表示它是指向ALUA Active-Optimized状态下所属iSCSI网关的路径,prio=10表示它是Active-non-Optimized路径。status字段表示正在使用哪个路径,active表示当前使用的路径,enabled表示故障转移路径(如果active失败)。
-
要将设备名称(例如,multipath -ll输出中的sde)与iSCSI网关匹配,请执行以下操作:
示例
[root@rhel ~]# iscsiadm -m session -P 3
Persistent Portal 值是分配给gwcli实用程序中列出的iSCSI网关的IP地址。
-
配置Red Hat Virtualization的iSCSI启动器
先决条件
- Red Hat Virtualization 4.1
- 在所有Red Hat Virtualization节点上配置MPIO设备
- 必须安装软件包iscsi-initiator-utils-6.2.0.873-35或更高版本
- 必须安装软件包device-mapper-multipath-0.4.9-99或更高版本
步骤
-
配置多路径I/O。
- 创建默认的/etc/multipath.conf文件并启用multipathd服务:
[root@rhel ~]# mpathconf --enable --with_multipathd y
-
更新/etc/multipath.conf文件如下:
devices {
device {
vendor “LIO-ORG”
product “TCMU device”
hardware_handler “1 alua”
path_grouping_policy “failover”
path_selector “queue-length 0”
failback 60
path_checker tur
prio alua
prio_args exclusive_pref_bit
fast_io_fail_tmo 25
no_path_retry queue
}
} -
重启multipathd服务:
[root@rhel ~]# systemctl reload multipathd
-
单击“存储资源”选项卡以列出现有的存储域。
-
单击“新建域”按钮以打开“新建域”窗口。
-
输入新存储域的名称。
-
通过“数据中心”下拉菜单选择数据中心。
-
通过下拉菜单选择“域功能”和“存储类型”。无法使用与所选域功能不兼容的存储域类型。
-
在“使用主机”字段中选择活动主机。如果这不是数据中心中的第一个数据域,则必须选择数据中心的SPM主机。
-
选择iSCSI作为存储类型时,“新建域”窗口将自动显示带有未使用LUN的已知目标。 如果未列出要从中添加存储的目标,则可以使用目标发现来找到它,否则继续下一步。
- 单击“发现目标”,启用目标发现选项。当目标被发现并登录后,“新建域”窗口会自动显示环境中未使用的LUN的目标。注意,也会显示环境外部的LUN。使用“发现目标”选项可以在多个目标上添加LUN,或者在同一LUN上添加多条路径。
- 在“地址”字段中输入iSCSI主机的完全限定域名或IP地址。
- 在“端口”字段中浏览目标时,输入要连接到主机的端口。 默认值为3260。
- 如果使用质询握手身份验证协议(CHAP)来保护存储,请选中“用户身份验证”复选框。 输入CHAP用户名和CHAP密码。
- 单击发现按钮。
- 从发现结果中选择要使用的目标,然后单击“登录”按钮。 或者,单击“全部登录”以登录到所有发现的目标。
重点
如果需要访问多个路径,请确保通过所有需要访问的路径发现并登录目标。目前不支持通过修改存储域的方式添加额外的路径。
-
单击目标旁边的+按钮。这将展开条目,并显示附加到目标上的所有未使用的LUN。
-
选中用于创建存储域的每个LUN前的复选框。
-
(可选)可以配置高级参数。
- 单击高级参数。
- 在“警告低空间指示器”字段中输入百分比值。 如果存储域上的可用空间低于此百分比,则会向用户显示并记录警告消息。
- 在"严重空间动作阻止程序"字段中输入GB值。 如果存储域上的可用空间低于此值,则会向用户显示错误消息并进行记录,并且所有消耗空间(即使是暂时的)的新操作都将被阻止。
- 选中“删除后擦除”复选框,启用“删除后擦除”选项。可以在创建域之后编辑此选项,但这样做不会改变已经存在的磁盘的删除后擦除属性。
- 选中“删除后丢弃”复选框,启用“删除后丢弃”选项。可以在创建域之后编辑此选项。此选项仅对块存储域有效。
-
单击“确定”创建存储域并关闭窗口。
配置Microsoft Windows下的iSCSI启动器
先决条件
- Microsoft Windows Server 2016
步骤
-
安装iSCSI启动器并配置发现和设置。
-
安装iSCSI启动器驱动程序和MPIO工具。
-
启动MPIO程序,单击“发现多路径”选项卡,选中“添加对iSCSI设备的支持”框,然后单击“添加”。
-
重启MPIO程序。
-
在iSCSI Initiator属性窗口的"发现"选项卡上,添加目标门户。输入iSCSI网关的IP地址或DNS名称以及端口:
-
在“目标”选项卡上,选择目标,然后单击“连接”:
-
在“连接到目标”窗口上,选择“启用多路径”选项,然后单击“高级”按钮:
-
在Connect using部分下,选择目标门户IP。选择“启用CHAP登录”,并输入 iSCSI客户端凭据部分的“名称”和“目标机密”值,然后单击“确定”:
-
对设置iSCSI网关时定义的每个目标门户重复上述两个步骤。
重点
Windows Server 2016不接受少于12个字节的CHAP机密。
-
如果启动器名称与初始设置期间使用的启动器名称不同,请重命名启动器名称。 在“ iSCSI Initiator属性”窗口的“配置”选项卡上,单击“更改”按钮以重命名启动器名称。
-
-
设置多路径I/O。 在PowerShell中,使用PDORemovePeriod命令设置MPIO负载平衡策略,并使用mpclaim命令设置负载平衡策略。 iSCSI Initiator Tool配置其余选项。
注
Red Hat建议从PowerShell增加PDORemovePeriod选项到120秒。您能需要根据应用程序调整此值。当所有路径都失效时,120秒后,操作系统开始失败的I/O请求。
Set-MPIOSetting -NewPDORemovePeriod 120
-
设置故障转移策略
mpclaim.exe -l -m 1
-
验证故障转移策略
mpclaim -s -m
MSDSM-wide Load Balance Policy: Fail Over Only -
使用iSCSI Initiator工具,在目标选项卡上单击Devices…按钮:
-
在“设备”窗口中,选择一个磁盘,单击“MPIO…”按钮:
-
“设备详细信息”窗口显示到每个目标门户的路径。负载均衡策略必须选择“仅限故障切换”。
-
在PowerShell中查看多路径配置:
mpclaim -s -d MPIO_DISK_ID
用适当的磁盘标识符替换MPIO_DISK_ID。
注
有一个活动/优化路径是到拥有LUN的iSCSI网关节点的路径,并且每个其他iSCSI网关节点都有一个活动/未优化路径。
-
-
(可选)调整设置。 考虑使用以下注册表设置:
-
Windows磁盘超时
键
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Disk
值
TimeOutValue = 65
-
Microsoft iSCSI启动器驱动程序
键
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{4D36E97B-E325-
11CE-BFC1-08002BE10318}<Instance_Number>\Parameters值
LinkDownTime = 25
SRBTimeoutDelta = 15
-
配置VMware ESXi的iSCSI启动器
先决条件
- 使用虚拟机兼容性6.5或6.7和VMFS 6的VMware ESXi 6.5和6.7u3b
- 访问VMware Host Client
- 以root用户访问VMware ESXi主机以执行esxcli命令
步骤
-
禁用HardwareAcceleratedMove(XCOPY):
>esxcli system settings advanced set --int-value 0 --option
/DataMover/HardwareAcceleratedMove -
启用iSCSI软件。 在“导航器”窗格中,单击“存储”。 选择“适配器”选项卡。 单击“配置iSCSI”:
-
在“名称&别名”部分中验证启动器名称。
-
如果启动器名称与使用gwcli进行初始设置期间创建客户端时使用的启动器名称不同,请更改启动器名称:在VMware ESX主机中,使用以下esxcli命令。
- 获取iSCSI软件的适配器名称:
>esxcli iscsi adapter list
>Adapter Driver State UID Description> ------- --------- ------ ------------- ----------------------
>vmhba64 iscsi_vmk online iscsi.vmhba64 iSCSI Software Adapter
-
设置启动器名称:
语法
>esxcli iscsi adapter set -A ADAPTOR_NAME -n INITIATOR_NAME
示例
>esxcli iscsi adapter set -A vmhba64 -n iqn.1994-05.com.redhat:rh7-client
-
配置CHAP。 展开CHAP身份验证部分。 选择“除非目标要求,否则不要使用CHAP”。 输入在初始设置中使用的CHAP名称和密钥凭证。 确认“相互CHAP身份验证”部分已选择“不使用CHAP”。
警告
由于VMware Host Client的bug, CHAP设置最初没有被使用。在iSCSI网关节点上,内核日志包括以下错误提示:
>kernel: CHAP user or password not set for Initiator ACL
>kernel: Security negotiation failed.
>kernel: iSCSI Login negotiation failed.要解决此错误,请使用esxcli命令配置CHAP设置。 authname参数是vSphere Web Client中的"名称":
>esxcli iscsi adapter auth chap set --direction=uni –
authname=myiscsiusername --secret=myiscsipassword –
level=discouraged -A vmhba64 -
配置iSCSI设置。 展开高级设置。 将RecoveryTimeout值设置为25。
-
设置发现地址。在“动态目标”部分,单击“添加动态目标”。在“地址”下添加一个iSCSI网关的IP地址。只需要添加一个IP地址。最后,单击“保存配置”按钮。在主界面的“设备”选项卡上,将看到RBD映像。
注
LUN是自动配置的,使用ALUA SATP和MRU PSP。不要使用其他的SATPs和PSPs。可以通过esxcli命令来验证这一点:
语法
esxcli storage nmp path list -d eui.DEVICE_ID
将DEVICE_ID替换为适当的设备标识符。
-
验证多路径设置是否正确。
- 列出设备:
>esxcli storage nmp device list | grep iSCSI
Device Display Name: LIO-ORG iSCSI Disk
(naa.6001405f8d087846e7b4f0e9e3acd44b)
Device Display Name: LIO-ORG iSCSI Disk
(naa.6001405057360ba9b4c434daa3c6770c)-
获取上一步iSCSI磁盘的多路径信息:
>esxcli storage nmp path list -d naa.6001405f8d087846e7b4f0e9e3acd44b
iqn.2005-03.com.ceph:esx1-00023d000001,iqn.2003-01.com.redhat.iscsi-gw:iscsi-
igw,t,1-naa.6001405f8d087846e7b4f0e9e3acd44b
Runtime Name: vmhba64:C0:T0:L0
Device: naa.6001405f8d087846e7b4f0e9e3acd44b
Device Display Name: LIO-ORG iSCSI Disk
(naa.6001405f8d087846e7b4f0e9e3acd44b)
Group State: active
Array Priority: 0
Storage Array Type Path Config:
{TPG_id=1,TPG_state=AO,RTP_id=1,RTP_health=UP}
Path Selection Policy Path Config: {current path; rank: 0}iqn.2005-03.com.ceph:esx1-00023d000002,iqn.2003-01.com.redhat.iscsi-gw:iscsi-
igw,t,2-naa.6001405f8d087846e7b4f0e9e3acd44b
Runtime Name: vmhba64:C1:T0:L0
Device: naa.6001405f8d087846e7b4f0e9e3acd44b
Device Display Name: LIO-ORG iSCSI Disk
(naa.6001405f8d087846e7b4f0e9e3acd44b)
Group State: active unoptimized
Array Priority: 0
Storage Array Type Path Config:
{TPG_id=2,TPG_state=ANO,RTP_id=2,RTP_health=UP}
Path Selection Policy Path Config: {non-current path; rank: 0}
从输出示例中可以看出,每个路径的iSCSI或SCSI名称由以下部分组成:
启动器名称= iqn.2005-03.com.ceph:esx1 ISID = 00023d000002目标名称=iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw 目标端口组= 2 设备id =naa.6001405f8d087846e7b4f0e9e3acd44b
active的“组状态”值表示这是iSCSI网关的“活动优化”路径。gwcli命令将active列为iSCSI网关的所有者。其余路径的“组状态”值为“未优化”,如果active路径进入dead状态,则它们是故障转移路径。
-
要将所有路径匹配到各自的iSCSI网关,请执行以下操作:
示例
>esxcli iscsi session connection list
vmhba64,iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw,00023d000001,0
Adapter: vmhba64
Target: iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw
ISID: 00023d000001
CID: 0
DataDigest: NONE
HeaderDigest: NONE
IFMarker: false
IFMarkerInterval: 0
MaxRecvDataSegmentLength: 131072
MaxTransmitDataSegmentLength: 262144
OFMarker: false
OFMarkerInterval: 0
ConnectionAddress: 10.172.19.21
RemoteAddress: 10.172.19.21
LocalAddress: 10.172.19.11
SessionCreateTime: 08/16/18 04:20:06
ConnectionCreateTime: 08/16/18 04:20:06
ConnectionStartTime: 08/16/18 04:30:45
State: logged_invmhba64,iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw,00023d000002,0
Adapter: vmhba64
Target: iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw
ISID: 00023d000002
CID: 0
DataDigest: NONE
HeaderDigest: NONE
IFMarker: false
IFMarkerInterval: 0
MaxRecvDataSegmentLength: 131072
MaxTransmitDataSegmentLength: 262144
OFMarker: false
OFMarkerInterval: 0
ConnectionAddress: 10.172.19.22
RemoteAddress: 10.172.19.22
LocalAddress: 10.172.19.12
SessionCreateTime: 08/16/18 04:20:06
ConnectionCreateTime: 08/16/18 04:20:06
ConnectionStartTime: 08/16/18 04:30:41
State: logged_in将路径名与ISID值匹配,RemoteAddress值为所属iSCSI网关的IP地址。
管理ISCSI服务
ceph-iscsi包用于安装配置管理逻辑、rbd-target-gw和rbd- target-api systemd服务。
rbd-target-api服务在启动时恢复Linux iSCSI目标状态,并响应来自gwcli和Ceph Storage Dashboard等工具的ceph-iscsi REST API调用。 rbd-target-gw服务使用Prometheus插件提供指标。
rbd-target-api服务假定它是Linux内核目标层的唯一用户。 使用rbd-target-api时,请勿使用与targetcli软件包一起安装的目标服务。 在Ceph iSCSI网关安装过程中,Ansible自动禁用targetcli目标服务。
步骤
-
要启动服务:
# systemctl start rbd-target-api
# systemctl start rbd-target-gw
-
要重启服务:
# systemctl restart rbd-target-api
# systemctl restart rbd-target-gw
-
要重载服务:
# systemctl reload rbd-target-api
# systemctl reload rbd-target-gw
reload请求强制rbd-target-api重新读取配置并将其应用于当前运行的环境。 通常不需要这样做,因为更改是从Ansible并行部署到所有iSCSI网关节点的。
-
要停止服务:
# systemctl stop rbd-target-api
# systemctl stop rbd-target-gw
stop请求关闭网关的门户接口,删除到客户端的连接,并从内核中删除当前的Linux iSCSI目标配置。这会将iSCSI网关返回到一个干净的状态。当客户端断开连接时,活动的I/O会被客户端多路径层重新调度到其他iSCSI网关。
添加更多ISCSI网关
作为存储管理员,可以使用gwcli命令行工具或Red Hat Ceph Storage Dashboard将最初的两个iSCSI网关扩展到四个iSCSI网关。 添加更多的iSCSI网关可在使用负载平衡和故障转移选项时提供更大的灵活性,并提供更多的冗余。
先决条件
- 正在运行的Red Hat Ceph Storage 4集群
- 备用节点或现有OSD节点
- root权限
使用gwcli添加更多的iSCSI网关
可以使用gwcli命令行工具添加更多iSCSI网关。本步骤将默认的两个iSCSI网关扩展为四个iSCSI网关。
先决条件
- RHEL 7.7或更高版本
- 正在运行的Ceph Storage集群
- 安装iSCSI网关软件
- 具有root用户访问新节点或OSD节点的权限
步骤
-
如果iSCSI网关不在OSD节点上,请将运行中的Ceph节点/etc/ceph/目录下的Ceph配置文件拷贝到新的iSCSI网关节点上。iSCSI网关节点的“/etc/ceph/”目录下必须存在Ceph配置文件。
-
安装和配置Ceph CLI。
-
在新的iSCSI网关节点上,启用Red Hat Ceph Storage Tools存储库:
Red Hat Enterprise Linux 7
[proot@iscsigw ~]# subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpms
Red Hat Enterprise Linux 8
[root@iscsigw ~]# subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-
rpms -
安装ceph-iscsi和tcmu-runner软件包:
Red Hat Enterprise Linux 7
[root@iscsigw ~]# yum -y install ceph-iscsi tcmu-runner
Red Hat Enterprise Linux 8
[root@iscsigw ~]# dnf install ceph-iscsi tcmu-runner
- If needed, install the openssl package:
Red Hat Enterprise Linux 7
[root@iscsigw ~]# yum install openssl
Red Hat Enterprise Linux 8
[root@iscsigw ~]# dnf install openssl
-
在现有的iSCSI网关节点之一上,编辑/etc/ceph/iscsi-gateway.cfg文件,并将新的iSCSI网关节点的新IP地址附加到trusted_ip_list选项,例如:
[config]
…
trusted_ip_list = 10.172.19.21,10.172.19.22,10.172.19.23,10.172.19.24 -
将更新后的/etc/ceph/iscsi-gateway.cfg文件复制到所有iSCSI网关节点。
重点
在所有iSCSI网关节点上,iscsi-gateway.cfg文件必须相同。
-
(可选)如果使用SSL,还请从现有iSCSI网关节点之一复制?/ssl-keys/iscsi-gateway.crt,?/ssl-keys / iscsi-gateway.pem,?/ssl-keys/iscsi-gateway-pub.key和?/ssl-keys/iscsi-gateway.key文件到新iSCSI网关节点上的/etc/ceph/目录中。
-
在新的iSCSI网关节点上启用并启动API服务:
[root@iscsigw ~]# systemctl enable rbd-target-api
[root@iscsigw ~]# systemctl start rbd-target-api -
启动iSCSI网关CLI。
[root@iscsigw ~]# gwcli
-
使用IPv4或IPv6地址创建iSCSI网关:
语法
>csi-target create iqn.2003-01.com.redhat.iscsi-gw:TARGET_NAME
>to gateways
>eate ISCSI_GW_NAME IP_ADDR_OF_GW
>eate ISCSI_GW_NAME IP_ADDR_OF_GW示例
>si-target create iqn.2003-01.com.redhat.iscsi-gw:ceph-igw
>to gateways
> create ceph-gw-3 10.172.19.23
>create ceph-gw-4 10.172.19.24重点
不能混合使用IPv4和IPv6地址。
-
从iSCSI启动器,重新登录以使用新添加的iSCSI网关。
验证启动器和iscsi目标是否连接
安装iSCSI网关、配置iSCSI目标器和启动器后,请检查启动器与iSCSI目标是否正确连接。
先决条件
- 安装iSCSI网关软件
- 配置iSCSI目标
- 配置iSCSI启动器
步骤
-
启动iSCSI网关 CLI:
[root@iscsigw ~]# gwcli
-
验证启动器是否已连接iSCSI目标:
/> goto hosts
/iscsi-target…csi-igw/hosts> ls
o- hosts … [Hosts: 1: Auth: None]
o- iqn.1994-05.com.redhat:rh7-client [LOGGED-IN, Auth: None, Disks: 0(0.00Y)]如果启动器已连接,则启动器状态为“LOGGED-IN”。
-
验证lun跨iSCSI网关均衡:
/> goto hosts
/iscsi-target…csi-igw/hosts> ls
o- hosts … [Hosts: 2: Auth: None]
o- iqn.2005-03.com.ceph:esx … [Auth: None, Disks: 4(310G)]
| o- lun 0 … [rbd.disk_1(100G), Owner: ceph-gw-1]
| o- lun 1 … [rbd.disk_2(10G), Owner: ceph-gw-2]创建磁盘时,将基于哪些网关具有最低数量的映射LUN,为其分配iSCSI网关作为其所有者。 如果此数目是平衡的,则采用轮询方式分配来分配网关。 当前,LUN的平衡不是动态的,用户无法选择。
当启动器登录到目标,且多路径层处于优化状态时,启动器的操作系统多路径实用程序会向Owner网关报告该路径处于ALUA Active-Optimized (AO)状态。多路径实用程序会报告其他路径处于ANO (ALUA Active-non-Optimized)状态。
如果AO路径失败,则使用其他iSCSI网关之一。 故障转移网关的顺序取决于启动程序的多路径层,通常情况下,顺序基于首先发现的路径。
使用CLI升级CEPH ISCSI网关
升级Ceph存储iSCSI网关可以通过滚动方式完成,每次升级一个裸金属iSCSI网关节点。
重点
升级和重新启动Ceph OSD时,请勿升级iSCSI网关。 等待直到OSD升级完成并且存储集群处于active+clean状态。
先决条件
- 正在运行的iSCSI网关
- 正在运行的Ceph Storage集群
- 具有对iSCSI网关节点的root访问权限
步骤
-
更新iSCSI网关软件包:
[root@iscsigw ~]# yum -y update ceph-iscsi
-
停止iSCSI网关守护程序:
[root@iscsigw ~]# systemctl stop rbd-target-api
[root@iscsigw ~]# systemctl stop rbd-target-gw -
验证iSCSI网关守护程序是否完全停止:
[root@iscsigw ~]# systemctl status rbd-target-gw
-
如果rbd-target-gw服务成功停止,请跳至步骤4。
-
如果rbd-target-gw服务无法停止,请执行以下步骤:
-
如果未安装targetcli软件包,请安装targetcli软件包:
[root@iscsigw ~]# yum -y install targetcli
-
检查现有目标对象:
[root@iscsigw ~]# targetcli ls
示例
o- / … […]
o- backstores … […]
| o- user:rbd … [Storage Objects: 0]
o- iscsi … [Targets: 0]如果backstores和Storage Objects为空,则iSCSI目标已彻底关闭,可以跳至步骤4。
-
如果仍然有目标对象,请使用以下命令强制删除所有目标对象:
[root@iscsigw ~]# targetcli clearconfig confirm=True
如果多个服务正在使用iSCSI目标,请在交互模式下使用targetcli删除那些特定对象。
-
-
-
更新tcmu-runner软件包:
[root@iscsigw ~]# yum -y update tcmu-runner
-
停止tcmu-runner服务:
[root@iscsigw ~]# systemctl stop tcmu-runner
-
按照以下顺序重启iSCSI网关服务:
[root@iscsigw ~]# systemctl start tcmu-runner
[root@iscsigw ~]# systemctl start rbd-target-gw
[root@iscsigw ~]# systemctl start rbd-target-api
监控ISCSI网关
红帽为iSCSI网关环境提供了一个附加工具,可以监视导出的Ceph块设备(RBD)映像的性能。
gwtop工具是一种类似于top的工具,它显示通过iSCSI导出到客户端的RBD映像的聚合性能指标。指标来源于性能指标域代理(PMDA)。来自Linux-IO目标(LIO) PMDA的信息用于列出每个导出的RBD映像和连接的客户端及其相关的I/O指标。
注
gwtop工具在容器化环境中不可用。 这意味着Performance Co-Pilot(PCP)软件包也不适用于容器化环境。
在iSCSI网关节点上完成以下过程。
先决条件
- 正在运行的Ceph Storage集群
- 安装iSCSI网关软件
- 对Ceph iSCSI网关节点的root级别访问
步骤
-
安装ceph-iscsi-tools软件包:
[root@iscsigw ~]# yum -y install ceph-iscsi-tools
-
安装performance co-pilot包:
[root@iscsigw ~]# yum -y install pcp
-
安装LIO PMDA软件包:
root@iscsigw ~]# yum -y install pcp-pmda-lio
-
启用并启动performance co-pilot服务:
[root@iscsigw ~]# systemctl enable pmcd
[root@iscsigw ~]# systemctl start pmcd -
注册pcp-pmda-lio代理:
[root@iscsigw ~]# cd /var/lib/pcp/pmdas/lio
[root@iscsigw ~]# ./Install默认情况下,gwtop假定iSCSI网关配置对象存储在rbd池中的一个名为gateway.conf的RADOS对象中。 此配置定义了用于联系以收集性能统计信息的iSCSI网关。 可以使用-g或-c标志覆盖此设置。 有关更多详细信息,请参见gwtop --help。
LIO配置决定从performance co-pilot要提取的性能统计信息的类型。 gwtop启动时,它会查看LIO配置,如果找到用户空间磁盘,则gwtop会自动选择LIO收集器。
-
使用gwtop实用程序监视iSCSI网关。 对于用户支持的存储(TCMU)设备:
gwtop 2/2 Gateways CPU% MIN: 4 MAX: 5 Network Total In: 2M Out: 3M 10:20:00
Capacity: 8G Disks: 8 IOPS: 503 Clients: 1 Ceph: HEALTH_OK OSDs: 3
Pool.Image Src Size iops rMB/s wMB/s Client
iscsi.t1703 500M 0 0.00 0.00
iscsi.testme1 500M 0 0.00 0.00
iscsi.testme2 500M 0 0.00 0.00
iscsi.testme3 500M 0 0.00 0.00
iscsi.testme5 500M 0 0.00 0.00
rbd.myhost_1 T 4G 504 1.95 0.00 rh460p(CON)
rbd.test_2 1G 0 0.00 0.00
rbd.testme 500M 0 0.00 0.00在“客户端”列中,(CON)表示iSCSI启动器(客户端)当前已登录到iSCSI网关。 如果显示-multi-,则多个客户端将映射到单个RBD映像。
重点
不支持SCSI持久保留。 如果使用不依赖SCSI持久保留的集群感知文件系统或群集软件,则支持将多个iSCSI启动器映射到RBD映像。 例如,支持使用ATS的VMware vSphere环境,但不支持使用Microsoft的集群服务器(MSCS)。
lio
-
启用并启动performance co-pilot服务:
[root@iscsigw ~]# systemctl enable pmcd
[root@iscsigw ~]# systemctl start pmcd -
注册pcp-pmda-lio代理:
[root@iscsigw ~]# cd /var/lib/pcp/pmdas/lio
[root@iscsigw ~]# ./Install默认情况下,gwtop假定iSCSI网关配置对象存储在rbd池中的一个名为gateway.conf的RADOS对象中。 此配置定义了用于联系以收集性能统计信息的iSCSI网关。 可以使用-g或-c标志覆盖此设置。 有关更多详细信息,请参见gwtop --help。
LIO配置决定从performance co-pilot要提取的性能统计信息的类型。 gwtop启动时,它会查看LIO配置,如果找到用户空间磁盘,则gwtop会自动选择LIO收集器。
-
使用gwtop实用程序监视iSCSI网关。 对于用户支持的存储(TCMU)设备:
gwtop 2/2 Gateways CPU% MIN: 4 MAX: 5 Network Total In: 2M Out: 3M 10:20:00
Capacity: 8G Disks: 8 IOPS: 503 Clients: 1 Ceph: HEALTH_OK OSDs: 3
Pool.Image Src Size iops rMB/s wMB/s Client
iscsi.t1703 500M 0 0.00 0.00
iscsi.testme1 500M 0 0.00 0.00
iscsi.testme2 500M 0 0.00 0.00
iscsi.testme3 500M 0 0.00 0.00
iscsi.testme5 500M 0 0.00 0.00
rbd.myhost_1 T 4G 504 1.95 0.00 rh460p(CON)
rbd.test_2 1G 0 0.00 0.00
rbd.testme 500M 0 0.00 0.00在“客户端”列中,(CON)表示iSCSI启动器(客户端)当前已登录到iSCSI网关。 如果显示-multi-,则多个客户端将映射到单个RBD映像。
重点
不支持SCSI持久保留。 如果使用不依赖SCSI持久保留的集群感知文件系统或群集软件,则支持将多个iSCSI启动器映射到RBD映像。 例如,支持使用ATS的VMware vSphere环境,但不支持使用Microsoft的集群服务器(MSCS)。