|
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; 确认内核选项启用,如下: 4 E9 |+ C; b$ e4 B
3.2. ceph集群版本:注:官方建议 Ceph Luminous (12.2.x) release or newer 实际采用:Ceph Kraken (11.1.0) 3.3. ceph集群配置:通过快速检测OSDs 故障、快速检测请求超时,尽量减少iSCSI initiator端业务超时的情况。 建议如下配置:
2 _, _4 [/ v$ J7 i3 i确认配置: 确认名称为”rbd”的pool存在,如下:
( x) f! S" G" _7 g3 E2 W7 X! x( J确认支持5个features,如下:
3 l# r1 n) F8 U$ C% @2 }5 j. L7 @# y- x* c# ^
确认支持VAAI性能加速,如下:(如果不支持功能升也能使用)
8 m- f1 a- a7 p* L/ Q4、安 装 参照: 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
3 T; Q9 v+ {2 V6 y4 X* Q6 U6 q即: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/ g) ~, H5 y, T9 I) W- X
注:rtslib-fb依赖pyudev>=0.16.1 6 }. F+ K* X1 q' p' ?, K
4.2. iSCSI gateway节点部署相关服务9 s0 j# [, I0 \. n) O% A1 E! I
4.2.1. 部署tcmu-runner
" D; {- m: p$ Q* h1 A! ]5 z4.2.2. 部署rtslib-fb0 q) S& C, e# M. V
# G, y* O2 Y- s) d4 S' t4.2.3. 部署configshell-fb( @4 Q& t Z. r9 s0 \
$ e- w/ i% @+ F+ Q; y
4.2.4. 部署targetcli-fb
4 _9 b- y0 l% k/ E [2 V
/ l$ v0 l0 a% p% R4.2.5. 创建配置文件
) U8 e4 ]& Y2 S0 y8 h& h 3 C& U+ _; k9 d" S; j8 ]5 ~( ^
4.2.6. 部署ceph-iscsi-config" u, O1 c; L8 ^0 u7 d9 J
$ g, ]1 `7 l4 i1 x4 o
4.2.7. 部署ceph-iscsi-cli
( ^; r: J6 j* x) |9 q4.2.8. 检查各个服务状态正常
, b2 T' b' L3 f3 k& f9 U( [5 \& V 首先,检查相关服务状态正常: 2 R$ Q3 `- d1 z% a
5、创建&配置iSCSI gateway5.1. 创建iSCSI target例如以“iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw”为iqn创建iSCSI target。 $ y( Q/ p$ u9 r8 W, Y: z
5.2. 创建iSCSI gateways0 K/ y- Y& W' f) }8 o7 i$ Z# \
配置地址解析,如下: 其中,”10.10.10.121” 是本节点IP,且该IP用于读/写服务,”wenda-centos7-1801” 是本节点hostname。 例如,要配置2个gateway。
# J5 _6 T' t% @7 C) s0 ?注意:配置/etc/hosts后,需要重启 这3个服务: ; m! n( x6 `, d6 [' Y3 u9 R
注意:在2个gateway节点上,要分别确认这3个服务正常运行。 如下创建2个gateway,提供HA方案: 6 _" |/ I6 X5 b& C8 _' G) S" A
然后,检查3260端口监听正常:
* [0 K+ Z, D/ \! o5 L
5 _1 W! H2 l( L: c8 g5 r# n! Y5.3. 创建iSCSI disk
9 Q$ }3 e7 C( S q 如下创建RBD Image作为iSCSI 后端disk: 2 S& H3 G' ~& p+ {9 Y! u
5.4. 创建iSCSI client创建iSCSI client的目的,就是在iSCSI gateway节点上为iSCSI initiator添加acl授权。首先登陆iSCSI initiator节点(即iSCSI client端),获取InitiatorName。 ; d/ }+ K3 t( y! ^5 U) a
然后在gateway节点以“iqn.1994-05.com.redhat:rh7-client”为iqn创建iSCSI client。# A# R/ b' o+ M. Q) \
0 G/ e; F4 ?3 A4 F8 s% W' |- E2 W8 d0 k; N2 R& y# ]
5.5. 为iSCSI client配置iSCSI CHAP认证信息注:建议略过该步骤。* p; d( ^! t7 R! x9 K' D8 b. b# i
一旦配置CHAP认证信息,则iSCSI连接时必须提供CHAP用户信息。 例如设置client的CHAP用户名为”myiscsiusername”,密码为”myiscsipassword” 6 D& {; ^5 H% K4 P- N
5.6. 为iSCSI client添加disk例如 为iSCSI client添加disk名称为”rbd.disk_1”,该”rbd.disk_1”可在gwcli "ls /disks/"查询。 3 N) Q; N& X/ h+ a, w
6、配置iSCSI initiator访问disk以Linux为例——6.1. 安装iSCSI initiator工具和multipath工具/ Z8 n# m' ?* c2 A
6.2. 配置multipath服务
- L6 E: ^. V1 \5 k, u5 h) L) q 创建默认配置/etc/multipath.conf,并enable multipathd service。 2 J U/ T- K( j4 t' ?' i9 F& F
' H# ?4 d6 N4 N2 H; {0 m5 o$ n修改配置/etc/multipath.conf,内容如下:
8 b& L2 B+ V: E) V# L
8 u' R" E7 S8 [% M9 w. _. A% [注意:高可用策略不适用ALUA。因为CentOS7.4内核版本的target不支持ALUA属性。 重启multipath服务。 [td]命令: systemctl reload multipathd
- u! B7 o8 d, a8 A) I3 ?. { | ) @2 n N. K* I
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 * m) } c, }& o' ^ z8 J! m
|
" j4 z' `* {3 v$ Q% v' J9 Y4 u, s
4 M2 f$ U$ Y% p: E9 b6.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
9 L. k0 v" l: K2 j/ C2 O |
* z/ g7 U: m- z! ?6 L1 H# i6.6. 查看扫描出的iSCSI盘如下在客户服务器上执行命令 ll /dev/disk/by-path/,查看到扫描的iSCSI盘映射为客户服务器块设备为/dev/sda 和/dev/sdb 8 g2 w) T+ S3 p$ N. F/ Q
6.7. 查看multipath的iSCSI disk(由RBD image映射)5 b0 ]" P4 A: _) c" @+ G
7、附录一Linux/CentOS 7.4及更旧版本,系统中struct tcmu_dev没有qfull_time_out成员。 【解决方法一】8 H. l* s+ s' k- R Z q
说明:lun.py中不设置qfull_time_out。 影响:存储异常时,业务可能由于iSCSI设备TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE导致阻塞。 修改:vim ceph-iscsi-config/ceph_iscsi_config/lun.py
9 g( z# ^* Q6 O; p! Z! m+ n% i" z. ~* R& y注意:修改后重启 rbd-target-gw 服务和 rbd-target-api 服务,就可以正常运行了。 【解决方法二】 说明:系统中struct tcmu_dev增加qfull_time_out成员。 影响:存储异常时,业务由于iSCSI设备被设置SAM_STAT_TASK_SET_FULL,及时返回失败,不阻塞。 8、附录二
- v+ R: B- s1 e( l& }设置成不支持ALUA。 修改方法:vim ./ceph-iscsi-config/ceph_iscsi_config/gateway.py
5 \) K& R7 @7 [0 [5 p3 v' t2 Z1 W% l4 y. T/ i; g
注意:修改后重启 rbd-target-gw 服务和 rbd-target-api 服务,就可以正常运行了。
/ s- c% c* k% a: r5 k; o) N/ p
& a* o/ U, _* {2 L |