找回密码
 注册
查看: 6195|回复: 1

cinder 对接多个 ceph 存储

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-12-26 15:00:04 | 显示全部楼层 |阅读模式
环境说明当前 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 + t3 j: q2 n  W, g

8 m# u! J% D7 m8 h" D: h8 x' ^: v' F+ {( N5 ^
       health HEALTH_OK
8 _! c4 R) n6 T# }; N5 Q! f" O1 H+ c/ U$ t3 x* b- a
9 l; p7 A, `% G) {. O' r1 I; X% c4 W2 _
       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 6 @0 [& l& u! p+ f1 q

3 v- n! q, u7 i- ~; |
/ T) W+ F3 [; ~7 p& A' N      osdmap e170088: 226 osds: 226 up, 226 in
" [& u. H& B- v5 @* L
$ w& I  t9 r6 V  b1 J9 y/ [# L, F: q4 p: [% e* R/ B
     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/ b% l. u' D: [* K

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 8 S+ c- e* b+ r& q! \; C9 }
  
% N. \( b' [/ l! o( `+ e5 m    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
$ A% u& Q) K* ]8 c) B/ o( b& ^' e6 R. P: g! t

0 k0 h3 A) X) v4 \& S   osdmap e559: 264 osds: 264 up, 264 in flags sortbitwise   q6 p& J! V0 w3 U
: m' F6 g" ^* f8 m
& W  f8 `" A# T: |7 V$ u+ A
   pgmap v116751: 12400 pgs, 9 pools, 1636 bytes data, 171 objects 25091 MB used, 1440 TB / 1440 TB avail 12400 active+clean
; [6 y( M' c: n7 O& j- `; Ocinder 配置

对 cinder 服务端进行配置

/etc/cinder/cinder.conf

/ W& k7 M( P  |

enabled_backends=CEPH_SATA,CEPH_DEVELOP...# x; }3 p) D. L9 [4 H
[CEPH_SATA]
. d& |  C0 j1 O% Y: x* c9 ^: Aglance_api_version=2" g3 ]5 I1 u) |

( R! P$ k# I, _% r( bvolume_backend_name=ceph_sata# \5 ^% }* q; h) z1 N
9 e9 p$ K" b0 y5 T
rbd_ceph_conf=/etc/ceph/ceph-volumes.conf$ u( U* g* |8 r6 `* _$ ~+ O7 t
: k3 J: P5 Z5 V( b. Z& J6 H
rbd_user=cinder
, e  D2 b& g0 W3 X9 a" s0 ^9 F+ g/ W
rbd_flatten_volume_from_snapshot=False
* S2 a$ z" i& l
" i: a/ \3 y* S- y" m; `, Qrados_connect_timeout=-1, _  W) a) R; v2 z$ Q1 A
/ A5 g4 H$ L! g/ l6 D! E
rbd_max_clone_depth=5
6 I# u! {3 {* x, [( m) E6 L; f# Q( @5 x7 A2 r: Z
volume_driver=cinder.volume.drivers.rbd.RBDDriver, F: C- C. h; [4 U* w8 N9 d' ^

' O" M; q. a! X* Mrbd_store_chunk_size=4: D4 A$ G) B% r1 Y8 b7 D

, S- u; K  {( drbd_secret_uuid=dc4f91c1-8792-4948-b68f-2fcea75f53b
& `. ]0 U! W( U( F
" M# @. @' v5 T: X: e1 x/ frbd_pool=volumeshost=cinder.vclound.com
/ A1 ^$ l6 q5 p0 n
: Y0 U% Q  }  ^  ]) {[CEPH-new_volumes]
# Q! V9 u" r6 v: p7 E' f
8 X% }- k5 T- _, N, P: nglance_api_version=20 ^! x% r8 y: R" V

% a  E" ?/ q9 H7 Q4 z3 @7 q' E; evolume_backend_name=ceph-new_volumes0 g; ]2 G2 V$ u: [# e/ o" T$ b% n

/ m0 x2 ?- N3 T- t+ z  l" qrbd_ceph_conf=/etc/ceph/ceph-new_volumes.conf
3 c+ Z4 }" h3 H' t8 p+ o
# P- |! c& ?) e" `% Q. Mrbd_user=cinder, M$ o6 b  y7 X

) n$ g1 B1 S. Z% K' C3 S8 Crbd_flatten_volume_from_snapshot=False
( {! R7 W5 W- X  A& @% D& W* s& S0 P1 ^4 h# B3 N0 t1 H* C! W
rados_connect_timeout=-1
1 p6 }5 F& K9 R) D0 A# g
$ h& Q6 s1 I2 \4 Grbd_max_clone_depth=5* N3 p0 D- J- t$ W
- i- H) M+ b7 U  V; C* E
volume_driver=cinder.volume.drivers.rbd.RBDDriver, m' h& z8 O- L, w2 \' m) \

! `2 G  I$ P& M5 }  ~, Y1 Trbd_store_chunk_size=47 ~5 G# n& r/ c$ w/ E/ H; r' T

: U- M$ N: X" Q6 j8 a& ^) erbd_secret_uuid=4bf07d3e-a289-456d-9bd9-5a89832b4131 R9 I7 c  J9 i4 q/ N1 b; M
4 p2 L* Z1 i3 G$ Q4 W, {9 z. p9 V: w
rbd_pool=new_volumes
: d; ?* u% ~4 w3 P/ ]. R9 w
6 w5 _/ O( k& Y+ H# H1 R- r7 hhost=cinder.vclound.com$ w3 F  Q3 k9 O- Y$ l4 x" {! ]

1 o! ]( A6 p$ d. f; P1 Q

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-1-14 23:28:30 | 显示全部楼层
在ceph监视器上执行2 y; v! b4 s; k: z: q9 Z1 O2 V2 ?
CINDER_PASSWD='cinder1234!'  I# d7 _$ |* x: w, q7 f
controllerHost='controller'
0 b1 ~5 Q- |0 j7 h" XRABBIT_PASSWD='0penstackRMQ'# c# u* Y* h5 H7 o0 m

' ]  g* k0 ~, e( h3 W1.创建pool池
) o( g, F) F/ A为cinder-volume服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1)
6 l  \& P! c& nceph osd pool create cinder-volumes 32
; X& E. a' s) ?/ y5 k5 Vceph osd pool set cinder-volumes size 1 3 C- t+ z3 _  k4 |2 E9 q3 q
ceph osd pool application enable  cinder-volumes rbd
- x* \7 w' z8 r, R8 [+ i# dceph osd lspools- F% d1 ^8 ^3 J) k" C4 v+ j7 y# F

. O# w) M0 `* }2.查看pool池的使用情况
* i# E- p5 W. ]1 z  A2 rceph df+ F3 l2 T& d& }# f4 p. T

0 W3 U0 s6 o& G* Z3.创建账号7 W$ q$ f& H+ x: N$ f
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
9 D  N$ e0 W  H* z: J& K: F8 W#查看; d0 X4 P, o) c; a; V' T
ceph auth ls | grep -EA3 'client.(cinder-volumes)'
. L0 p& n& R$ o4 M6 H# Z  P  l  N* i  q8 Q
4.修改ceph.conf配置文件并同步到所有的监视器节点(这步一定要操作)
( r- r* z7 Z% o7 wsu - cephd
2 @9 ~  R# ?1 n# hcd ~/ceph-cluster/
* }7 ^' ?5 c2 X! Hcat <<EOF>> ceph.conf
6 J/ U6 M2 ]- F, M* s4 J[client.cinder-volumes]
) _9 b, C. I" ^5 U' C3 E& G+ kkeyring = /etc/ceph/ceph.client.cinder-volumes.keyring, J/ H- V! Q$ l; w4 A- h6 o
EOF
8 {# r: l1 e) D+ [7 vceph-deploy --overwrite-conf admin ceph-mon01
/ E, f' e( J- Q! @3 b2 Texit
2 S) B7 g7 E; F  }0 j7 g) {
+ K# k( F) G9 V8 k( K; a. _+ A# T5.安装cinder-volume组件和ceph客户端(如果ceph监视器是在控制节点上不需要执行这一步)6 v! C  \3 D* `) I! T- x2 `/ v% h
yum -y install openstack-cinder python-keystone ceph-common
3 q% q: i+ W+ Y# |3 _# B8 k
4 {0 I' U; e! P! D2 W* k6.使用uuidgen生成一个uuid(确保cinder和libvirt中的UUID一致)
5 L% N$ H% g. O3 V6 ?- V1 Uuuidgen% j; Q% B1 j( ]+ e' T+ J' T2 K: _
运行uuidgen命令可以得到下面的UUID值:9 e; C# e9 v- E$ y) q3 P4 M

  E1 P1 q; p! l: h" g) p086037e4-ad59-4c61-82c9-86edc31b0bc0' P3 M$ j2 ^& d9 k; c3 l2 M) Z
7.配置cinder-volume服务与cinder-api服务进行交互
5 k1 \+ m$ K6 popenstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url rabbit://openstack:${RABBIT_PASSWD}@${controllerHost}:5672
0 @3 y& i5 _2 m' |" u1 O6 _openstack-config --set /etc/cinder/cinder.conf cache backend  oslo_cache.memcache_pool
( M- x' g" \3 p/ Aopenstack-config --set /etc/cinder/cinder.conf cache enabled  true
3 Y; i/ H% a5 A# ^$ q, P' bopenstack-config --set /etc/cinder/cinder.conf cache memcache_servers  ${controllerHost}:11211" [! j5 U+ X% c* F, E$ y
openstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone) _  ~9 H) o* ]: n3 w: e& x/ `
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_uri  http://${controllerHost}:50007 z" J* d# K0 P6 M
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_url  http://${controllerHost}:5000
" P2 N4 f+ |8 G2 `  ?openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_type password - x& t. X! B: C  O3 N
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_domain_id  default
9 Z9 [5 c. |5 o% C1 xopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  user_domain_id  default% H5 E3 V# d0 K6 M" Q$ i
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_name  service ' z1 E& I4 r: U
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  username  cinder8 M5 S$ N6 Q6 T0 N
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  password  ${CINDER_PASSWD}
0 X; t( n9 ?: ?- j/ ]6 i, A+ iopenstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/cinder/tmp
* E/ J1 |- S" |4 q3 }+ V4 J7 N, b$ b) @/ @% V# @) q
8.配置cinder-volume服务使用的后端存储为ceph
* W9 a9 B; |; a& O; X, w! o7 k9 Aopenstack-config --set /etc/cinder/cinder.conf  DEFAULT  enabled_backends  ceph+ h1 c- f9 h/ w% p+ K5 T

$ G7 ^$ \  {5 b- L1 @9.配置cinder-volume服务驱动ceph9 w* F/ q5 _$ L9 d! i8 A$ K! R
openstack-config --set /etc/cinder/cinder.conf  ceph volume_driver  cinder.volume.drivers.rbd.RBDDriver , j9 l+ H. W* Y
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_pool  cinder-volumes" E: H1 h8 C& X. P% `% |! f3 ~
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_user cinder-volumes
" F  G3 B) ?- y2 [3 }5 d: @openstack-config --set /etc/cinder/cinder.conf  ceph rbd_ceph_conf  /etc/ceph/ceph.conf # ]5 a# z! I+ `9 z
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_flatten_volume_from_snapshot  false
# H$ U/ g5 O8 Q3 J# Qopenstack-config --set /etc/cinder/cinder.conf  ceph bd_max_clone_depth  5
. J2 a& t1 p4 A& v# ?( V5 k  Xopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_store_chunk_size  4 + Y0 G, W6 k5 E2 @1 M
openstack-config --set /etc/cinder/cinder.conf  ceph rados_connect_timeout  -1 * f$ U8 p+ w) C9 ?6 w) f6 s
openstack-config --set /etc/cinder/cinder.conf  ceph glance_api_version 2
: }  c! P9 r$ \& P& `1 b9 N+ q* Copenstack-config --set /etc/cinder/cinder.conf  ceph rbd_secret_uuid  086037e4-ad59-4c61-82c9-86edc31b0bc05 e  r- E( x6 Z" D6 e( {' R

- o% T# I: O) W10.启动cinder-volume服务& S3 A( G8 P  M) k: |
systemctl enable openstack-cinder-volume.service: }; s6 h" `3 s- ]
systemctl start openstack-cinder-volume.service% o/ w& k7 j/ R5 \  }6 n. k# K* x
systemctl status openstack-cinder-volume.service
8 q5 T9 P0 E7 w4 m
8 e9 y+ p( K3 q& J在需要挂载ceph卷的所有计算节点上执行
/ Q0 l7 ?1 s5 }. ?1.创建secret文件(UUID需要与cinder服务中一致)' V8 t$ K, E4 g( ~! H* S) I
cat << EOF > ~/secret.xml2 \( L. C/ d# R  F1 b2 [/ O9 M# t! Z
<secret ephemeral='no' private='no'>
" f6 G: e# t/ k5 P     <uuid>086037e4-ad59-4c61-82c9-86edc31b0bc0</uuid>
; R) p" ^( V8 p3 a$ N     <usage type='ceph'>
1 w# s& J$ |; y& W. |( c2 |3 ~         <name>client.cinder-volumes secret</name>4 Y& p1 v. D1 X2 J$ g1 V+ S
     </usage>
% N( {  d) O& N7 n. u$ m</secret>6 k$ l5 y% l( ?1 }7 T4 m
EOF1 A4 K! a' `( U
# n! G% ?+ Z1 Z9 w( ^
2.从ceph监视器上获取cinder-volumes账户的密钥环  \# Z/ m8 s: s; i7 F
ceph auth get-key client.cinder-volumes
1 I* x) o  C4 F& r得到如下的结果:" _8 z1 i! x) V" G+ p) [
AQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==
% F3 p. r5 ~9 o! a, R
8 T1 I1 Y& o% J5 j# |  u3.在libvirt中注册UUID
5 S: Y: }; x+ `- _virsh secret-define --file ~/secret.xml; J' ]" F  j$ [" ^" w
: d) `( Q9 O3 b- l& R
4.在libvirt中添加UUID和cinder-volumes密钥环  \! a& d& }2 |& ^( o) x8 r
virsh secret-set-value --secret 086037e4-ad59-4c61-82c9-86edc31b0bc0 --base64 AQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==
/ G; u7 o$ `, m
! H: q2 C" J; d& T! W6 T5.查看libvirt中添加的UUID1 B/ p3 f: I" R& M. c+ J- x/ s) m) _
virsh secret-list
% g  {; |4 u1 _' v5 x
9 n5 `) [, U$ x5 f: ^9 L3 g6.重启libvirt
+ k. G( R1 m( d2 a9 qsystemctl restart libvirtd.service
2 O1 H6 k: b& X7 j5 w; Ksystemctl status libvirtd.service
' j2 q: q6 V& W+ q
: m1 ~* {+ p$ t) \3 @& C# P出错回滚的方案: `2 R; H2 p# \! y( F* h
1.删除pool池
% t9 ~. F( K6 a$ c/ G' |先在所有的监视器节点上开启删除pool的权限,然后才可以删除。0 ]1 m* z5 M, U: Z
删除pool时ceph要求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。
' w) ]7 _8 j& _/ mecho '
8 x: i. s0 t6 j8 Lmon_allow_pool_delete = true- p" l2 q$ J. f9 g% @" _
[mon]0 e. L3 R2 g2 x" h( A# b
mon allow pool delete = true
! r3 U9 J1 N* H+ l* o' >> /etc/ceph/ceph.conf ( a/ P  d# X+ o
systemctl restart ceph-mon.target
+ G+ q% @5 I4 z3 nceph osd pool delete cinder-volumes cinder-volumes  --yes-i-really-really-mean-it
. E6 S' W: C5 g% x  j5 _: i; M5 y8 }9 z9 I& q3 L7 n
2.删除账号& f" U- b0 f% ^0 s( X3 I
ceph auth del client.cinder-volumes
) d& u0 O9 c, b2 o0 }
" e2 ~" L% [. \7 ^. p7 A9 H3.删除libvirt中注册的UUID和cinder-volumes密钥环5 Y+ Z/ m  Z! ^/ A. m, G
查看:2 T9 J0 X; f1 u- T
virsh secret-list
" x4 \5 O- @2 I& S& a0 I0 T+ Y删除(secret-undefine后跟uuid值):
1 U+ g. l- m7 L7 h8 tvirsh secret-undefine  086037e4-ad59-4c61-82c9-86edc31b0bc0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:06 , Processed in 0.018509 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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