注意
本文档适用于 Ceph 的开发版本。
使用 Ansible 配置 iSCSI 目标
Ceph iSCSI 网关是 iSCSI 目标节点,同时也是 Ceph 客户端节点。Ceph iSCSI 网关可以配置在专用节点上,也可以与 Ceph 对象存储磁盘 (OSD) 节点共存。以下步骤将安装和配置 Ceph iSCSI 网关以实现基本操作。
要求
正在运行的 Ceph Luminous (12.2.x) 集群或更新版本
Red Hat Enterprise Linux/CentOS 7.5(或更高版本);Linux 内核 v4.16(或更高版本)
在所有 iSCSI 网关节点上安装
ceph-iscsi软件包
安装
在 Ansible 安装程序节点上执行以下步骤,该节点可以是管理节点或专用部署节点
以
root身份安装ceph-ansible软件包# yum install ceph-ansible在
/etc/ansible/hosts文件中为网关组添加条目[iscsigws] ceph-igw-1 ceph-igw-2
注意
如果 iSCSI 网关与 OSD 节点共存,则将 OSD 节点添加到 [iscsigws] 部分。
配置
ceph-ansible 软件包在 /usr/share/ceph-ansible/group_vars/ 目录中放置了一个名为 iscsigws.yml.sample 的文件。创建此示例文件的副本并命名为 iscsigws.yml。查看以下 Ansible 变量和描述,并相应地进行更新。有关高级变量的完整列表,请参阅 iscsigws.yml.sample。
变量 |
含义/用途 |
|---|---|
|
每个网关都需要访问 ceph 集群以进行 rados 和 rbd 调用。这意味着 iSCSI 网关必须定义适当的 |
|
定义自定义存储集群名称。 |
|
定义自定义密钥环名称。 |
|
如果设置为 |
|
这是一个布尔值,用于检查每个网关上的多路径和 lvm 配置设置。它必须设置为 true 至少第一次运行,以确保正确配置 multipathd 和 lvm。 |
|
API 的用户名。默认值为 admin。 |
|
使用 API 的密码。默认值为 admin。 |
|
使用 API 的 TCP 端口号。默认值为 5000。 |
|
如果必须使用 TLS,则为 True。默认值为 false。如果为 true,则用户必须创建必要的证书和密钥文件。有关详细信息,请参阅 gwcli 手册文件。 |
|
有权访问 API 的 IPv4 或 IPv6 地址列表。默认情况下,只有 iSCSI 网关节点具有访问权限。 |
部署
在 Ansible 安装程序节点上执行以下步骤。
以
root身份执行 Ansible playbookcd /usr/share/ceph-ansible ansible-playbook site.yml --limit iscsigws
注意
Ansible playbook 将处理 RPM 依赖项、设置守护程序并安装 gwcli,以便它可用于创建 iSCSI 目标并将 RBD 映像导出为 LUN。在以前的版本中,
iscsigws.yml可以定义 iSCSI 目标以及客户端、映像和 LUN 等其他对象,但现在不再支持。从 iSCSI 网关节点验证配置
gwcli ls注意
请参阅使用命令行界面配置 iSCSI 目标部分,了解如何使用 gwcli 工具创建网关、LUN 和客户端。
重要
尝试使用
targetcli工具更改配置会导致问题,包括 ALUA 配置错误和路径故障转移问题。有可能损坏数据、iSCSI 网关之间的配置不匹配以及 WWN 信息不匹配,从而导致客户端多路径问题。
服务管理
ceph-iscsi 软件包安装了配置管理逻辑和一个名为 rbd-target-api 的 Systemd 服务。启用 Systemd 服务后,rbd-target-api 将在启动时启动并恢复 Linux IO 状态。Ansible playbook 在部署期间禁用目标服务。以下是与 rbd-target-api Systemd 服务交互时的结果。
systemctl <start|stop|restart|reload> rbd-target-api
reloadreload 请求将强制
rbd-target-api重新读取配置并将其应用于当前运行的环境。通常不需要这样做,因为更改是从 Ansible 并行部署到所有 iSCSI 网关节点的stopstop 请求将关闭网关的门户接口,断开与客户端的连接并从内核中清除当前的 LIO 配置。这将使 iSCSI 网关返回到干净状态。当客户端断开连接时,活动 I/O 将由客户端多路径层重新调度到其他 iSCSI 网关。
删除配置
ceph-ansible 软件包提供了一个 Ansible playbook 来删除 iSCSI 网关配置和相关的 RBD 映像。该 Ansible playbook 是 /usr/share/ceph-ansible/purge_gateways.yml。运行此 Ansible playbook 时,系统会提示要执行的清除类型
lio :
在此模式下,将清除所有已定义的 iSCSI 网关上的 LIO 配置。已创建的磁盘将保留在 Ceph 存储集群中。
all :
选择 all 时,将删除 LIO 配置以及 iSCSI 网关环境中定义的所有 RBD 映像,其他不相关的 RBD 映像不会被删除。确保选择正确的模式,此操作将删除数据。
警告
清除操作是对 iSCSI 网关环境的破坏性操作。
警告
如果 RBD 映像具有快照或克隆并通过 Ceph iSCSI 网关导出,则清除操作将失败。
[root@rh7-iscsi-client ceph-ansible]# ansible-playbook purge_gateways.yml
Which configuration elements should be purged? (all, lio or abort) [abort]: all
PLAY [Confirm removal of the iSCSI gateway configuration] *********************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [Exit playbook if user aborted the purge] *******************************
skipping: [localhost]
TASK: [set_fact ] *************************************************************
ok: [localhost]
PLAY [Removing the gateway configuration] *************************************
GATHERING FACTS ***************************************************************
ok: [ceph-igw-1]
ok: [ceph-igw-2]
TASK: [igw_purge | purging the gateway configuration] *************************
changed: [ceph-igw-1]
changed: [ceph-igw-2]
TASK: [igw_purge | deleting configured rbd devices] ***************************
changed: [ceph-igw-1]
changed: [ceph-igw-2]
PLAY RECAP ********************************************************************
ceph-igw-1 : ok=3 changed=2 unreachable=0 failed=0
ceph-igw-2 : ok=3 changed=2 unreachable=0 failed=0
localhost : ok=2 changed=0 unreachable=0 failed=0