1.7. 在容器中安装 Ceph iSCSI 网关


Ansible 部署应用安装所需的守护进程和工具,以在容器中配置 Ceph iSCSI 网关。

先决条件

  • 正常运行的红帽 Ceph 存储集群。

步骤

  1. 以 root 用户身份,打开 并编辑 /etc/ansible/hosts 文件。在 iSCSI 网关组中添加节点名称条目:

    示例

    [iscsigws]
    ceph-igw-1
    ceph-igw-2

  2. 进入 /usr/share/ceph-ansible 目录:

    [root@admin ~]# cd /usr/share/ceph-ansible/
  3. 创建 iscsigws.yml.sample 文件的副本,并将其命名为 iscsigws.yml

    [root@admin ceph-ansible]# cp group_vars/iscsigws.yml.sample group_vars/iscsigws.yml
    重要

    新文件名(iscsigws.yml)和新部分标题([iscsigws]仅适用于 Red Hat Ceph Storage 3.1 或更高版本。从以前的 Red Hat Ceph Storage 版本升级到 3.1,仍将使用旧文件名(iscsi-gws.yml)和旧部分标题([iscsi-gws])。

    重要

    目前,红帽不支持对基于容器的部署使用 ceph-ansible 安装以下选项:

    • gateway_iqn
    • rbd_devices
    • client_connections

    有关手动配置这些选项的说明,请参阅 在容器中配置 Ceph iSCSI 网关

  4. 打开 iscsigws.yml 文件进行编辑。
  5. 使用 IPv4 或 IPv6 地址添加 iSCSI 网关 IP 地址来配置 gateway_ip_list 选项:

    示例

    gateway_ip_list: 192.168.1.1,192.168.1.2

    重要

    您不能混合使用 IPv4 和 IPv6 地址。

  6. (可选)取消注释 trusted_ip_list 选项,如果您想要使用 SSL,则需要相应地添加 IPv4 或 IPv6 地址。您需要 root 访问 iSCSI 网关容器以配置 SSL。要配置 SSL,请执行以下步骤:

    1. 如果需要,在所有 iSCSI 网关容器中安装 openssl 软件包。
    2. 在主 iSCSI 网关容器中,创建一个存放 SSL 密钥的目录:

      # mkdir ~/ssl-keys
      # cd ~/ssl-keys
    3. 在主 iSCSI 网关容器中,创建证书和密钥文件:

      # openssl req -newkey rsa:2048 -nodes -keyout iscsi-gateway.key -x509 -days 365 -out iscsi-gateway.crt
      注意

      系统将提示您输入环境信息。

    4. 在主 iSCSI 网关容器中,创建一个 PEM 文件:

      # cat iscsi-gateway.crt iscsi-gateway.key > iscsi-gateway.pem
    5. 在主 iSCSI 网关容器中,创建一个公钥:

      # openssl x509 -inform pem -in iscsi-gateway.pem -pubkey -noout > iscsi-gateway-pub.key
    6. 在主 iSCSI 网关容器中,将 iscsi-gateway.crtiscsi-gateway.pemiscsi-gateway-pub.keyiscsi-gateway.key 文件复制到其他 iSCSI 网关容器上的 /etc/ceph/ 目录。
  7. 另外,还可相应地查看并取消注释以下 iSCSI 目标 API 服务选项:

    #api_user: admin
    #api_password: admin
    #api_port: 5000
    #api_secure: false
    #loop_delay: 1
    #trusted_ip_list: 192.168.122.1,192.168.122.2
  8. 另外,还可查看并取消注释以下任何资源选项,根据工作负载需求更新它们:

    # TCMU_RUNNER resource limitation
    #ceph_tcmu_runner_docker_memory_limit: 1g
    #ceph_tcmu_runner_docker_cpu_limit: 1
    
    # RBD_TARGET_GW resource limitation
    #ceph_rbd_target_gw_docker_memory_limit: 1g
    #ceph_rbd_target_gw_docker_cpu_limit: 1
    
    # RBD_TARGET_API resource limitation
    #ceph_rbd_target_api_docker_memory_limit: 1g
    #ceph_rbd_target_api_docker_cpu_limit: 1
  9. 以 Ansible 用户身份,运行 Ansible playbook:

    [user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit iscsigws

    对于 Red Hat Enterprise Linux Atomic,添加 --skip-tags=with_pkg 选项:

    [user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit iscsigws --skip-tags=with_pkg
  10. Ansible playbook 完成后,打开 iscsigws.yml 文件中指定的 TCP 端口 3260api _ port

    注意

    如果没有指定 api_port 选项,则默认端口为 5000

其它资源

  • 有关在容器中安装 Red Hat Ceph Storage 的更多信息,请参阅容器中安装 Red Hat Ceph Storage 集群 部分。
  • 有关 Ceph iSCSI 网关选项的更多信息,请参阅 Red Hat Ceph Storage Block Device Guide 中的 表 8.1
  • 有关 iSCSI 目标 API 选项的更多信息,请参阅 Red Hat Ceph Storage Block Device Guide 中的 表 8.2
  • 有关 iscsigws.yml 文件示例,请参阅附录 A Red Hat Ceph Storage Block Device Guide。

1.7.1. 在容器中配置 Ceph iSCSI 网关

Ceph iSCSI 网关配置通过 gwcli 命令行实用程序来完成,用于创建和管理 iSCSI 目标、逻辑单元号(LUN)和访问控制列表(ACL)。

先决条件

  • 正常运行的红帽 Ceph 存储集群。
  • 安装 iSCSI 网关软件。

步骤

  1. 作为 root 用户,启动 iSCSI 网关命令行界面:

    # docker exec -it rbd-target-api gwcli
  2. 使用 IPv4 或 IPv6 地址创建 iSCSI 网关:

    Syntax

    >/iscsi-target create iqn.2003-01.com.redhat.iscsi-gw:$TARGET_NAME
    > goto gateways
    > create $ISCSI_GW_NAME $ISCSI_GW_IP_ADDR
    > create $ISCSI_GW_NAME $ISCSI_GW_IP_ADDR

    示例

    >/iscsi-target 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 地址。

  3. 添加 RADOS 块设备(RBD):

    Syntax

    > cd /disks
    >/disks/ create $POOL_NAME image=$IMAGE_NAME size=$IMAGE_SIZE[m|g|t] max_data_area_mb=$BUFFER_SIZE

    示例

    > cd /disks
    >/disks/ create rbd image=disk_1 size=50g max_data_area_mb=32

    重要

    池名称或镜像名称中没有任何句点(.)。

    警告

    不要调整 max_data_area_mb 选项,除非红帽支持已指示您这样做。

    max_data_area_mb 选项控制每个镜像可用于在 iSCSI 目标和 Ceph 集群之间传递 SCSI 命令数据的内存量(以兆字节为单位)。如果这个值太小,可能会导致过量队列完全重试,这会影响性能。如果值太大,则可能会导致一个磁盘使用系统内存过多,这可能导致其他子系统的分配失败。默认值为 8。

    可以使用 reconfigure 命令来更改此值。镜像不得由 iSCSI 启动器使用,以便此命令生效。

    Syntax

    >/disks/ reconfigure max_data_area_mb $NEW_BUFFER_SIZE

    示例

    >/disks/ reconfigure max_data_area_mb 64

  4. 创建客户端:

    Syntax

    > goto hosts
    > create iqn.1994-05.com.redhat:$CLIENT_NAME
    > auth chap=$USER_NAME/$PASSWORD

    示例

    > goto hosts
    > create iqn.1994-05.com.redhat:rh7-client
    > auth chap=iscsiuser1/temp12345678

    重要

    禁用 CHAP 仅在 Red Hat Ceph Storage 3.1 或更高版本上被支持。红帽不支持混合客户端,有些情况下启用了 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)]
  5. 向客户端添加磁盘:

    Syntax

    >/iscsi-target..eph-igw/hosts> cd iqn.1994-05.com.redhat:$CLIENT_NAME
    > disk add $POOL_NAME.$IMAGE_NAME

    示例

    >/iscsi-target..eph-igw/hosts> cd iqn.1994-05.com.redhat:rh7-client
    > disk add rbd.disk_1

  6. 运行以下命令来验证 iSCSI 网关配置:

    > ls
  7. (可选)确认 API 正确使用 SSL,在 https/var/log/rbd-target-api.log 文件中查找,例如:

    Aug 01 17:27:42 test-node.example.com python[1879]:  * Running on https://0.0.0.0:5000/
  8. 下一步是配置 iSCSI 启动器。

其它资源

  • 有关在容器中安装 Red Hat Ceph Storage 的更多信息,请参阅容器中安装 Red Hat Ceph Storage 集群 部分。
  • 有关在容器中安装 iSCSI 网关软件的更多信息,请参阅 容器中安装 Ceph iSCSI 网关 部分。
  • 有关连接 iSCSI 启动器的更多信息,请参阅 Red Hat Ceph Storage Block Device Guide 中的配置 iSCSI Initiator 部分。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.