注意

本文档适用于 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 软件包

安装

  1. 在 Ansible 安装程序节点上执行以下步骤,该节点可以是管理节点或专用部署节点

    1. root 身份安装 ceph-ansible 软件包

      # yum install ceph-ansible
      
    2. /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

变量

含义/用途

seed_monitor

每个网关都需要访问 ceph 集群以进行 rados 和 rbd 调用。这意味着 iSCSI 网关必须定义适当的 /etc/ceph/ 目录。seed_monitor 主机用于填充 iSCSI 网关的 /etc/ceph/ 目录。

cluster_name

定义自定义存储集群名称。

gateway_keyring

定义自定义密钥环名称。

deploy_settings

如果设置为 true,则在运行 playbook 时部署设置。

perform_system_checks

这是一个布尔值,用于检查每个网关上的多路径和 lvm 配置设置。它必须设置为 true 至少第一次运行,以确保正确配置 multipathd 和 lvm。

api_user

API 的用户名。默认值为 admin

api_password

使用 API 的密码。默认值为 admin

api_port

使用 API 的 TCP 端口号。默认值为 5000

api_secure

如果必须使用 TLS,则为 True。默认值为 false。如果为 true,则用户必须创建必要的证书和密钥文件。有关详细信息,请参阅 gwcli 手册文件。

trusted_ip_list

有权访问 API 的 IPv4 或 IPv6 地址列表。默认情况下,只有 iSCSI 网关节点具有访问权限。

部署

在 Ansible 安装程序节点上执行以下步骤。

  1. root 身份执行 Ansible playbook

    cd /usr/share/ceph-ansible
    ansible-playbook site.yml --limit iscsigws
    

    注意

    Ansible playbook 将处理 RPM 依赖项、设置守护程序并安装 gwcli,以便它可用于创建 iSCSI 目标并将 RBD 映像导出为 LUN。在以前的版本中,iscsigws.yml 可以定义 iSCSI 目标以及客户端、映像和 LUN 等其他对象,但现在不再支持。

  2. 从 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
  • reload

    reload 请求将强制 rbd-target-api 重新读取配置并将其应用于当前运行的环境。通常不需要这样做,因为更改是从 Ansible 并行部署到所有 iSCSI 网关节点的

  • stop

    stop 请求将关闭网关的门户接口,断开与客户端的连接并从内核中清除当前的 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

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入