将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

 找回密码
 开始注册
查看: 2298|回复: 1
收起左侧

cinder 对接多个 ceph 存储

[复制链接]
发表于 2020-12-26 15:00:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?开始注册

x
环境说明当前 openstack环境正常使用由于后端 ceph 存储容量已经超过 85%不想直接进行扩容, 因为会有大量的数据迁移新创建一个独立的ceph 集群, 并计划用于 openstack 现有环境成为一个新的 ceph后端旧的 ceph 集群称为 ceph-A,  使用中的 pool 为 volumes新的 ceph 集群称为 ceph-B,  使用中的 pool 为 new_volumes目标在 openstack 中,  同时连接到两个不同的 ceph backendcinder server 配置1. ceph 连接配置2. cinder 配置ceph 连接配置

1.同时把两个 ceph 集群中的配置复制到 cinder 服务器 /etc/ceph 目录下, 定义成不同命名

[root@hh-yun-db-129041 ceph]# tree `pwd`/etc/ceph├── ceph.client.admin-develop.keyring      <- ceph-B 集群中的 admin key├── ceph.client.admin-volumes.keyring      <- ceph-A 集群中的 admin key├── ceph.client.developcinder.keyring      <- ceph-B 集群中的用户 developcinder key├── ceph.client.cinder.keyring             <- ceph-A 集群中的 cinder key├── ceph.client.mon-develop.keyring        <- ceph-B 集群中的 mon key├── ceph.client.mon-volumes.keyring        <- ceph-A 集群中的 mon key├── ceph-develop.conf                      <- ceph-B 集群配置文件(包含了 mon 地址等集群信息)└── ceph-volumes.conf                      <- ceph-B 集群配置文件(包含了 mon 地址等集群信息)

这里需要注意, clinet.client.(username).keyring 必须要与连接 ceph 的合法用户命名一致, 否则 cinder server 端, 无法正确获得权限

2.命令行下, 测试连接不同的 ceph 后端测试

ceph-A 连接测试

[root@hh-yun-db-129041 ceph]# ceph -c ceph-volumes.conf -k ceph.client.admin-volumes.keyring -s cluster xxx-xxx-xxxx-xxxx-xxxx # U( Z5 r0 [! U, `

) `  H% g- O2 T& R" O+ D0 E" s  N* R' Z/ m- V0 o: `
       health HEALTH_OK
/ Q+ o$ J9 E0 Z$ A$ z5 S& {" E+ q9 N

' T* i- k1 V; q. N( p: @       monmap e3: 5 mons at {hh-yun-ceph-cinder015-128055=240.30.128.55:6789/0,hh-yun-ceph-cinder017-128057=240.30.128.57:6789/0,hh-yun-ceph-cinder024-128074=240.30.128.74:6789/0,hh-yun-ceph-cinder025-128075=240.30.128.75:6789/0,hh-yun-ceph-cinder026-128076=240.30.128.76:6789/0}, election epoch 452, quorum 0,1,2,3,4 hh-yun-ceph-cinder015-128055,hh-yun-ceph-cinder017-128057,hh-yun-ceph-cinder024-128074,hh-yun-ceph-cinder025-128075,hh-yun-ceph-cinder026-128076
; W; z4 w: ?7 Z' u3 E
9 A" `/ |% E: m& j1 \$ |
* w# K$ G2 n! e4 ]( s      osdmap e170088: 226 osds: 226 up, 226 in 1 h; T0 h, s* m2 k  T+ E- Z

& c( [+ E9 N7 ?/ N3 G* e
5 j- P8 J3 |6 i. c     pgmap v50751302: 20544 pgs, 2 pools, 157 TB data, 40687 kobjects 474 TB used, 376 TB / 850 TB avail 20537 active+clean 7 active+clean+scrubbing+deep client io 19972 kB/s rd, 73591 kB/s wr, 3250 op/s( {( r) D! ?+ U: r! T

ceph-B 连接测试

[root@hh-yun-db-129041 ceph]# ceph -c ceph-develop.conf -k ceph.client.admin-develop.keyring -s cluster 4bf07d3e-a289-456d-9bd9-5a89832b413b 6 J* {( G0 }5 T3 x; {) l
  
. {1 z# T+ Q9 W: x* d4 q2 v- s    health HEALTH_OK monmap e1: 5 mons at {240.30.128.214=240.30.128.214:6789/0,240.30.128.215=240.30.128.215:6789/0,240.30.128.39=240.30.128.39:6789/0,240.30.128.40=240.30.128.40:6789/0,240.30.128.58=240.30.128.58:6789/0} election epoch 6, quorum 0,1,2,3,4 240.30.128.39,240.30.128.40,240.30.128.58,240.30.128.214,240.30.128.215
1 F3 Z) C+ _1 e% m: F4 @* s
* M$ z2 E7 Z0 d! C) {) g# h4 y& z8 }# g$ ?
   osdmap e559: 264 osds: 264 up, 264 in flags sortbitwise
% L( B( A3 v. F( W* T4 L, U. u) ~, d; X
: I; V  t1 b  s
9 v; [* {/ ^( @0 B# H+ W5 P   pgmap v116751: 12400 pgs, 9 pools, 1636 bytes data, 171 objects 25091 MB used, 1440 TB / 1440 TB avail 12400 active+clean
. O" @! s  u( B: E0 M: z, c# Kcinder 配置

对 cinder 服务端进行配置

/etc/cinder/cinder.conf

- u0 w0 z+ s. H2 G5 M2 \# H& L

enabled_backends=CEPH_SATA,CEPH_DEVELOP...
1 j6 V# T) G2 m& |- X[CEPH_SATA]
/ @5 A" I8 L! L4 i- }+ tglance_api_version=28 M6 k* ~$ X+ q- ]9 W

' r2 f. m; e/ ^) Ivolume_backend_name=ceph_sata3 F0 h3 x- N% S" q4 n
/ Y  s4 O/ G5 s* g
rbd_ceph_conf=/etc/ceph/ceph-volumes.conf! q' }: f* G& k$ @! w

/ ~6 `) s% T3 `4 Qrbd_user=cinder0 S/ W% {* U, b* Y; ^/ y

# e' q5 a; r- l! f2 G/ a) j8 Trbd_flatten_volume_from_snapshot=False
" l  C7 m( Z  ^% x- c
) u0 v2 }5 F7 x; @$ L1 h1 ]rados_connect_timeout=-13 ?" u7 t; E( V
: s0 N2 \% d4 b' Q* ~# p& _# H
rbd_max_clone_depth=58 ~; U$ Q  H2 ^3 M, Z1 l; S

8 n6 P* |! _, T4 q3 x7 Tvolume_driver=cinder.volume.drivers.rbd.RBDDriver  F1 u/ T  e5 G0 \
% U) c2 k; B7 |5 V9 b( W4 v
rbd_store_chunk_size=4: n% a* d: M4 Q/ o$ x3 g8 i9 K. z
& O" F% L, j+ a6 Y( `! W/ t& S
rbd_secret_uuid=dc4f91c1-8792-4948-b68f-2fcea75f53b
7 H! G2 J. X6 X: p5 J* \4 ]
; }) w& y& l3 c- o4 l" prbd_pool=volumeshost=cinder.vclound.com$ c$ ^5 x, r; f$ Z, ?  G

0 U1 j. A: e. S$ n  b[CEPH-new_volumes]
+ U4 ~% v8 @& x0 [, v
& T1 h" C5 X6 @glance_api_version=2# t, V; Y+ t6 Z" ], y

7 {6 x# K+ a% Z+ s" x4 ovolume_backend_name=ceph-new_volumes+ V8 F+ f/ J5 g
/ O) m- @5 s0 J) e4 d, g
rbd_ceph_conf=/etc/ceph/ceph-new_volumes.conf; m  J( h  X; v% h- z

: N+ t/ ?* G8 Z# F+ c6 r  `# Drbd_user=cinder
4 y# O, r1 g2 I: t
$ N4 Y/ d: C  o: w$ Y1 `1 Irbd_flatten_volume_from_snapshot=False& C, d/ s6 ~- Y: c- U8 g
4 w! D+ ?6 Y3 Q; ]
rados_connect_timeout=-1
. J# `4 v2 `3 w. G0 F7 G, ~) \& G9 n) N% ]4 K/ O; W
rbd_max_clone_depth=5
: T' c5 |. `- ]6 v2 ?7 L: y
1 ^- M& R: G6 y. i* S* t8 d9 cvolume_driver=cinder.volume.drivers.rbd.RBDDriver. j. c4 }  D; s8 J+ o' P3 Q# Z. G
5 d2 |: K# {' i! I4 s  b! D
rbd_store_chunk_size=4
9 m+ D' b6 J" k; {- d' C
( f& z( G% J  [8 Mrbd_secret_uuid=4bf07d3e-a289-456d-9bd9-5a89832b413
7 D0 u; i3 d: x/ I% g7 @, e! L
- P7 ?0 I, x% h# G. s, Frbd_pool=new_volumes* ]( @. O* W) G' Y+ _% C
- M9 u2 {& M! H( A
host=cinder.vclound.com
  N9 m4 C/ r, G( v5 l9 f5 A( a
. J; C: C# D+ e
 楼主| 发表于 2021-1-14 23:28:30 | 显示全部楼层
在ceph监视器上执行
: }5 g, a4 a* o2 ECINDER_PASSWD='cinder1234!'3 B+ R0 a, F8 j# B1 s' M
controllerHost='controller'
7 U# G+ N. y" T( P9 Z4 ~) NRABBIT_PASSWD='0penstackRMQ'  V+ i% \+ a9 w
8 b  O* G3 u* P  v4 }
1.创建pool池
9 w; \2 A1 T) }1 B为cinder-volume服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1)
  i3 u5 T/ Q+ iceph osd pool create cinder-volumes 32
) ]! G2 ^4 e1 I" |$ mceph osd pool set cinder-volumes size 1 * Q, }$ V  c0 f8 A
ceph osd pool application enable  cinder-volumes rbd
; A1 O1 S4 V" X' Vceph osd lspools/ V: [3 b- L, D/ ]. [8 S
$ i' J4 f* w) n8 u
2.查看pool池的使用情况, ~! B3 T, b7 E  q0 V* n' a
ceph df+ z1 l4 ?$ h) ]: P2 B; Y3 e) a5 f
$ z* j! ]( A% q, P6 R& k
3.创建账号9 J; L" W9 i0 r/ M) s( ^. `! C
ceph auth get-or-create client.cinder-volumes mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-volumes, allow rwx pool=glance-images' -o /etc/ceph/ceph.client.cinder-volumes.keyring- n8 J  l0 n) Q8 M% L
#查看4 i. k* i# Q% H
ceph auth ls | grep -EA3 'client.(cinder-volumes)'! M  x( Z1 k( F/ B: z* P% v
! f, V* I/ L8 [$ Y$ w3 p. {& ~
4.修改ceph.conf配置文件并同步到所有的监视器节点(这步一定要操作)
7 q* N6 U1 a; k2 dsu - cephd
; d" Z% W& w- k" b% a  b8 g* xcd ~/ceph-cluster/
, P' Q9 y. z4 K; [cat <<EOF>> ceph.conf9 v8 U# e! |+ G9 r' q, J
[client.cinder-volumes]2 g. z8 S% @- R* h7 ]
keyring = /etc/ceph/ceph.client.cinder-volumes.keyring
( f- K4 x% u  ?& K- tEOF# Z4 n$ p& }3 f* Y' \
ceph-deploy --overwrite-conf admin ceph-mon01) J: S3 }1 D: ]
exit7 \- {) a" a, `2 J
7 n( Y: z! S. v! }- e* S" v+ D
5.安装cinder-volume组件和ceph客户端(如果ceph监视器是在控制节点上不需要执行这一步)3 k. G' O6 n/ Q* m; V
yum -y install openstack-cinder python-keystone ceph-common
1 k  w$ f3 L9 K( ~) d
. W- K  v4 V2 a- e- ]4 d% n6.使用uuidgen生成一个uuid(确保cinder和libvirt中的UUID一致)% g: S9 o0 x1 o" ^' c* g4 s
uuidgen
+ q5 E* c& f) c( L$ g运行uuidgen命令可以得到下面的UUID值:
+ I1 d' g/ I6 `* Q) [7 k( s" M
9 x* g6 N0 b1 Y% `086037e4-ad59-4c61-82c9-86edc31b0bc0* f  x: p4 X6 x5 c- o3 O( p
7.配置cinder-volume服务与cinder-api服务进行交互4 a' h' _9 e9 R( T) q
openstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url rabbit://openstack:${RABBIT_PASSWD}@${controllerHost}:5672
0 _: K5 g0 A% m7 C3 |% R4 F& copenstack-config --set /etc/cinder/cinder.conf cache backend  oslo_cache.memcache_pool3 r5 K' w. N* k+ b( O
openstack-config --set /etc/cinder/cinder.conf cache enabled  true6 C3 s6 X) U0 t1 S5 N# u9 {8 X
openstack-config --set /etc/cinder/cinder.conf cache memcache_servers  ${controllerHost}:11211
; x$ m& z8 |: }/ w; Vopenstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone
9 c8 ^/ J' M8 U- x( Ropenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_uri  http://${controllerHost}:5000
# U' _& \$ I* f5 U' x, Popenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_url  http://${controllerHost}:5000. k7 G, S8 [; X, s' H& u& ^
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_type password & ~. ^1 o* a# a5 M9 S) s0 I
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_domain_id  default
  `/ Y- ]8 J. Vopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  user_domain_id  default& i/ ]$ o( y: |6 S* c- t. Z
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_name  service 3 R' X) u; ^% G) E! \
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  username  cinder
4 [+ h2 j( p. L$ W: D: lopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  password  ${CINDER_PASSWD}
" O3 [* [% i6 Kopenstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/cinder/tmp5 b' ~2 }$ u6 |) Y
0 {( q0 i8 {8 {5 d. M- C
8.配置cinder-volume服务使用的后端存储为ceph
, B3 a0 ?8 A; A2 u" d2 N/ d: a. Dopenstack-config --set /etc/cinder/cinder.conf  DEFAULT  enabled_backends  ceph3 M5 p8 c6 E+ i4 d

5 q+ H1 q$ T( V  i. \9.配置cinder-volume服务驱动ceph7 s& u" P( N/ b: Z7 s
openstack-config --set /etc/cinder/cinder.conf  ceph volume_driver  cinder.volume.drivers.rbd.RBDDriver
- o, W& Y& w6 e  `openstack-config --set /etc/cinder/cinder.conf  ceph rbd_pool  cinder-volumes
+ Y) x/ q' O+ C! o, E2 Hopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_user cinder-volumes
$ Z' X+ Z- j5 X# Y( C4 Xopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_ceph_conf  /etc/ceph/ceph.conf
, d6 ], j- P7 C/ |% Jopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_flatten_volume_from_snapshot  false
% G& I( S( K! Xopenstack-config --set /etc/cinder/cinder.conf  ceph bd_max_clone_depth  5 ' m' e( K0 K: Q1 i& v/ {
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_store_chunk_size  4 8 g. K0 |% x6 M  Q% H. Y
openstack-config --set /etc/cinder/cinder.conf  ceph rados_connect_timeout  -1
0 p* }# a) B0 Q8 e) s$ Y2 aopenstack-config --set /etc/cinder/cinder.conf  ceph glance_api_version 2
: n" l: D- \4 P* S' y7 iopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_secret_uuid  086037e4-ad59-4c61-82c9-86edc31b0bc02 x6 Y3 R1 H0 A7 o2 f

; Y1 u- Z' x3 s3 [3 ~10.启动cinder-volume服务) ^! c  ]( q. ^4 A) B+ j. f- X$ N
systemctl enable openstack-cinder-volume.service
, b9 a( [1 k' ssystemctl start openstack-cinder-volume.service) r& X, i4 r6 o- s
systemctl status openstack-cinder-volume.service
) ~+ Y! k- ]: W3 v4 Z7 X  ]) d7 d; d/ f- `8 ?
在需要挂载ceph卷的所有计算节点上执行* _1 c: @8 Z9 R5 R& o
1.创建secret文件(UUID需要与cinder服务中一致)
( j, ]$ C$ X4 Jcat << EOF > ~/secret.xml% z2 D( K4 b$ |  X8 c. |$ ?! d
<secret ephemeral='no' private='no'>
+ J" M+ c) n7 h. u     <uuid>086037e4-ad59-4c61-82c9-86edc31b0bc0</uuid>- e" o! l- M; k4 r- c
     <usage type='ceph'>
8 F6 H: g; H9 R. V* H" u6 `         <name>client.cinder-volumes secret</name>
; ^5 c0 g1 U- u6 m. j     </usage>4 C# \* b4 ?! B$ ~0 X
</secret>
# s# }. Q2 d: W. ^; G& n) xEOF: T- d: ~' O% ~! \1 T+ |* n
. D" S0 i/ j' Y1 `  @
2.从ceph监视器上获取cinder-volumes账户的密钥环7 b4 p( y8 e* T' a( @
ceph auth get-key client.cinder-volumes1 d* E. k5 K5 P; y9 u: J/ p6 S
得到如下的结果:- K* G" N  @3 G* s) R( \! q& t
AQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==
# H7 c3 H: [# f) l4 F7 G8 U+ c4 K( B* [) V# L+ {) E5 H: `+ f' f
3.在libvirt中注册UUID3 ~% U% \; a  {0 k5 t: |
virsh secret-define --file ~/secret.xml
5 m0 o$ E& N7 M: z- P- L  N6 V  w4 Z# t
4.在libvirt中添加UUID和cinder-volumes密钥环
; f/ k& E0 F, x/ y2 T% a2 u4 Y1 ~virsh secret-set-value --secret 086037e4-ad59-4c61-82c9-86edc31b0bc0 --base64 AQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==
5 J: i' O) ^% B& i; X* {/ |8 g& Y) w
5.查看libvirt中添加的UUID, @5 l0 F4 M! d, ^0 E) x, i% d  a! @
virsh secret-list& W" S! [- g, l+ }' W+ F

1 U2 f* z, {, |6.重启libvirt
5 Z! }* ^% q0 C% Ksystemctl restart libvirtd.service6 B* i2 h8 U/ N
systemctl status libvirtd.service4 @  H! ^4 N1 B' W5 l- F
6 n. A/ W% W0 g) R$ X2 l
出错回滚的方案% b% f+ W7 U7 S) G& o; u
1.删除pool池# t  ^. v1 k8 m' o! H3 D2 j; }; F
先在所有的监视器节点上开启删除pool的权限,然后才可以删除。2 m$ ~- o/ s& T& q
删除pool时ceph要求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。3 f, ^) l" ^2 `3 w6 u; ^2 |
echo '4 L- \+ |8 C/ O, u
mon_allow_pool_delete = true
6 J  o% V2 c/ ~' v1 {5 ~[mon]/ ]/ S4 _, z+ v
mon allow pool delete = true
# n! f" H# ]9 w8 I+ k5 |' >> /etc/ceph/ceph.conf 8 R- U# w# s! z& M
systemctl restart ceph-mon.target
  A( Q! k: |% jceph osd pool delete cinder-volumes cinder-volumes  --yes-i-really-really-mean-it* t7 M3 T; q3 P% |
. f: _7 g- x; ]# B" [% U( c' i
2.删除账号  v4 ?" j: g; a
ceph auth del client.cinder-volumes% S( ?+ z9 }, W7 Q2 \5 F: {
. p& F+ s, n2 r$ L. }, Q' N
3.删除libvirt中注册的UUID和cinder-volumes密钥环7 {: t& y" [+ H! J" w# B" _
查看:
/ }* m4 h) B" w: v9 Z$ Xvirsh secret-list0 E7 Q- Z2 }: z5 P2 ]3 i5 `- X
删除(secret-undefine后跟uuid值):( B/ }3 @% J+ m+ y% B/ {% D# q
virsh secret-undefine  086037e4-ad59-4c61-82c9-86edc31b0bc0
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2021-11-28 19:40 , Processed in 0.043491 second(s), 22 queries .

Powered by LR.LINUX.cloud bbs168x X3.2 Licensed

© 2012-2022 Comsenz Inc.

快速回复 返回顶部 返回列表