1.7. 在容器中安装 Ceph iSCSI 网关
Ansible 部署应用安装所需的守护进程和工具,以在容器中配置 Ceph iSCSI 网关。
先决条件
- 正常运行的红帽 Ceph 存储集群。
步骤
以 root 用户身份,打开 并编辑
/etc/ansible/hosts
文件。在 iSCSI 网关组中添加节点名称条目:示例
[iscsigws] ceph-igw-1 ceph-igw-2
进入
/usr/share/ceph-ansible
目录:[root@admin ~]# cd /usr/share/ceph-ansible/
创建
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 网关。
-
-
打开
iscsigws.yml
文件进行编辑。 使用 IPv4 或 IPv6 地址添加 iSCSI 网关 IP 地址来配置
gateway_ip_list
选项:示例
gateway_ip_list: 192.168.1.1,192.168.1.2
重要您不能混合使用 IPv4 和 IPv6 地址。
(可选)取消注释
trusted_ip_list
选项,如果您想要使用 SSL,则需要相应地添加 IPv4 或 IPv6 地址。您需要root
访问 iSCSI 网关容器以配置 SSL。要配置 SSL,请执行以下步骤:-
如果需要,在所有 iSCSI 网关容器中安装
openssl
软件包。 在主 iSCSI 网关容器中,创建一个存放 SSL 密钥的目录:
# mkdir ~/ssl-keys # cd ~/ssl-keys
在主 iSCSI 网关容器中,创建证书和密钥文件:
# openssl req -newkey rsa:2048 -nodes -keyout iscsi-gateway.key -x509 -days 365 -out iscsi-gateway.crt
注意系统将提示您输入环境信息。
在主 iSCSI 网关容器中,创建一个 PEM 文件:
# cat iscsi-gateway.crt iscsi-gateway.key > iscsi-gateway.pem
在主 iSCSI 网关容器中,创建一个公钥:
# 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/
目录。
-
如果需要,在所有 iSCSI 网关容器中安装
另外,还可相应地查看并取消注释以下 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
另外,还可查看并取消注释以下任何资源选项,根据工作负载需求更新它们:
# 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
以 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
Ansible playbook 完成后,打开
iscsigws.yml
文件中指定的 TCP 端口3260
和api
。_
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 网关软件。
步骤
作为
root
用户,启动 iSCSI 网关命令行界面:# docker exec -it rbd-target-api gwcli
使用 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 地址。
添加 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
创建客户端:
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)]
向客户端添加磁盘:
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
运行以下命令来验证 iSCSI 网关配置:
> ls
(可选)确认 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/
- 下一步是配置 iSCSI 启动器。
其它资源
- 有关在容器中安装 Red Hat Ceph Storage 的更多信息,请参阅容器中安装 Red Hat Ceph Storage 集群 部分。
- 有关在容器中安装 iSCSI 网关软件的更多信息,请参阅 容器中安装 Ceph iSCSI 网关 部分。
- 有关连接 iSCSI 启动器的更多信息,请参阅 Red Hat Ceph Storage Block Device Guide 中的配置 iSCSI Initiator 部分。