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

易陆发现论坛

 找回密码
 开始注册
查看: 3631|回复: 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
9 b& D! B3 P, T) X! n
. r$ Z! T. }' P: _4 a4 G2 U1 }. ]0 x; r5 \$ z! a
       health HEALTH_OK
) n; U: _: C/ Q8 P- a' _4 }
+ m+ i5 i7 J' `( S7 \3 L+ b. `
7 i) Z& K& t0 Q) f* K- v7 V' 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 7 C7 T3 e7 ~' }: w# e

2 y! P  T4 h0 s3 s5 B/ A5 C9 W* a7 U. ^# h  K
      osdmap e170088: 226 osds: 226 up, 226 in
) b0 D. d5 j6 K) K  P& Y3 t, e
  D& |; R& h: y" m6 m, {/ }2 y4 q+ v5 k0 P3 n9 v. A
     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& B3 n4 F3 W, r8 r9 A3 t( i) 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 & b7 h9 v, p4 W7 a( N2 S
  2 W9 t% A% z4 D* i1 m3 Y3 @, a
    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 $ [2 E0 ^8 j8 |! [7 T

$ ]9 w: g! P4 b- ^9 ~
) u( t1 E# G7 M) R   osdmap e559: 264 osds: 264 up, 264 in flags sortbitwise ' D9 q  B& x4 {) G. x
* q* U1 n' H5 [* b& d! v# ]& s
9 ^) ]& Q* X- I0 T7 v
   pgmap v116751: 12400 pgs, 9 pools, 1636 bytes data, 171 objects 25091 MB used, 1440 TB / 1440 TB avail 12400 active+clean
9 k4 _' w: p8 s% r/ _+ scinder 配置

对 cinder 服务端进行配置

/etc/cinder/cinder.conf


4 K- K& v8 ~; a

enabled_backends=CEPH_SATA,CEPH_DEVELOP...# V7 D  n# l* i- ~0 o: D8 ^
[CEPH_SATA]% S$ U4 q7 k1 L; B  N% x8 R
glance_api_version=2' p+ B" ^) R' B

! P+ Q% J, Q( `, m. |( avolume_backend_name=ceph_sata
3 {( S; j7 L$ S, X( c4 O
: n/ u8 J  ?; B2 `. [+ X& frbd_ceph_conf=/etc/ceph/ceph-volumes.conf
; X( ~, W4 i  a
3 N1 R: N( m' O, V$ k; M% urbd_user=cinder
5 L8 j1 ~* Q  M8 A5 j6 m
. P$ ]0 q& _6 q; }8 `% X+ T, Grbd_flatten_volume_from_snapshot=False
9 k$ [2 o5 E# S! M* X% _
% [# v" {8 I4 y2 K7 n9 e5 `0 Trados_connect_timeout=-1
8 Z2 l/ i1 f1 X: A# Y1 M# h# }2 ^( ^
rbd_max_clone_depth=54 `+ z$ M5 P4 C

6 _- N" c1 ?# x7 s% v+ cvolume_driver=cinder.volume.drivers.rbd.RBDDriver3 m. L" N7 f9 H
" j' J2 G3 h, n- z
rbd_store_chunk_size=4
& q8 n( l) ^& o) e3 H" @0 G: }8 N- B4 [
rbd_secret_uuid=dc4f91c1-8792-4948-b68f-2fcea75f53b
1 J. l- D- h5 B1 B* X3 X( E) T- d- g9 P2 K' N
rbd_pool=volumeshost=cinder.vclound.com  R6 l; ^9 e0 k2 o

4 S" |. E( D0 d& H# F7 }# ?6 M$ @[CEPH-new_volumes]' r) W8 O9 ?$ ]" y, n
( T1 v& @. l% t% e  w
glance_api_version=2
6 b) |& y2 p7 d/ h" a2 W  v4 Z% F9 J$ A, |. T4 `1 q# K' Q8 w5 _5 o
volume_backend_name=ceph-new_volumes( j; G( p9 l6 s# f. M
2 o7 q, X& N" @' X$ ?1 t
rbd_ceph_conf=/etc/ceph/ceph-new_volumes.conf
( E2 O  l' z# Y3 L0 k1 L* C& T* \2 ^) B1 H- Y& w
rbd_user=cinder/ I& T2 n; T/ t1 J7 T% [
- X0 ]( E; o& q- C
rbd_flatten_volume_from_snapshot=False- h7 w" \; _# S& d# n  ~2 g# B
8 |) b9 ~4 @# `+ V* Z( y2 J
rados_connect_timeout=-18 M) U' a" w: Z4 c* j1 Y3 F
* n/ Q5 G4 ]$ X; r& R
rbd_max_clone_depth=5
, i7 H& J! b2 K# d1 s2 B7 m: V$ U* _
volume_driver=cinder.volume.drivers.rbd.RBDDriver7 h8 ^/ {1 H/ Y2 ?- \5 r3 d/ C. y8 F
3 j2 K9 M7 K  C
rbd_store_chunk_size=4+ ^8 T) f: N- @6 l, {, F, Q
0 o8 g2 S! W2 Y1 U) d) f( ]
rbd_secret_uuid=4bf07d3e-a289-456d-9bd9-5a89832b413; r7 m; S. I* r( \3 v
3 L1 J! \9 Q" N/ q6 o; x5 Z
rbd_pool=new_volumes
7 w4 t4 l  O4 n+ z  X9 K' @' s( @0 r, W7 p5 T
host=cinder.vclound.com+ T: r& O9 S0 q7 g) ^. w/ M( V

/ |* g0 `  d. O9 z
 楼主| 发表于 2021-1-14 23:28:30 | 显示全部楼层
在ceph监视器上执行
- X& K& Z# {& w; x% jCINDER_PASSWD='cinder1234!'
1 H! S5 p, o0 G! a) a  LcontrollerHost='controller'
3 M* }5 M7 N  D+ [* K3 s/ VRABBIT_PASSWD='0penstackRMQ'% o8 G1 ~0 i* D; E, J& J5 n) }

4 D- A' y, s$ [# p7 @) ]0 v& k1.创建pool池. O% x7 Q2 N' m; m
为cinder-volume服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1)
7 h. I6 l1 H: m( \- V* c1 |ceph osd pool create cinder-volumes 321 F8 {/ k+ Z) j, x3 w5 ?7 U4 B
ceph osd pool set cinder-volumes size 1
" y% |' V! M  ^; k" E2 Oceph osd pool application enable  cinder-volumes rbd 8 x; S4 i/ V/ u" p' G; A% L; T
ceph osd lspools
# {3 j0 q0 J( F3 H& {4 p
; _+ b& A5 r1 ]5 o: [3 w/ D2.查看pool池的使用情况
% ^- a+ m+ {% `" ?, vceph df
1 \$ A8 A$ Y" l: ^8 ?5 ~) I/ Z6 Y' O& k8 \. c
3.创建账号
6 c' K$ M% y. X! rceph 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
  i( v* d) i" R& A) V; K#查看
3 C" q! {: o" g) Yceph auth ls | grep -EA3 'client.(cinder-volumes)'; I6 ~& K0 X: g1 R
! b, I% o% f# D% V7 z. f
4.修改ceph.conf配置文件并同步到所有的监视器节点(这步一定要操作)
* }# v4 Z9 G4 F  G' P. `% y, d0 E$ vsu - cephd
7 y1 {8 v% A* j* [6 kcd ~/ceph-cluster/
* x6 j  w. [* f5 h0 U4 @( Vcat <<EOF>> ceph.conf
2 ]! S9 J, F9 Z[client.cinder-volumes]
8 j% g* a$ A* I% T0 v# P9 }( Zkeyring = /etc/ceph/ceph.client.cinder-volumes.keyring
& m+ L4 c- d% p1 e8 qEOF
5 o3 R( A' `! ^* J5 e( oceph-deploy --overwrite-conf admin ceph-mon01& p( {; Z* @8 b9 v" G  ^6 e
exit
7 L5 S* f  m8 \0 u3 _# a$ b7 Z/ a2 w
5.安装cinder-volume组件和ceph客户端(如果ceph监视器是在控制节点上不需要执行这一步). q- g& N  j5 F( y
yum -y install openstack-cinder python-keystone ceph-common8 H9 ?' U" c' g5 ]% C* v
' L0 n0 }2 S7 W# W- F: [  T
6.使用uuidgen生成一个uuid(确保cinder和libvirt中的UUID一致): D1 u7 C+ s! e+ N/ G
uuidgen3 |' }- G) I2 [  V0 v0 E- J
运行uuidgen命令可以得到下面的UUID值:% k/ Z* E9 R/ W  e3 Z
6 z% r# S9 P: T0 ?- _
086037e4-ad59-4c61-82c9-86edc31b0bc0
8 i$ U: ~: D! }8 ?# x7.配置cinder-volume服务与cinder-api服务进行交互& R: F6 z/ A2 s
openstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url rabbit://openstack:${RABBIT_PASSWD}@${controllerHost}:5672
) x! R6 ?* K" N1 E1 Yopenstack-config --set /etc/cinder/cinder.conf cache backend  oslo_cache.memcache_pool8 N) r& E6 e9 o8 b- D
openstack-config --set /etc/cinder/cinder.conf cache enabled  true
' d5 u. N  L6 y: S( U9 P! Lopenstack-config --set /etc/cinder/cinder.conf cache memcache_servers  ${controllerHost}:11211
7 R/ t# g8 k. ~% {openstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone2 m% a/ k, ~; N9 u- j. _
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_uri  http://${controllerHost}:5000- k( Y# r3 N: v2 U. f2 K" f5 f+ U/ e
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_url  http://${controllerHost}:5000
- |$ r! G" L5 l. w" C0 [openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  auth_type password
5 ]- c& R5 w- D. V5 E/ hopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_domain_id  default
% g8 `  T1 b1 Gopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  user_domain_id  default. _6 f8 T. j/ _* ^8 z
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  project_name  service
3 U0 z! J% g3 G0 [5 u0 S! oopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  username  cinder
3 A4 K% G& ~+ Lopenstack-config --set  /etc/cinder/cinder.conf keystone_authtoken  password  ${CINDER_PASSWD}
( ]1 x: Z6 d4 H, t/ b7 `" `openstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/cinder/tmp% j2 l9 Z# k3 }

2 ^' `2 E, J- {1 Q+ o8.配置cinder-volume服务使用的后端存储为ceph
& @( Z9 t* s4 u$ y& {" w  g$ Dopenstack-config --set /etc/cinder/cinder.conf  DEFAULT  enabled_backends  ceph
+ m$ A4 P4 b: E# ]: S. s- C* y5 `* j" [3 y0 A$ M6 I
9.配置cinder-volume服务驱动ceph
7 h9 z; G  H+ Uopenstack-config --set /etc/cinder/cinder.conf  ceph volume_driver  cinder.volume.drivers.rbd.RBDDriver 8 ]; g7 |! g0 `9 I8 v* s  S2 e* o
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_pool  cinder-volumes
* J9 n3 {' y) Dopenstack-config --set /etc/cinder/cinder.conf  ceph rbd_user cinder-volumes
. H9 R. h6 @5 z5 D7 I+ c! \openstack-config --set /etc/cinder/cinder.conf  ceph rbd_ceph_conf  /etc/ceph/ceph.conf 4 C4 a  g* T! o
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_flatten_volume_from_snapshot  false
. n7 g9 J: U1 G$ p1 z/ sopenstack-config --set /etc/cinder/cinder.conf  ceph bd_max_clone_depth  5 ) Z% ]% z$ W' ?
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_store_chunk_size  4
9 T, ^0 C/ v, V# H5 o' Sopenstack-config --set /etc/cinder/cinder.conf  ceph rados_connect_timeout  -1 9 B5 }; o9 U4 h. E7 V- G
openstack-config --set /etc/cinder/cinder.conf  ceph glance_api_version 2/ z# i' P4 r* R7 |3 ^
openstack-config --set /etc/cinder/cinder.conf  ceph rbd_secret_uuid  086037e4-ad59-4c61-82c9-86edc31b0bc08 f0 T4 Y. P1 c

6 Q# U* o4 ~9 v' p% N10.启动cinder-volume服务) U6 g$ {* C9 P( s$ T" E
systemctl enable openstack-cinder-volume.service
1 O( G. c8 }1 P& |4 H# Xsystemctl start openstack-cinder-volume.service5 z/ C) y( x  T& R& O( v
systemctl status openstack-cinder-volume.service
9 X7 d% R3 d1 W- L" j. r9 m- _! s6 F' E* H/ `4 P- q
在需要挂载ceph卷的所有计算节点上执行
+ A/ X0 T% S  G# ]5 e0 v- @1.创建secret文件(UUID需要与cinder服务中一致)
/ r* I/ b$ r; Ecat << EOF > ~/secret.xml
* s% ^) X% B! Y0 U) ~! \4 y6 |3 B6 p5 C<secret ephemeral='no' private='no'>0 n! D  T) X- O6 Q4 S( J. v
     <uuid>086037e4-ad59-4c61-82c9-86edc31b0bc0</uuid>
4 r, w' B, ~* {9 c. S5 Y$ F2 Y     <usage type='ceph'>1 n7 ?9 v4 \  ^: M
         <name>client.cinder-volumes secret</name>
% q0 H# d9 _; Y% @) L     </usage>( z. W+ V) S' L7 X. O! t
</secret>
) y7 T! g% E6 q& X0 l5 x8 g: r7 O2 EEOF" K" ?9 X  v9 Y  R* m

3 U0 X) C8 ]' V$ c2.从ceph监视器上获取cinder-volumes账户的密钥环
% {. @# T# ]9 U5 p0 i: `# uceph auth get-key client.cinder-volumes
8 e+ r, c$ S% [. \0 r  o9 E1 U  c得到如下的结果:" W( Z5 Y$ [/ }3 _
AQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==( U/ h3 Q# J6 g3 n, r+ |
+ P" G! G; n. i5 u$ g
3.在libvirt中注册UUID
4 u8 x6 w4 Z% b0 @- `" u7 lvirsh secret-define --file ~/secret.xml
) [. D7 ^% u* b% u* y$ f' D4 ~4 R5 y1 ^% u
4.在libvirt中添加UUID和cinder-volumes密钥环
% {$ [$ F7 D1 Uvirsh secret-set-value --secret 086037e4-ad59-4c61-82c9-86edc31b0bc0 --base64 AQCxfDFdgp2qKRAAUY/vep29N39Qv7xWKYqMUw==' _2 p" w2 t4 c7 U2 d

- R( l7 H; m: ?3 X7 |' l9 R' b5.查看libvirt中添加的UUID" G7 P2 e- R2 X0 l1 J* Z. v
virsh secret-list; P2 V( C. E8 o5 g: ^& N

( i& g$ J( o" A1 n7 t6.重启libvirt
! U4 r& N& F0 N: Z. s1 msystemctl restart libvirtd.service4 N: U# G  k! q( T2 e
systemctl status libvirtd.service
9 M# i$ a& B9 }& l; ?) ]) K& A" c. V% d, B
出错回滚的方案
8 W# a- t' V2 `1 \  c4 s4 g/ f1.删除pool池
' _  o% x/ M6 h3 C先在所有的监视器节点上开启删除pool的权限,然后才可以删除。8 z, ?5 S! ]: l
删除pool时ceph要求必须输入两次pool名称,同时加上--yes-i-really-really-mean-it选项。
. T$ s  `! o& H7 Recho '
5 Y8 q5 Z' C3 w' nmon_allow_pool_delete = true
# x( t6 @& f: a9 N- e[mon]
0 q. z$ p& y; T$ Z( Qmon allow pool delete = true
- C, l  d% V5 s, H2 h- l' >> /etc/ceph/ceph.conf
( p" [/ k; F6 Y2 g7 g. Asystemctl restart ceph-mon.target
9 s& w8 d' v3 z5 n- ~3 P* c3 Pceph osd pool delete cinder-volumes cinder-volumes  --yes-i-really-really-mean-it7 V/ j( G+ g3 ?% {
" Q7 Y8 c. F. R" K  d2 u
2.删除账号
0 J1 v( a) J0 B' oceph auth del client.cinder-volumes
) s6 s% ]( e, S# w
  D4 W% l4 u; f2 i  ]: o3.删除libvirt中注册的UUID和cinder-volumes密钥环
  x" V6 _, p( ~" g) M9 o% h# m查看:& o, e( K  m1 b; g) Y) |  O4 s
virsh secret-list+ e8 Q3 o3 I9 B+ B
删除(secret-undefine后跟uuid值):# u6 e7 i/ t' ?, R4 _& f
virsh secret-undefine  086037e4-ad59-4c61-82c9-86edc31b0bc0
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

如有购买积分卡请联系497906712

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

GMT+8, 2022-5-23 22:40 , Processed in 0.044029 second(s), 21 queries .

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

© 2012-2022 Comsenz Inc.

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