iSCSI gateway节点检查&确认 3.1. 系统需求如下:iSCSI gateways服务可以与OSD节点融合部署,也可以部署在独立的节点上。 注:官方建议 RHEL/CentOS 7.5; Linux kernel v4.17 or newer 实际采用: 操作系统:CentOS Linux release 7.4.1708 (Core); 内核版本:3.10.0-693.el7.x86_64; 确认内核选项启用,如下: : D% t. I/ p. ^/ \% g3 T
3.2. ceph集群版本:注:官方建议 Ceph Luminous (12.2.x) release or newer 实际采用:Ceph Kraken (11.1.0) 3.3. ceph集群配置:通过快速检测OSDs 故障、快速检测请求超时,尽量减少iSCSI initiator端业务超时的情况。 建议如下配置:
" W7 Y6 I- C l( Z5 X5 u" H L确认配置: 确认名称为”rbd”的pool存在,如下:
; r/ y+ W7 v/ M: i7 e确认支持5个features,如下:
+ a4 G$ c& h. r1 I( o) W1 z; i1 b/ M6 t! y0 Z: H
确认支持VAAI性能加速,如下:(如果不支持功能升也能使用)
4 X. {5 J. h' p* i# V3 m3 v% Z, R4、安 装 参照: http://docs.ceph.com/docs/master/rbd/iscsi-target-cli-manual-install/ 4.1. iSCSI gateway节点安装依赖包注:ceph-iscsi-cli 和target tools依赖以下packages: - libnl3
- kmod-libs
- librbd1
- pyparsing
- python-kmod
- python-pyudev
- python-gobject
- python-urwid
- python-rados
- python-rbd
- python-netaddr
- python-netifaces
- python2-crypto
- python-requests
- python-flask
- pyOpenSSL
2 e1 E" G8 T( A0 H6 `即:yum install -y libnl3 kmod-libs librbd1 pyparsing python-kmod python-pyudev python-gobject python-urwid python-rados python-rbd python-netaddr python-netifaces python2-crypto python-requests python-flask pyOpenSSL+ o# d. T$ j: y3 n6 b
注:rtslib-fb依赖pyudev>=0.16.1
# I, ^6 y0 p1 w x4.2. iSCSI gateway节点部署相关服务
, b5 L3 s% F: H 4.2.1. 部署tcmu-runner
, m1 H; c: D0 {9 j' J6 u. c( O4.2.2. 部署rtslib-fb
# |% Y" e O B* b; p/ d 8 @/ G2 B" W4 B
4.2.3. 部署configshell-fb9 }3 Z6 I8 c8 L" j( v5 Z
& F! h: W' B& I5 l5 O9 n4.2.4. 部署targetcli-fb
$ S$ P, l; r0 {
7 n2 `5 _; @0 x' l& M1 Y/ P4.2.5. 创建配置文件# F% R6 m) U: @4 a5 Q0 d
4 V. i2 v4 } g- [; {' G4.2.6. 部署ceph-iscsi-config( W1 E2 T1 }+ L! G- E
: z1 J8 Q" ~+ V' b1 K/ w
4.2.7. 部署ceph-iscsi-cli7 W C* R1 B: K
4.2.8. 检查各个服务状态正常
# P3 ?2 z: M* A b1 f( M S 首先,检查相关服务状态正常:
1 O4 Y- p- j* ^5、创建&配置iSCSI gateway5.1. 创建iSCSI target例如以“iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw”为iqn创建iSCSI target。 ) r2 n- Q: t# _
5.2. 创建iSCSI gateways3 L1 j5 _% p. W3 E
配置地址解析,如下: 其中,”10.10.10.121” 是本节点IP,且该IP用于读/写服务,”wenda-centos7-1801” 是本节点hostname。 例如,要配置2个gateway。 - a/ X! U# {: }5 T6 q1 O- i( q. f6 o
注意:配置/etc/hosts后,需要重启 这3个服务:
; n$ M9 A$ ?. j! `' d1 t注意:在2个gateway节点上,要分别确认这3个服务正常运行。 如下创建2个gateway,提供HA方案:
& `9 i0 r& Z+ e, G然后,检查3260端口监听正常:9 V9 q$ |5 _8 h$ F+ ]2 l. w; F
' B2 O; ?2 h" Z; C2 b( l# P( b V
5.3. 创建iSCSI disk
" U; x# N$ w" n# Q4 x 如下创建RBD Image作为iSCSI 后端disk: 5 q' _9 _' S# S# e2 x0 _" k0 N
5.4. 创建iSCSI client创建iSCSI client的目的,就是在iSCSI gateway节点上为iSCSI initiator添加acl授权。首先登陆iSCSI initiator节点(即iSCSI client端),获取InitiatorName。 $ t3 U1 u% J; q, P2 k2 |# N* k3 i
然后在gateway节点以“iqn.1994-05.com.redhat:rh7-client”为iqn创建iSCSI client。
2 v. I" u/ Q+ n) a" g3 v7 s5 ? 0 ^, S5 ~2 }# o) y+ q+ {, v7 q# O8 Q
, Q7 B ^+ y0 {/ W
5.5. 为iSCSI client配置iSCSI CHAP认证信息注:建议略过该步骤。
: G) F. ` y0 I# N6 \( V 一旦配置CHAP认证信息,则iSCSI连接时必须提供CHAP用户信息。 例如设置client的CHAP用户名为”myiscsiusername”,密码为”myiscsipassword” 3 h2 s, ~) a* @* j$ q2 C' F
5.6. 为iSCSI client添加disk例如 为iSCSI client添加disk名称为”rbd.disk_1”,该”rbd.disk_1”可在gwcli "ls /disks/"查询。
" Q2 ~$ y. G; D8 t6、配置iSCSI initiator访问disk以Linux为例——6.1. 安装iSCSI initiator工具和multipath工具
0 K( @! X& |7 K% Y3 U" K6.2. 配置multipath服务; b: t* D/ R( A' b5 s, b! o1 q! F
创建默认配置/etc/multipath.conf,并enable multipathd service。 % k% f6 D( f& {9 g* k# U0 n1 _
) J; I3 q1 {) t修改配置/etc/multipath.conf,内容如下:
- S p2 V0 s9 F+ u P5 V( [/ g
9 v- M/ w' H! r; y4 b注意:高可用策略不适用ALUA。因为CentOS7.4内核版本的target不支持ALUA属性。 重启multipath服务。 [td]命令: systemctl reload multipathd
5 ^3 ]( i6 d, a5 ~+ e* v | * g6 `2 t, L/ u: l0 U. [
6.3. 为iSCSI initiator配置CHAP信息如果iSCSI client没有配置CHAP认证信息,则iSCSI initiator端也无需配置CHAP信息。 6.4. Discovery iSCSI target例如 iSCSI gateway的IP是10.10.10.121 登陆iSCSI initiator端节点,然后执行命令: [td]命令iscsiadm -m discovery -t st -p 10.10.10.121
$ }, K) z8 ?/ p, |* A) H/ Y+ I |
$ K; s9 p# I% R
) c) x8 I5 V4 N6 q1 Y6.5. Login iSCSI target例如target的iqn为iqn.2003-01.com.redhat.iscsi-gw:iscsi-igwww [td]命令iscsiadm -m node -T iqn.2003-01.com.redhat.iscsi-gw:iscsi-igwww --login ! \2 u% ]) z8 \7 [+ w, s
|
2 D5 i/ V3 x. c$ b0 I6.6. 查看扫描出的iSCSI盘如下在客户服务器上执行命令 ll /dev/disk/by-path/,查看到扫描的iSCSI盘映射为客户服务器块设备为/dev/sda 和/dev/sdb 9 \% v/ o. j- j9 k8 ^6 P. s( u5 A
6.7. 查看multipath的iSCSI disk(由RBD image映射)
" N( K. ^& Z/ @' ]% q& X7 k7、附录一Linux/CentOS 7.4及更旧版本,系统中struct tcmu_dev没有qfull_time_out成员。 【解决方法一】
# e- W2 `, Y1 }( b% g* g* { 说明:lun.py中不设置qfull_time_out。 影响:存储异常时,业务可能由于iSCSI设备TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE导致阻塞。 修改:vim ceph-iscsi-config/ceph_iscsi_config/lun.py 8 X. o: \- e! U5 Y; l$ k
注意:修改后重启 rbd-target-gw 服务和 rbd-target-api 服务,就可以正常运行了。 【解决方法二】 说明:系统中struct tcmu_dev增加qfull_time_out成员。 影响:存储异常时,业务由于iSCSI设备被设置SAM_STAT_TASK_SET_FULL,及时返回失败,不阻塞。 8、附录二" d: Z6 f$ q( M. @6 r: |2 J I
设置成不支持ALUA。 修改方法:vim ./ceph-iscsi-config/ceph_iscsi_config/gateway.py ; {& X( G s/ U) b
# A4 E7 }& \4 _7 z, r8 Q" Y2 E
注意:修改后重启 rbd-target-gw 服务和 rbd-target-api 服务,就可以正常运行了。 : o( n0 x4 m& \+ E& |4 e' M
, P$ C. \& O. s
|