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

易陆发现论坛

 找回密码
 开始注册
查看: 1206|回复: 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
) [+ c7 p/ G1 m+ d! x8 ]6 |3 V2 E0 ]
" g" u% H3 i5 q# v3 ~8 J# r
       health HEALTH_OK
2 a" f( \7 d# W( m1 A% C9 _+ ]4 j) y5 H7 G3 I7 N$ g; i

& Y7 p) _: n' ^+ e+ 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
; `; M  l" V+ J3 ~- y
: t# W. t$ L# D! E" B  B" R
6 R% k2 t' ^' K  y0 a$ Z- ^      osdmap e170088: 226 osds: 226 up, 226 in 2 p1 E' P! Z  m
/ [6 ~- z1 l1 O. H1 G3 J7 S/ i& z$ @

  p) p+ p, j" A( f7 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/s8 Q0 W6 O, H  r' B  @/ p) d

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
: a+ z% r$ H( L0 L# R  6 t  Z; T/ S& g" b' F; n
    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
% J8 S. V/ T! B
5 S* k2 [: Q( @% l5 d
& l( t+ L- r" \: P4 ^; B8 {   osdmap e559: 264 osds: 264 up, 264 in flags sortbitwise 8 W4 d' `; C( |$ w8 Q1 \7 J8 i

* Y2 k. Q& ?* n: j9 Z4 L
% Y& X# C, o  S' R   pgmap v116751: 12400 pgs, 9 pools, 1636 bytes data, 171 objects 25091 MB used, 1440 TB / 1440 TB avail 12400 active+clean
- o( _; ~9 C' N$ E, ncinder 配置

对 cinder 服务端进行配置

/etc/cinder/cinder.conf


6 m$ S. A0 q6 N3 i$ v: i4 C4 J- ]

enabled_backends=CEPH_SATA,CEPH_DEVELOP...
9 ?# j- p% a$ }3 w0 w8 M) f" w[CEPH_SATA]
  `" R4 f% k; |( n( A5 P) _: fglance_api_version=20 Y% M4 U. [0 Q; i  R) _# E

' {8 Z: Z  [' w" R# j; J; fvolume_backend_name=ceph_sata
+ r. \- p4 j  m4 Q: P& u7 c2 Q, q9 U  v$ O6 I
rbd_ceph_conf=/etc/ceph/ceph-volumes.conf. r, f" D2 J& Z$ t3 _$ T: V

3 Z$ \2 {7 b. E; N  Urbd_user=cinder) C$ |* U( [! ]. {4 z0 {; g$ d
) ^' d, q" p& t, M. _( j# C' b
rbd_flatten_volume_from_snapshot=False3 L) @9 V' q( b, q" p7 r6 T; m
, |) ^+ S3 k- `7 ^
rados_connect_timeout=-1
& S' o! H5 @) [6 f! C: G6 b
+ A( z' w- x5 ~' K7 `0 @+ @: r# F1 ~5 Lrbd_max_clone_depth=5
. M( r- n7 ?1 ~# J' G8 v# _  U
: ~* B9 a& T( x% R# fvolume_driver=cinder.volume.drivers.rbd.RBDDriver
' y( `' J( j' R2 Z& C7 y2 I$ d; d% ~7 G6 A3 O1 R
rbd_store_chunk_size=4/ A! b% x% q; @6 c" ?

0 |( K# p, t" W0 Q5 d) C3 _rbd_secret_uuid=dc4f91c1-8792-4948-b68f-2fcea75f53b
2 w# W: n- Q& f) f9 F
% b. L. i6 y/ @9 s6 c! rrbd_pool=volumeshost=cinder.vclound.com
! g" z$ d9 j: }5 ]# h4 A5 Y- a# b! g) z* E; N0 n! J: T! r$ r
[CEPH-new_volumes]& H, S0 t7 M1 h2 N4 z

/ |5 b: m/ ^, @glance_api_version=2* ~" {$ m  L5 Z- |; L
8 j( h& K: ?' J0 {( K: F
volume_backend_name=ceph-new_volumes
, C9 |/ e" q% i( B4 \( o! t2 [2 L- c' H- j, x
rbd_ceph_conf=/etc/ceph/ceph-new_volumes.conf- k/ T( x2 C1 X: l) g

- F0 l" B9 l! e! j9 urbd_user=cinder
1 B4 O1 H' G5 r; {; D
) m4 D$ `1 ]7 V2 Q+ |6 hrbd_flatten_volume_from_snapshot=False
( f1 Q) [8 B" J. w3 D- Z
! C9 \; X1 K- X. R: K7 Drados_connect_timeout=-1) p' c& e% L- V6 X# c4 Z

- e* A. n; z' G: Y2 wrbd_max_clone_depth=5
& c2 g/ b+ c5 ]6 Y4 ^( w
1 Q) W0 q, Y0 \, b& A0 h, r! Xvolume_driver=cinder.volume.drivers.rbd.RBDDriver% B5 f, w: W' a# A" z
& s% @  `5 j1 o" w- Q/ i  ^
rbd_store_chunk_size=41 U9 [% {2 h' |' t! a: K
% q( {- C: z9 p) U! l/ }
rbd_secret_uuid=4bf07d3e-a289-456d-9bd9-5a89832b413' i: ~" v$ Y. x% ]

9 r- ]3 [: j1 f$ C0 i+ Frbd_pool=new_volumes
: q: Q; ^; o+ b+ d, ?) U, G" h- `: M" \/ o( H3 D
host=cinder.vclound.com5 J: ?. G$ N8 M( J% B' K; Y! }: Q; ?

, O$ T; X7 P  o# m1 y
 楼主| 发表于 2021-1-14 23:28:30 | 显示全部楼层
在ceph监视器上执行
8 C# E3 z* z' H8 X0 iCINDER_PASSWD='cinder1234!'# y  B/ {0 d, p: S  `! C
controllerHost='controller'1 j) G. G' H! B9 _
RABBIT_PASSWD='0penstackRMQ', Q) i% }+ ]4 _$ g$ V. o8 C, a
6 x+ F, B7 d  e0 v
1.创建pool池
' f& Z! Z6 E0 I# i1 E. E: x1 V" q为cinder-volume服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1)
3 R9 b6 v. B4 L1 B+ n/ W, Q. e% Uceph osd pool create cinder-volumes 32
; i; @" J. ~, U+ dceph osd pool set cinder-volumes size 1
+ R" S$ ]: t# O4 ^ceph osd pool application enable  cinder-volumes rbd
. ]. T; X3 D! \* rceph osd lspools
5 O( v- b" b- D8 `. t. C( R" w6 k
2.查看pool池的使用情况
3 w6 J* i" \8 b4 I: Gceph df
7 h0 ~9 a" l& r! N4 q# V( G8 P( W7 F2 Q) H
3.创建账号, h+ w! a1 X. h+ s! s' k
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* A  e* b+ |% Q' G" o, K& y
#查看& |! c7 f+ |: o9 L- h* U2 \  v; c
ceph auth ls | grep -EA3 'client.(cinder-volumes)'
6 ^  i( D8 Q) F5 x1 T# Q: [% L9 Y" J! |. F4 `, N" o: J  m
4.修改ceph.conf配置文件并同步到所有的监视器节点(这步一定要操作)
1 z% j, V0 T+ hsu - cephd % Z, O8 O3 {: E* v0 X- u$ o# b+ ?
cd ~/ceph-cluster/0 X; ?4 W* L; h: v, \5 Q" v
cat <<EOF>> ceph.conf
$ t4 h9 k% L( A" T% u[client.cinder-volumes]
/ t; C- A3 c; [0 ^1 ?/ n$ Vkeyring = /etc/ceph/ceph.client.cinder-volumes.keyring5 m  d- E" A5 _1 R$ T( I
EOF9 l6 n# f% F6 e3 e+ d  ^4 H
ceph-deploy --overwrite-conf admin ceph-mon01
. V* z& c1 _1 |/ b$ a' Xexit5 F! H" V+ m) A+ }4 r% R
  r1 N" l. o' t6 F! ^
5.安装cinder-volume组件和ceph客户端(如果ceph监视器是在控制节点上不需要执行这一步)
, d0 q5 D5 q: i8 {' C- \# hyum -y install openstack-cinder python-keystone ceph-common% Q* o& {4 o, d4 i" ~4 c; }& G

& |0 C! I3 d! t5 K* |2 s6.使用uuidgen生成一个uuid(确保cinder和libvirt中的UUID一致)1 I  l3 h0 a5 N
uuidgen
1 _# L+ I1 W& o5 [运行uuidgen命令可以得到下面的UUID值:
' b8 r, `) Y4 H, M/ G& Q; T$ O; H/ j) b  \- S0 z8 i
086037e4-ad59-4c61-82c9-86edc31b0bc0
, u$ d) f/ K6 E; ]8 W9 _7.配置cinder-volume服务与cinder-api服务进行交互" X+ i, ~3 B8 S$ E5 c$ |$ z
openstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url rabbit://openstack:${RABBIT_PASSWD}@${controllerHost}:5672
" ~$ U. I; P! o  Fopenstack-config --set /etc/cinder/cinder.conf cache backend  oslo_cache.memcache_pool
4 H3 k4 K2 ^. Q) g- u; eopenstack-config --set /etc/cinder/cinder.conf cache enabled  true! x/ J7 b) q6 o/ l' h- x. f
openstack-config --set /etc/cinder/cinder.conf cache memcache_servers  ${controllerHost}:11211! @* q; N  O. X1 a6 s7 n: {
openstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone) A# ?8 z$ E' u% `
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_uri  http://${controllerHost}:5000
# H1 F, X% _+ @/ S3 u, o* Q0 }openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_url  http://${controllerHost}:50004 D9 t+ _( Q8 ]4 A- e
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_type password
: v  P, X8 X( C! ~; g9 Gopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_domain_id  default
3 N; \1 t0 S' y. Bopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  user_domain_id  default! h/ ?0 X8 G! d5 u% B
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_name  service
+ ^, T7 X" O3 O6 Hopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  username  cinder
; e! _& ^  m, J& W7 x" Copenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  password  ${CINDER_PASSWD}" e- \' N: o- x% r! G
openstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/cinder/tmp
* Q  k4 l6 N* n& S3 n5 h! \! n% L* h& {* N! K0 i* h- ^  W! n. b, g
8.配置cinder-volume服务使用的后端存储为ceph
. u- x5 L; ~8 ]7 O* y" zopenstack-config --set /etc/cinder/cinder.conf  DEFAULT  enabled_backends  ceph
; T- I+ X$ }1 M8 M) l# z4 [$ F1 f: M* F) {$ [, m$ o
9.配置cinder-volume服务驱动ceph
( G9 B1 s* k; I$ a& w6 W8 W- ^; Sopenstack-config --set /etc/cinder/cinder.conf  ceph volume_driver  cinder.volume.drivers.rbd.RBDDriver
- y, \, f! Z6 ?: H2 jopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_pool  cinder-volumes
5 ^" W% b+ y% B) T6 |1 |4 Q, d! hopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_user cinder-volumes
. w; u' \3 L2 Z& o0 t7 mopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_ceph_conf  /etc/ceph/ceph.conf
- a/ U7 K' j9 `( @/ e5 F# oopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_flatten_volume_from_snapshot  false 8 @* T2 h1 w. }2 X6 L. I% m' r7 b7 y
openstack-config --set /etc/cinder/cinder.conf  ceph bd_max_clone_depth  5 5 \5 ^4 N: x' H8 c" m% E+ ~
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_store_chunk_size  4 4 {: Q5 s8 L. P& w. O( ~0 c6 e
openstack-config --set /etc/cinder/cinder.conf  ceph rados_connect_timeout  -1
. m3 u* Q) O2 b$ ?' y8 t0 Jopenstack-config --set /etc/cinder/cinder.conf  ceph glance_api_version 2
; V# }& ]& K5 a" E9 d, {* eopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_secret_uuid  086037e4-ad59-4c61-82c9-86edc31b0bc0# q$ x, u+ b+ T% K+ I6 @# x
2 U% G( K( ]0 s6 x$ w
10.启动cinder-volume服务
% `9 M3 n$ c$ y4 L9 }( D+ hsystemctl enable openstack-cinder-volume.service! O! e5 U4 \7 \) Z
systemctl start openstack-cinder-volume.service% z) F+ t- I2 t; Q' F
systemctl status openstack-cinder-volume.service1 N: t# e2 N* X0 x9 F% ~, e. k+ e# V* t
  l. X8 y4 e9 j. n! H/ S2 X
在需要挂载ceph卷的所有计算节点上执行- W" ]% I! ?9 b0 G
1.创建secret文件(UUID需要与cinder服务中一致)
! U! h  E( x( Z- M& G1 Jcat << EOF > ~/secret.xml
8 ^0 V6 C* r& }) W( C<secret ephemeral='no' private='no'>
4 E5 g$ _/ ]) y9 k2 t0 l: p     <uuid>086037e4-ad59-4c61-82c9-86edc31b0bc0</uuid>+ c% Z$ K1 r6 c  A3 a6 Q
     <usage type='ceph'># ~; U* T2 B* C- W
         <name>client.cinder-volumes secret</name>* J4 z( D# m4 K; V+ e; I3 W, d& l
     </usage>
" x+ N9 R" J" S8 b; R3 H</secret>
, W! ?8 ]' C" o/ e6 F7 SEOF# d5 g* a& `5 s/ v( P9 N; O
1 O' B7 Q" M$ P4 }- I9 y, t
2.从ceph监视器上获取cinder-volumes账户的密钥环% i1 \+ G8 Z' |, f( q* ~
ceph auth get-key client.cinder-volumes
' J" _- d2 h8 l9 h% I( a. c, ?得到如下的结果:
4 F; D( {. F" zAQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==
! K! H7 g# }) E, z" V" g  J) ~* F+ Z' e; m8 S# }  [
3.在libvirt中注册UUID7 b  h9 s4 ]2 ~  Y4 f
virsh secret-define --file ~/secret.xml
/ R  ^. n4 S2 I% i5 G( ^1 k# T' a4 ]" J$ O* t- A
4.在libvirt中添加UUID和cinder-volumes密钥环  v7 L, s* x* Z- C+ E
virsh secret-set-value --secret 086037e4-ad59-4c61-82c9-86edc31b0bc0 --base64 AQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==
+ `7 w* ]4 {) `2 \& T9 g+ H/ K+ u# @
5.查看libvirt中添加的UUID
- {! @6 M- P6 K( g' Hvirsh secret-list$ S! t- P2 D; a# O' U  I- n
- t* B/ f% R6 ?: B' m
6.重启libvirt
0 l. d& D0 e3 k+ g$ \5 g, _: W! hsystemctl restart libvirtd.service! ^3 l3 J  j- }# m
systemctl status libvirtd.service
. G! y& H! [" N" K6 @" {6 X+ e$ O& f1 D, J6 T% |0 n0 D
出错回滚的方案
" r. p- E6 S0 I8 G1.删除pool池
+ F5 K. w4 o! o7 E; x先在所有的监视器节点上开启删除pool的权限,然后才可以删除。' d. |6 P1 ]9 D. p/ ]9 ~4 D& a( E
删除pool时ceph要求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。% B4 s* `3 }" N( Z! `4 w
echo '. ~9 t! Y2 _5 p! e: ~
mon_allow_pool_delete = true9 r# k6 B7 E" W. F+ {7 h
[mon]
( Q. n& C/ c5 ?; `# Pmon allow pool delete = true0 t5 P8 j& g* T. T
' >> /etc/ceph/ceph.conf
, J+ ?7 S" m8 A+ z$ k$ Ksystemctl restart ceph-mon.target
9 Y. z2 f( U" W. Uceph osd pool delete cinder-volumes cinder-volumes  --yes-i-really-really-mean-it" D" i. T2 M/ `1 K, @8 G
' B. G4 w2 }$ ^- y
2.删除账号6 d" D; \0 X/ P# p
ceph auth del client.cinder-volumes" j/ z& D. T: |' ~/ p) @
6 e8 v. D9 i" A
3.删除libvirt中注册的UUID和cinder-volumes密钥环9 s1 N- }1 X) l# y
查看:
8 L* E& j+ ~# @, J, Rvirsh secret-list
5 G& Q9 A; y  J8 P删除(secret-undefine后跟uuid值):
3 H  ?- J) ~5 v% ]! Bvirsh secret-undefine  086037e4-ad59-4c61-82c9-86edc31b0bc0
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

如有购买积分卡请联系497906712

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

GMT+8, 2021-6-20 19:59 , Processed in 0.053242 second(s), 23 queries .

Powered by 龙睿 bbs168x X3.2

© 2001-2020 Comsenz Inc.

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