使用ANSI配置ISCSI TARGET
Ceph iSCSI gateway是iSCSI target node,也是Ceph client node。 Ceph iSCSI gateway可以是独立节点,也可以位于Ceph Object Store Disk (OSD) node上。 完成以下步骤,将安装Ceph iSCSI gateway并将其配置为基本操作。
要求:
- 正在运行的Ceph Luminous(12.2.x)集群或更高版本
- Red Hat Enterprise Linux/CentOS 7.5(或更高版本); Linux内核v4.16(或更高版本)
- 在所有iSCSI gateway节点上安装ceph-iscsi package
安装:
在Ansible installer节点(可以是管理节点也可以是专用部署节点)上,执行以下步骤:
1、以root用户身份安装ceph-ansible package:
1 | # yum install ceph-ansible |
2、在/etc/ansible/hosts文件中为gateway group添加一个entry:
1 | [iscsigws] |
注意如果将iSCSI gateway与OSD部署同一节点,则将OSD节点添加到[iscsigws] section。
配置:
ceph-ansible package在/usr/share/ceph-ansible/group_vars/目录中放置了一个名为iscsigws.yml.sample的文件。 创建此示例文件的副本iscsigws.yml。 查看以下Ansible变量和说明,并进行相应更新。 有关高级变量的完整列表,请参见iscsigws.yml.sample。
Variable(变量) | Meaning/Purpose(含义/目的) |
---|---|
seed_monitor |
每个gateway都需要访问ceph集群以进行rados和rbd calls。 这意味着iSCSI gateway必须已定义适当的/etc/ceph/ 目录。 seed_monitor host用于填充iSCSI gateway的/etc/ceph/ 目录。 |
cluster_name |
自定义存储集群名称(默认为ceph) |
gateway_keyring |
Define a custom keyring name. |
deploy_settings |
如果设置为true ,则在运行playbook时deploy the settings。 |
perform_system_checks |
这是一个布尔值,用于检查每个gateway上的multipath和lvm configuration settings。 必须至少在第一次运行时将其设置为true,以确保正确配置了multipathd和lvm。 |
api_user |
API的用户名。 默认值为admin。 |
api_password |
使用API的密码。 默认值为admin。 |
api_port |
使用API的TCP端口号。 默认值为5000。 |
api_secure |
如果必须使用TLS,则为True。 默认为false。 如果为true,则用户必须创建必要的certificate和key files。 有关详细信息,请参见gwcli man文件。 |
trusted_ip_list |
有权访问API的IPv4或IPv6地址的列表。 默认情况下,只有iSCSI gateway节点可以访问。 |
Deploying:
在Ansible installer节点上,执行以下步骤。
1、以root用户身份执行Ansible playbook:
1 | # cd /usr/share/ceph-ansible |
注意Ansible playbook将处理RPM dependencies,设置daemons并安装gwcli,因此可用于创建iSCSI targets并将RBD images导出为LUN。 在以前的版本中,iscsigws.yml可以定义iSCSI target和其他objects,如clients, images和LUNs, 但现在不再支持该功能。
2、从iSCSI gateway节点验证配置:
1 | # gwcli ls |
请参阅Configuring the iSCSI Target using the Command Line Interface,使用gwcli工具创建gateways, LUNs和clients。
1 | 重要提示尝试使用targetcli工具更改配置将导致以下问题,例如ALUA配置错误和路径故障转移问题。 可能会损坏数据,configuration across iSCSI gateways不匹配,WWN information不匹配,这将导致client multipath问题。 |
Service Management:
ceph-iscsi package安装configuration management logic和一个名为rbd-target-api的Systemd service。启用Systemd service后,rbd-target-api将在引导时启动,并将恢复Linux IO状态。Ansible playbook会在部署期间禁用target service。以下是与rbd-target-api Systemd服务交互命令。
1 | # systemctl <start|stop|restart|reload> rbd-target-api |
- reload
reload request将强制rbd-target-api重新读取配置并将其应用于当前正在运行的环境。 通常不需要这样做,因为changes是从Ansible并行部署到所有iSCSI gateway节点的。
- stop
stop request将关闭gateway的portal interfaces,断开与客户端的连接,并从内核中清除当前的LIO配置。这将使iSCSI gateway返回到clean状态。 当客户端断开连接时,客户端multipathing layer会将active I/O(活动的I/O)重新安排到其他iSCSI gateways。
Removing the Configuration:
ceph-ansible package提供了Ansible手册,可删除iSCSI gateway配置和相关的RBD images。 Ansible playbook是/usr/share/ceph-ansible/purge_gateways.yml。 运行此Ansible playbook时,系统会提示您执行清除的类型:
lio :
在此模式下,将在已定义的所有iSCSI gateways上清除LIO配置。 在Ceph storage集群中,创建的Disks保持不变。
all :
选择all后,将删除LIO配置以及在iSCSI gateway环境中定义的所有RBD images,其他不相关的RBD images将不会删除。
1 | 警告清除操作是对iSCSI gateway环境的破坏性操作。 |
1 | [root@rh7-iscsi-client ceph-ansible]# ansible-playbook purge_gateways.yml |
使用COMMAND LINE INTERFACE配置ISCSI TARGET
Ceph iSCSI gateway是iSCSI target节点,也是Ceph client节点。 Ceph iSCSI gateway可以是独立节点,也可以位于Ceph Object Store Disk (OSD)节点上。 完成以下步骤,将安装Ceph iSCSI gateway并将其配置为基本操作。
Requirements:
- 正在运行的Ceph Luminous(12.2.x)集群或更高版本
- Red Hat Enterprise Linux/CentOS 7.5(或更高版本); Linux内核v4.16(或更高版本)
- 必须从Linux发行版的软件repository中安装以下软件包:
- targetcli-2.1.fb47 or newer package
- python-rtslib-2.1.fb68 or newer package
- tcmu-runner-1.4.0 or newer package
- ceph-iscsi-3.2 or newer package
1 | 重要说明:如果存在这些packages的先前版本,则必须在安装较新版本之前首先将其删除。 |
在继续Installing section之前,请在Ceph iSCSI gateway节点上执行以下步骤:
1、如果Ceph iSCSI gateway未在OSD节点上,则将/etc/ceph/中的Ceph配置文件复制到iSCSI gateway 节点。 Ceph配置文件必须存在于/etc/ceph/下的iSCSI gateway节点上。
2、安装和配置Ceph Command-line Interface
3、请在防火墙上打开TCP端口3260和5000。
1 | 注意对端口5000的访问应仅限于受信任的内部网络或仅使用gwcli或正在运行ceph-mgr daemons的单个主机。 |
4、创建一个新的或使用现有的RADOS Block Device (RBD)。
Installing:
如果您使用upstream ceph-iscsi package,请遵循 manual install instructions。
对于基于rpm的指令,请执行以下命令:
1、以root用户身份,在所有iSCSI gateway节点上,安装ceph-iscsi package:
1 | # yum install ceph-iscsi |
2、以root用户身份,在所有iSCSI gateway节点上,安装tcmu-runner package:
1 | # yum install tcmu-runner |
Setup:
1、gwcli需要一个名称为rbd的pool,因此它可以存储iSCSI配置之类的元数据。 要检查是否已创建此pool,请运行:
1 | # ceph osd lspools |
如果不存在,则可以在RADOS pool operations page上找到创建pool的说明。
2、在iSCSI gateway节点上,以root身份在/etc/ceph/目录中创建一个名为iscsi-gateway.cfg的文件:
1 | # touch /etc/ceph/iscsi-gateway.cfg |
2.1、编辑iscsi-gateway.cfg文件并添加以下行:
1 | [config] |
注意trusted_ip_list是每个iscsi gateway上IP地址的列表,将用于管理操作,如创建target,lun导出等。该IP可以与用于iSCSI data的IP相同,例如与RBD image之间的READ/WRITE命令,但建议使用单独的IP。
1 | 重要说明:在所有iSCSI gateway节点上,iscsi-gateway.cfg文件必须相同。 |
2.2、以root用户身份将iscsi-gateway.cfg文件复制到所有iSCSI gateway节点。
2.3、以root用户身份,在所有iSCSI gateway节点上,启用并启动API服务:
1 | # systemctl daemon-reload |
Configuring:
gwcli将创建和配置iSCSI target和RBD images,并在上一部分中的gateways设置之间复制配置。 较低级别的工具(例如targetcli和rbd)可用于查询本地配置,但不应用于对其进行修改。 下一节将演示如何创建iSCSI target并将RBD image导出为LUN 0。
1、以root用户身份,在iSCSI gateway节点上,启动iSCSI gateway command-line interface:
1 | # gwcli |
2、转到iscsi-targets并创建名为iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw的目标:
1 | > /> cd /iscsi-target |
3、创建iSCSI gateways。 下面使用的IP是用于iSCSI data(如READ和WRITE命令)的IP。 它们可以是trusted_ip_list中列出的用于管理操作相同的IP,但是建议使用不同的IP。
1 | > /iscsi-target> cd iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw/gateways |
如果不使用RHEL/CentOS或使用upstream或ceph-iscsi-test kernel,则必须使用skipchecks=true参数。 这将避免Red Hat kernel和rpm checks:
1 | > /iscsi-target> cd iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw/gateways |
4、在rbd pool中添加名称为disk_1的RBD image:
1 | > /iscsi-target...-igw/gateways> cd /disks |
5、创建一个客户端,使用initiator名称iqn.1994-05.com.redhat:rh7-client:
1 | > /disks> cd /iscsi-target/iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw/hosts |
6、将客户端的CHAP用户名设置为myiscsiusername,将密码设置为myiscsipassword:
1 | > /iscsi-target...at:rh7-client> auth username=myiscsiusername password=myiscsipassword |
警告必须始终配置CHAP。 如果没有CHAP,target将拒绝任何登录请求。
7、将disk添加到客户端:
1 | > /iscsi-target...at:rh7-client> disk add rbd/disk_1 |
下一步是配置iSCSI initiators。
手动安装CEPH-ISCSI
Requirements
要完成ceph-iscsi的安装,有4个步骤:
1、从Linux发行版的软件repository安装common packages
2、安装Git以直接从其Git repositories中获取其余packages
3、确保使用兼容的kernel
4、安装ceph-iscsi的所有组件并启动相关的daemons:
- tcmu-runner
- rtslib-fb
- configshell-fb
- targetcli-fb
- ceph-iscsi
1、安装COMMON PACKAGES
ceph-iscsi和target工具将使用以下packages。 必须从Linux发行版的软件repository中将它们安装在将成为iSCSI gateway的每台计算机上:
- libnl3
- libkmod
- librbd1
- pyparsing
- python kmod
- python pyudev
- python gobject
- python urwid
- python pyparsing
- python rados
- python rbd
- python netifaces
- python crypto
- python requests
- python flask
- pyOpenSSL
2、安装GIT
为了安装使用Ceph运行iSCSI所需的所有packages,您需要使用Git直接从其repository中下载它们。 在CentOS/RHEL上执行:
1 | > sudo yum install git |
在Debian/Ubuntu上执行:
1 | > sudo apt install git |
要了解有关Git及其工作方式的更多信息,请访问https://git-scm.com
3、确保使用了兼容的KERNEL
确保使用支持Ceph iSCSI patches的kernel:
- 具有内核v4.16或更高版本的所有Linux发行版
- Red Hat Enterprise Linux或CentOS 7.5更高版本
如果您已经在使用兼容的kernel,则可以转到下一步。 但是,如果您不使用兼容的kernel,请查看发行版的文档以获取有关如何构建此kernel的特定说明。 唯一的Ceph iSCSI特定要求是必须启用以下构建选项:
1 | CONFIG_TARGET_CORE=m |
4、安装CEPH-ISCSI
最后,可以直接从其Git repositories中获取其余工具,并启动其相关服务
TCMU-RUNNER
Installation:
1 | > git clone https://github.com/open-iscsi/tcmu-runner |
运行以下命令以安装所有必需的依赖项:
1 | > ./extra/install_dep.sh |
现在,您可以构建tcmu-runner。 为此,请使用以下构建命令:
1 | > cmake -Dwith-glfs=false -Dwith-qcow=false -DSUPPORT_SYSTEMD=ON -DCMAKE_INSTALL_PREFIX=/usr |
启用并启动守护程序:
1 | > systemctl daemon-reload |
RTSLIB-FB
Installation:
1 | > git clone https://github.com/open-iscsi/rtslib-fb.git |
CONFIGSHELL-FB
Installation:
1 | > git clone https://github.com/open-iscsi/configshell-fb.git |
TARGETCLI-FB
Installation:
1 | > git clone https://github.com/open-iscsi/targetcli-fb.git |
警告ceph-iscsi工具假定它们正在管理系统上的所有targets。 如果已设置targets并由targetcli管理,则必须禁用targets服务。
CEPH-ISCSI
Installation:
1 | > git clone https://github.com/ceph/ceph-iscsi.git |
启用并启动daemon:
1 | > systemctl daemon-reload |
安装完成。 进入main ceph-iscsi CLI page上的setup部分。