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

易陆发现论坛

 找回密码
 开始注册
查看: 4065|回复: 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
& Z3 Y# I4 O; G; C
! |1 ]- n4 e0 P: Y! k
! V, \$ m) K8 Z# Z. }9 w  L$ b       health HEALTH_OK 4 F' r, e: f2 {( E4 I

; m6 `5 `% O' I" s- M& `6 |
' t) z/ C- e' l/ [: g+ u       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 ; T( E. ^8 ^% ]
: S! g! ^* [3 {- I; E6 \* C

( Z! ?3 L1 G% L; ]' {      osdmap e170088: 226 osds: 226 up, 226 in 1 C) x. k3 h- x1 ?4 T
# e* n1 u4 C0 O8 [5 w
7 T1 B; j0 ~( _: @& |! |
     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% t) B# H8 O: y+ ~$ M8 p* r

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 9 s6 c+ N7 ]; g/ o
  " t$ b( x" v3 j4 p; B* w
    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 5 W' K0 _/ Y: Y/ ~6 [/ }

( c- |( w( n# |, t) J8 t0 u; T& f/ t9 G; ]- w
   osdmap e559: 264 osds: 264 up, 264 in flags sortbitwise
3 u! _6 L1 C; n. g! X* T7 q+ Q
( Z* ^- T. D2 J% q. z  {
' b: O  t+ k% |: z: f. [. c. q. D   pgmap v116751: 12400 pgs, 9 pools, 1636 bytes data, 171 objects 25091 MB used, 1440 TB / 1440 TB avail 12400 active+clean
. \" {9 H, A8 N' W/ Lcinder 配置

对 cinder 服务端进行配置

/etc/cinder/cinder.conf


% N, @( Y6 a& e

enabled_backends=CEPH_SATA,CEPH_DEVELOP...
5 d5 l. p$ W0 Z0 p[CEPH_SATA]
3 d; o: C3 C. sglance_api_version=2
+ k' G- Y2 z$ j4 S2 b5 @4 N4 ~$ a" U
volume_backend_name=ceph_sata5 c4 I1 u/ k* K/ g

) {. U0 q# ?9 x! o- Crbd_ceph_conf=/etc/ceph/ceph-volumes.conf6 I  N. N1 W& a# l

, a' r8 I  r4 P6 `, c8 h4 Orbd_user=cinder
8 m( I' Z4 _- @5 B$ W/ |" I5 @- l
rbd_flatten_volume_from_snapshot=False
( `/ U* C1 e  v  x8 I  F: ]% U2 w
rados_connect_timeout=-1+ x" {) |8 b$ Y* l

5 T5 c# L: \- Frbd_max_clone_depth=5+ L/ c5 W; m) Y' {/ S; X$ H
6 m9 S* n: d) m% [3 `% G$ ^/ s% l
volume_driver=cinder.volume.drivers.rbd.RBDDriver% Y* I1 z, q' X
' C3 y  s7 q- y8 o3 m6 c: Y! L
rbd_store_chunk_size=4
+ p/ p, c4 J: W; D, _% F7 k0 |7 ~2 I" |
rbd_secret_uuid=dc4f91c1-8792-4948-b68f-2fcea75f53b& ?" T) B* f. W; x
$ @' W! c; m3 k3 P1 T/ K
rbd_pool=volumeshost=cinder.vclound.com
" h, ~$ {2 Z, y3 M0 L
$ _. \# ~* h: i4 }[CEPH-new_volumes]) h! R  b) x2 b, v

# c5 w" M; m. i2 x  K- lglance_api_version=2( e2 I( o; @+ n) T/ c
# @0 j8 c" A, y/ {( F# h
volume_backend_name=ceph-new_volumes
: ?% q" o" @$ L4 G$ b' k6 Y0 }% D, H# e3 t- B+ C: f5 V* k
rbd_ceph_conf=/etc/ceph/ceph-new_volumes.conf$ C/ X2 u0 j6 d% G; }+ i% y" U

: x; S% E0 i* U! R5 irbd_user=cinder
  J: {3 m8 j" z5 y8 i# W
! l$ v  ?! a+ w, Arbd_flatten_volume_from_snapshot=False7 q* B. w  g* t& Q$ m

# J" Z" G% h5 z; z0 }rados_connect_timeout=-1
) r: v" Z7 M! _' l
; O3 B# V8 F) V6 O& Frbd_max_clone_depth=5- C+ ^. L% `6 ]

1 v- T( Z- S' S- N" Kvolume_driver=cinder.volume.drivers.rbd.RBDDriver
8 f( f, h5 A' b* Y
5 p4 W) j% {" ?* w; z0 trbd_store_chunk_size=4
. O6 W9 ^' y( _3 F9 t# ?- Z, N- {. `+ b- h, p  f& B
rbd_secret_uuid=4bf07d3e-a289-456d-9bd9-5a89832b413
- c, Y4 T6 ~( o6 o. W
. R* M8 @0 b9 V5 q" D  G/ ~; e# qrbd_pool=new_volumes) q( K1 |! C# Y1 b+ u, h, I- j1 y+ y
  H" V# x$ F9 T5 b- q- k
host=cinder.vclound.com
4 W8 i! r9 l0 F; Q  |8 u2 Q6 ]: N- |1 z! v2 ~
 楼主| 发表于 2021-1-14 23:28:30 | 显示全部楼层
在ceph监视器上执行
1 B4 y3 d& S; \8 U" {; GCINDER_PASSWD='cinder1234!'& @6 m6 Z1 D! @& p( E# N% X. u: Z
controllerHost='controller', ~" I' f) o; Z2 y
RABBIT_PASSWD='0penstackRMQ'! a* F0 s9 ~, v, p0 I* s

+ y5 z6 O# p' X, b6 B/ `( {1.创建pool池
/ R" H6 i1 @8 C为cinder-volume服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1)9 _; {# K/ X3 p- C3 d  N- L
ceph osd pool create cinder-volumes 32
3 Y0 b" I+ J# V4 N) P: m# h6 ^ceph osd pool set cinder-volumes size 1 2 Q0 C9 ]9 m% K) Y! z
ceph osd pool application enable  cinder-volumes rbd
( _! e* W8 }' N/ @ceph osd lspools' d% h4 ^/ d0 B; ?
; l' C  |- J! o) r$ v+ ~; q, L
2.查看pool池的使用情况
' d" p$ C6 W7 @9 E1 @ceph df
6 z' z( d# V- e2 W
3 N4 \* b0 v; Q3.创建账号
0 A& C4 K$ ^3 P7 x: q6 J3 Y4 f6 F' zceph 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
; B4 G6 r* S& r3 b% z" h, ^# ]! [8 ~#查看2 J, g+ v$ g. M1 l) }2 c! g
ceph auth ls | grep -EA3 'client.(cinder-volumes)'
3 J) @% b) l* t* c/ ^9 Q2 H3 B+ p" A4 G! B# ?6 \, W5 |( o
4.修改ceph.conf配置文件并同步到所有的监视器节点(这步一定要操作)5 f1 i* c! p( G
su - cephd 0 m$ ^5 j5 U$ ?0 b
cd ~/ceph-cluster/
# A' r; t9 X& H; v  a% A( D  dcat <<EOF>> ceph.conf
7 h% l4 O% ?" b4 M: ]: |) K/ c[client.cinder-volumes]+ ^6 ^& x4 q* w- A6 g( o
keyring = /etc/ceph/ceph.client.cinder-volumes.keyring
; f; @% n1 |' JEOF
& Y5 j4 y! R" Z8 Nceph-deploy --overwrite-conf admin ceph-mon01
: a% r8 `# @9 R9 r3 H( U$ s/ E" rexit
0 p; T$ u) x5 b1 e3 T; e. ^
- m' J7 A8 d; ]  z5.安装cinder-volume组件和ceph客户端(如果ceph监视器是在控制节点上不需要执行这一步)3 W) i/ E6 v. h2 G
yum -y install openstack-cinder python-keystone ceph-common
/ }" o0 \8 j( o+ d
- r/ E5 F3 f1 D  y8 x# Q0 |  ?6.使用uuidgen生成一个uuid(确保cinder和libvirt中的UUID一致)
) V5 v% d: {& s% euuidgen
$ J1 S8 N" ~/ E. o6 b运行uuidgen命令可以得到下面的UUID值:9 m1 E( ?# F" S: p1 C: a5 I
: u& L; i0 R$ d# g& W! z$ ^! c
086037e4-ad59-4c61-82c9-86edc31b0bc0
5 h; N  M6 Z+ p6 B7.配置cinder-volume服务与cinder-api服务进行交互
: [9 _. S4 P# ]6 G  copenstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url rabbit://openstack:${RABBIT_PASSWD}@${controllerHost}:5672  G0 M9 o1 Z7 F( B, F& G
openstack-config --set /etc/cinder/cinder.conf cache backend  oslo_cache.memcache_pool; R! N7 i2 X% x; ^, k: C2 E
openstack-config --set /etc/cinder/cinder.conf cache enabled  true
9 m7 o. b' M, K: bopenstack-config --set /etc/cinder/cinder.conf cache memcache_servers  ${controllerHost}:112111 D) P2 c0 Q1 V2 h4 m6 L
openstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone
5 B" G( L6 r" o0 x: r8 iopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_uri  http://${controllerHost}:50007 t4 L( q' Z: l( f! R/ W$ K
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_url  http://${controllerHost}:5000
) {0 [# ]1 F( `, v: A  Jopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_type password
! L8 s; f* T, M1 O3 O% p8 fopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_domain_id  default - b$ I5 ^  b3 W9 {( Y
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  user_domain_id  default3 P. a- t3 B8 K8 N8 Y: H- S- ~
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_name  service
4 C& g9 g  E) y, P6 h! j; Yopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  username  cinder
# {: X2 w3 }7 }: ~9 N0 i. e7 ropenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  password  ${CINDER_PASSWD}: h0 k. }- w' x: f% k3 ^0 `. m
openstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/cinder/tmp4 v9 f* g1 K/ f8 M- o2 k

" Q; C6 p7 q8 V) u, y! B8.配置cinder-volume服务使用的后端存储为ceph
8 J% w( @+ }) k/ h$ r& M" L. Aopenstack-config --set /etc/cinder/cinder.conf  DEFAULT  enabled_backends  ceph0 G. p8 R, U  e9 I7 ~

, U( H( T& x4 w9.配置cinder-volume服务驱动ceph
6 r2 ]3 h( V- x# m& w' f7 t, Ropenstack-config --set /etc/cinder/cinder.conf  ceph volume_driver  cinder.volume.drivers.rbd.RBDDriver
" |8 `4 P$ c/ H0 v0 lopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_pool  cinder-volumes
! @/ x! I9 {2 d3 N, x; oopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_user cinder-volumes
# h( c4 J4 @- Fopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_ceph_conf  /etc/ceph/ceph.conf
' `) i4 D) [1 R9 W# K7 r; x$ r7 Wopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_flatten_volume_from_snapshot  false
, h4 F  X3 h' }* A3 \openstack-config --set /etc/cinder/cinder.conf  ceph bd_max_clone_depth  5 9 M! H/ \; H' z6 y1 N7 k) i5 u2 C7 z# Q
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_store_chunk_size  4 5 z) n7 U% ^1 r7 M
openstack-config --set /etc/cinder/cinder.conf  ceph rados_connect_timeout  -1
. z9 t) h. P; b" N! o/ P# k) \9 Eopenstack-config --set /etc/cinder/cinder.conf  ceph glance_api_version 22 b3 l1 n, V. [2 S
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_secret_uuid  086037e4-ad59-4c61-82c9-86edc31b0bc0& ]% b  J. W; q* g
3 o1 o0 U/ @) L" F' q
10.启动cinder-volume服务9 z+ i3 y% O8 b6 W- E# c9 t
systemctl enable openstack-cinder-volume.service, P# E" t; e5 f$ X% W4 ^
systemctl start openstack-cinder-volume.service9 m* s9 d0 n" W' t( S/ |) r  P$ \
systemctl status openstack-cinder-volume.service
! t+ b5 N$ i$ j2 V' P! q' e* p
6 z7 D* h" Q' ?0 ?( _& {- D  b在需要挂载ceph卷的所有计算节点上执行
- M; Z: }# p6 P1.创建secret文件(UUID需要与cinder服务中一致)8 F" h* Y2 R! h- P0 j7 V
cat << EOF > ~/secret.xml
$ m* n( M" \: G- y# j- ^3 K( ]2 ?6 j<secret ephemeral='no' private='no'>' p' r) X; x- e+ W) H2 z. D2 X
     <uuid>086037e4-ad59-4c61-82c9-86edc31b0bc0</uuid>) \& F$ {& @% R' A- N
     <usage type='ceph'>1 V' q" F% \. o
         <name>client.cinder-volumes secret</name>
1 s" j5 j( H( c* v) [     </usage>
* l1 q* o' y# l" R& M0 _& B</secret>& {( c6 J8 ~% u. G5 |
EOF
4 F8 N) [9 i7 o# H; G, q5 M  M) b( ^' A2 _3 `8 h: M
2.从ceph监视器上获取cinder-volumes账户的密钥环9 q/ ?5 n* s1 L; F( y
ceph auth get-key client.cinder-volumes2 W! r* B$ C0 Z
得到如下的结果:
' @, e: M+ G8 ~& h; j  o4 h% YAQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==
/ h  [' ~( O) f9 y/ B, y" M0 A
, p6 w/ h3 ^6 \6 o7 g& P# Z3.在libvirt中注册UUID
# E" K) L! Z6 T$ O5 h. y# N* Evirsh secret-define --file ~/secret.xml% X- Q. H5 z6 c) l3 y8 Q

' T, {6 Y+ q5 _+ t8 `# T' R4.在libvirt中添加UUID和cinder-volumes密钥环2 t6 F* a  D% e; ]
virsh secret-set-value --secret 086037e4-ad59-4c61-82c9-86edc31b0bc0 --base64 AQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==% L- O4 Z+ P8 [6 ]9 Z0 d/ C/ E1 C

; L5 W- @' F* @$ V& v5.查看libvirt中添加的UUID
* ?  C$ i8 G  `( R2 kvirsh secret-list
+ `% L" C. P0 T9 N
/ A* A% F/ {( D+ U  C8 Q6.重启libvirt
; {4 ]% d7 `* V/ t& l  psystemctl restart libvirtd.service
9 n) `5 x; L# a' Nsystemctl status libvirtd.service
! z- X6 g1 w+ Q$ v2 ^8 z- \
: C. B/ R) D, O  g出错回滚的方案
8 P, y7 y) q4 |% y* O( A) [3 b1.删除pool池
( y' Y+ j7 A% R& d$ d" V先在所有的监视器节点上开启删除pool的权限,然后才可以删除。
  o. G$ `* _$ X6 D. _删除pool时ceph要求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。
; G; X, E( D# o  R2 N0 |echo ': U  D5 b( G) C
mon_allow_pool_delete = true
* z$ a, P* L( J: s. `" u[mon]# ?) f' [5 o9 T, k" E5 M* F& U
mon allow pool delete = true
6 J+ X. G* Q0 K4 n! N' >> /etc/ceph/ceph.conf ! L! E6 y5 k# J, j, c3 I! n, M
systemctl restart ceph-mon.target
( J: O$ E, l! T1 [$ {$ l0 l" jceph osd pool delete cinder-volumes cinder-volumes  --yes-i-really-really-mean-it
% T: U1 c7 ~/ c. j& V2 i0 T% J: T, ^( k8 |9 X) i3 v: p
2.删除账号
( p4 Z- d! M3 s4 q8 v2 t& T4 sceph auth del client.cinder-volumes9 `. \  j1 n7 a1 `0 b1 H  {1 n
% T1 H9 S1 V6 U: h9 g2 P
3.删除libvirt中注册的UUID和cinder-volumes密钥环' n. Z; h2 s0 h
查看:: x; g' C. n. X$ V" W$ T
virsh secret-list6 G. k& p  e7 n* y! K) J
删除(secret-undefine后跟uuid值):8 O4 ]5 T) v( e$ ^% N
virsh secret-undefine  086037e4-ad59-4c61-82c9-86edc31b0bc0
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

如有购买积分卡请联系497906712

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

GMT+8, 2022-7-4 11:12 , Processed in 0.063998 second(s), 21 queries .

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

© 2012-2022 Comsenz Inc.

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