找回密码
 注册
查看: 5874|回复: 0

Ceph和Openstack的cinder模块对接方法

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-10-6 15:16:52 | 显示全部楼层 |阅读模式
1.创建存储池
* U6 W  t& t3 z" T7 W 在ceph节点中执行如下语句。1 i$ M9 r0 K1 `4 _6 R

$ A6 E* u- |" k: k9 g8 Q$ e: {# L#ceph osd pool create volumes 128
' {/ V( ^8 D) Z# T回到顶部9 h& t2 B+ h3 ^! X9 _
2.配置 OPENSTACK 的 CEPH 客户端
, `' L% d! _( s9 k7 Z在ceph节点两次执行如下语句,两次{your-openstack-server}分别填控制节点和计算节点IP。
# c! T, R3 r1 |8 k' k* N$ a1 S6 o8 y0 x
如果显示在控制节点和计算节点中没有ceph文件夹,则在两节点中创建对应文件夹。
/ m  B* t4 @& M0 T- L( [# B0 Z2 Z8 `3 D2 Z
#ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf7 h* r6 A8 A2 V  U2 w1 n. [' _
回到顶部
" q& r5 _$ j/ h. L& B1 x- ~8 u3.安装 CEPH 客户端软件包# V' J+ Q) }) A
  控制节点上进行librbd的 Python 绑定' p# O0 G7 F' x- F- ~

) M( q  x  u  m# a. e' `& ?) l#yum install python-rbd& z, a: \. T1 a' w7 W0 A2 d9 w
计算节点和控制节点进行安装 Python 绑定和客户端命令行工具6 i4 R. d+ F: H6 g' _
* }- |# q9 d1 s
#yum install ceph-common+ p5 n) b" U; }9 x: g2 I! ]

- ^' I, c* L! Q2 c; H#yum install ceph
9 D  K6 L) S* [# ^9 I回到顶部
* a; s; d5 u, S9 k5 b; A6 V9 [4.配置 CEPH 客户端认证9 ~/ W# x4 E4 z6 c7 A% s
在ceph节点为Cinder创建新用户
8 G7 Z! F! ?. v# c' B5 t* U' c: e, h% r/ j8 U
#ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'3 {' C5 `/ i0 x- i3 k1 S% ~
在ceph节点把 client.cinder的密钥环复制到控制节点,并更改所有权,{your-volume-server}和{your-cinder-volume-server}处填控制节点IP。5 m7 d! T  f) v
1 C( W: e3 P! E9 q# h' P: R
#ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring4 y9 C9 N6 ^* Y
7 ^& Y, x; \% m& o! Z" G
#ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring 4 ?! a4 r4 Q% u0 P: r. Z
在ceph节点执行如下语句{your-nova-compute-server}为计算节点IP。. z" H8 G. l5 ^- Z% Z$ V7 Q

1 G4 j, ?3 E7 V. t#ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
& r/ N/ o) D4 X9 i5 E5 ?" X在ceph节点把client.cinder用户的密钥存进libvirt。libvirt 进程从 Cinder 挂载块设备时要用它访问集群,在运行 nova-compute 的节点上创建一个密钥的临时副本。
" _4 a1 y0 \; ~4 C, S! C" n- p) {& F
{your-compute-node}为计算节点IP。
" \* T. m, _6 j4 c" E) Q7 B# A( h3 O) M  ^: ]7 o
#ceph auth get-key client.cinder | ssh {your-compute-node} tee  /etc/ceph/client.cinder.key
! L8 s+ O; l! U( j5 m9 t
1 S4 v: u3 V2 h3 v( J) f/ V0 o在计算节点上执行如下语句,把密钥加进 libvirt 、然后删除临时副本。/ {) L5 q( \7 P3 ]: h$ i) Y

# a7 l: _. u+ h) F( a$ r#uuidgen2 u1 r7 z$ l6 I4 n1 C* z! @, s
记录下产生的数字,将下面的UUIDGEN替换为该数字,并在计算节点执行下列语句
) [% W1 P3 F3 N5 q! k6 v( i5 R; z- z0 A" r9 @
cat > secret.xml <<EOF
1 F4 e) f% U. B; X6 }
0 }  X+ G# Q6 h' f) R<secret ephemeral='no' private='no'>
8 Q- r# R* w1 b- W9 P& X7 D, W! `/ e5 s* P
  <uuid>UUIDGEN</uuid>! W+ ]# ?- E2 i4 i
6 I% D" q- m) _( v; E4 r
  <usage type='ceph'>" E, {$ }7 }7 l" J' O. L8 f  e0 [
7 y, \# k+ b  U7 y
        <name>client.cinder secret</name>6 r, `4 m7 E( ^, j- k$ L$ L
# Z* w% F2 K4 G7 |
  </usage>
3 {+ _. Y$ F" m! x4 w$ V1 k( m) m4 C$ D: z, \) ~1 w
</secret>
8 z& a% X# L) Y1 l# i, S. p1 q5 c* F, i" i
EOF
, \% I7 [0 ^) C! Y8 H3 d#sudo virsh secret-define --file secret.xml3 z% B$ `# I6 }( m
' }" h- Q. F2 k3 S; }$ N
#sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
+ u- f6 p9 |$ V# Z  M. `0 H/ M' Z执行完后,记录好上面产生的uuidgen,下面还会用到。
* Q. L! v/ i4 f6 G  @" t! @2 I
0 a; ]* {: U. T' u# i1 n回到顶部
, ?7 P5 m9 J9 n& U% g; W5.安装并配置控制节点6 u, ?. A. {- V  m4 A" e6 L8 \
5.1先决条件
) D9 j8 J# k5 F* |# D  T$ _) x# s/ X" X1 f9 J6 S8 }) Q
在控制节点完成下面的步骤以创建数据库:! B% \7 x% j$ L' r, n6 |2 {
  B; N' N$ ]$ i' T! \6 \
用数据库连接客户端以 root 用户连接到数据库服务器:. I  c1 x* W- |* T( ]3 a" A% ~
( x& [+ M- l  Z4 y$ ]% M3 E, m
#mysql -u root -p
2 |' }: X9 f% l' w创建cinde数据库0 X: j" m% n6 o+ t

) ^' L0 }2 P/ C( G, |; k4 |#CREATE DATABASE cinder;: t; O) {2 Y1 I+ I( ?
配置 cinder 数据库的访问权限,下列CINDER_DBPASS用合适的密码替换。- l0 b8 c: v" ]5 }# i  ^9 o) \

" ~' M5 U5 Y% u  ~% L9 e! x3 ^#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
! m0 y! C" m% t! b) D
" D: \. o! s; O1 \2 {  IDENTIFIED BY 'CINDER_DBPASS';
$ h  `3 S, i) Q. h* \
" N! m4 ~: Z+ j#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
0 x, k5 }2 m7 \  t" u* }7 y3 f" T6 W8 i# j/ l
  IDENTIFIED BY 'CINDER_DBPASS';& z1 a  ?4 ?, L+ p
退出数据库。
) }5 X( o% b& n2 ]' J* _% ?( e
- L! ^4 r6 d( G获得 admin 凭证来获取只有管理员能执行的命令的访问权限:: h5 Z" O- G% m. q/ z2 |

. L$ ]( Q% Q. G# . admin-openrc; m1 f* ]. m. d- O+ K4 ~
创建服务证书:
6 l: v4 b- A2 u3 h# U! A* m* E
; O4 N( h0 x$ y) s. t创建一个 cinder 用户:% k  I1 o3 ]6 }0 L# `

# [/ ?" m: h5 G0 P! k: g; l#openstack user create --domain default --password-prompt cinder
( _9 F! n' n" I  ?) w5 e添加 admin 角色到 cinder 用户上。2 \( F( X1 _+ Z9 d. j/ Y" R8 s
6 j% r8 d9 h) O$ U1 g7 y/ u# j
#openstack role add --project service --user cinder admin
* E  k8 ^5 s, z; s, E& R* h创建 cinder 和 cinderv2 服务实体:- R. f1 ~  @/ v6 v

: s4 `$ E# f- f$ l' o7 Z% x: t  p#openstack service create --name cinder \
; K! q) S+ F: }/ R
, I8 w/ z$ T% `1 J( F  --description "OpenStack Block Storage" volume
+ P0 e8 C1 ?" K! v
. S4 b5 G. b( j8 p9 `  Q* N; q8 A: H5 r# o#openstack service create --name cinderv2 \
; y0 O5 D/ e! D$ u4 `7 [, [1 E
  h& a, O4 d1 F0 F6 _( k& ^5 T& a  --description "OpenStack Block Storage" volumev26 k5 P1 j6 u( I, i9 g; P

( U" j; ?( X" x; y& Q5 T' S; P" W" t! K# r, p
创建块设备存储服务的 API 入口点:' ~+ i$ E4 m& h8 ^; Q6 Q
- [: T' u! P- q% v
#openstack endpoint create --region RegionOne \) f# W' b; S9 ?# Q( d

1 o: _& @. J% i* v1 C  volume public http://controller:8776/v1/%\(tenant_id\)s" L% h& R) ^$ A

3 _. x' ]: n& w# i. D#openstack endpoint create --region RegionOne \. a: ?& \' J# j' R' [. j/ [: y

$ O, k3 Q: u  _  volume internal http://controller:8776/v1/%\(tenant_id\)s7 B# ~, e" I2 A7 x5 S3 }4 p

# C0 `  h: c) E  Z#openstack endpoint create --region RegionOne \
  @4 J& i% U8 m- [  @
2 C* S) X; h. u3 {6 g( U  volume admin http://controller:8776/v1/%\(tenant_id\)s: u" |3 S0 H( F& `

- L1 f' G* m9 W7 B4 n#openstack endpoint create --region RegionOne \5 b, d9 w7 J% J

$ d6 E% k2 P/ @5 m8 m% [  volumev2 public http://controller:8776/v2/%\(tenant_id\)s# B: P! t9 F. P

9 ]; U1 `6 }4 Z2 g# c#openstack endpoint create --region RegionOne \* k1 S- H  B" g* L

; |; Q( m# e! Y  volumev2 internal http://controller:8776/v2/%\(tenant_id\)s; Y4 l& P3 D2 h* [! P' F
& i" x: c) _) [9 d* J7 P
#openstack endpoint create --region RegionOne \- h8 h* e! x+ o' U7 g
) E& K% Q- D. U+ j: L" F. h
  volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
+ J! w2 y- s0 K& Z9 G- w5.2安装并配置组件- C6 [$ m) H' R

* n: B- a% b( ^2 T2 ^3 }安装软件包
. \  c& }4 G+ r
! W# |  n! h. R2 I1 Q$ R4 i# yum install openstack-cinder
4 f0 T5 n6 j4 E9 `8 }) C+ @% L4 T2 g; O8 \9 O' ^* \4 V
#yum install openstack-cinder targetcli python-keystone
( N: L1 t5 f( Z- K在控制节点上编辑cinder.conf。
% p% O2 F& H3 P  ?6 V
+ o! H5 k" f1 P: ]& Y#vi /etc/cinder/cinder.conf; f  \- o% S- k# W

2 H0 W, g9 P8 I
6 q) ^% w6 D) v6 o& Z6 q添加如下内容:0 E2 r; C/ w- G' [& z0 ~7 B

4 Z% r9 E" o1 y  g6 ~注意:; z/ E+ ]. w# |( k
1.如果你为 cinder 配置了多后端, [DEFAULT] 节中必须有 glance_api_version = 21 U! A6 T7 K' a) G# t% q
+ ~8 [. S7 V/ Y0 v6 W/ b
2.[ceph]中的rbd_secret_uuid后面对应填的刚刚记录的uuid。3 v: C- N4 H* j! v0 q) G

1 G0 @' d4 ]- e6 ?7 \6 V' g5 H[DEFAULT]
6 O0 k& F; l. ~1 q! v2 w3 s& o9 A8 u
transport_url = rabbit://openstack:RABBIT_PASS@controller
  ]+ @; k. ^6 i) T+ k2 t  G$ @; [# o4 T( F1 R7 f" R2 R" P% W
auth_strategy = keystone$ N4 O4 r) i9 z$ \/ ]* d0 \

& H# p: Q6 Y! H/ ?* Q* e- V: nmy_ip = 控制节点管理网络的IP
1 Z9 F' z( w0 T( B1 D" U1 w
+ W$ j- v/ p/ _% h2 ]: [/ lenabled_backends = ceph* {1 T- x7 e* b8 L: G  C" p$ `

& e0 C" c! ?% ]2 X9 R0 H6 oglance_api_servers = http://controller:9292# m  h$ e5 T" O9 N
+ A) \- H; b$ K
. P2 G3 k5 h* T4 W# ~

3 M- A( _: X( l[database]
; c: _/ `8 v5 i) j( R
% \# x# b6 j+ N) Q) ~9 uconnection = mysql+pymysql://cinder:CINDER_PASS@controller/cinder7 O9 n7 _$ q& _5 w& v

8 d1 i- v- A, E/ n2 H3 F
2 J, K2 G" K7 B  j* E, W3 b
$ B2 j! g( l; u& h5 ~[keystone_authtoken]1 `, s1 t: y. j

7 l* m3 v; Z" Wauth_uri = http://controller:5000
+ L" l- S5 ^9 ~6 U4 F( G& g# E. ~* ]' k2 D" z( `  i
auth_url = http://controller:35357
& Z2 g6 p8 u* {- f% {
2 q  S4 L; o4 s& N7 h: k4 {% a5 Pmemcached_servers = controller:11211
) k+ |, i/ s( M
3 T  }1 p0 j9 \7 f+ F0 i8 jauth_type = password6 D! [0 g, u' v- v
- I3 _2 d9 Y) P+ b$ q8 O
project_domain_name = default2 A& F3 x' Y) V# P" W1 |0 y
* Q' t; L+ F# w* g
user_domain_name = default
: _2 D6 w! Z( O( g  E# h8 Y7 d- m- A5 m, U
project_name = service
( C7 Z; L* T) m5 u8 _6 U
1 f: F7 }: e# Y$ A, Y  m5 M, ousername = cinder$ Q6 y$ t$ _+ C- K1 h

. |& E/ w# U! Q% ^/ ~+ @: Opassword = CINDER_PASS0 \$ h4 [: @7 `# M+ Q( ?5 l" }

" B8 ~. I% w$ n7 O
- {- ]9 j7 g4 ^( A* x7 C' B6 ?
1 h' d; j$ m" H3 d: V" h7 t[oslo_concurrency]' p) Z  M! ^/ U; T' t# s* M6 C
2 o& S- ]: S9 d! j
lock_path = /var/lib/cinder/tmp
/ M$ S9 D0 F  t% s; n$ g0 I* C
4 i* E! |% x: s- Y$ c2 Y0 s% _% Q; T2 O2 J5 ~
[ceph]& w+ R1 G! @6 k) J) M
* c7 V8 G6 d$ }) _: K  }
volume_driver = cinder.volume.drivers.rbd.RBDDriver) ^5 n5 B5 h' g# B

) T/ h8 u3 A: T0 `- ?7 ]rbd_pool = volumes
2 a  U3 F5 }5 i1 \+ ^  ^3 z) y
/ Z+ h7 C% D6 G5 Hrbd_ceph_conf = /etc/ceph/ceph.conf3 `5 I# w/ J/ a- |7 c
4 q) j3 b5 |. N; W
rbd_flatten_volume_from_snapshot = false
0 v1 ]; A/ E5 e3 v  j. e. B% a3 |/ N
rbd_max_clone_depth = 5
1 X6 u0 v' b& J) c2 B; i" V
% {4 T9 {* X7 Q. ?rbd_store_chunk_size = 4: @* {! r" V  y+ L! B
  ~$ [) _$ }9 }) C# \. [( C& T) i& T
rados_connect_timeout = -1/ h. R* r  @, v; _8 B
+ X# q" ]7 [5 I0 Y
glance_api_version = 2
2 v3 K# A  _, e7 W) n2 P5 N% z: R
- ~/ G8 @5 k" ]+ Brbd_user = cinder
- N- r8 F! S" o' [  l; b, Y$ \- }/ k% n$ \
rbd_secret_uuid = a852df2b-55e1-4c1b-9fa2-61e77feaf30f
- W/ X* k$ C- y; H2 S编辑/etc/nova/nova.conf 添加如下内容:
& D3 w- @; o4 r% m5 t' u. x( a
( I1 p; P. l9 m  j  K0 y* d5 \[cinder]6 S& b5 F4 K3 W* D, p0 W. f2 N
# c8 {7 U/ U; l0 ?2 D
os_region_name = RegionOne2 U% K$ g& @* A
回到顶部
% }. v# L4 ~3 m+ F+ C$ G# n6.重启 OPENSTACK6 i' N- V5 O/ T6 _. w! }
在控制节点重启计算API 服务:# T- b( Z2 D; M1 E5 k
% t* R1 L/ T  o. C6 ~) D
# systemctl restart openstack-nova-api.service* r( Z; T& q$ g" O0 @* L, n" `
% W( B+ G  c9 m$ `

- k0 l* I6 d9 V! X# A7 }7 [6 {启动块设备存储服务,并将其配置为开机自启:. ?7 _; A5 f- ]4 y2 S3 ~/ b

( ?& N' D! F) G+ B# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service/ ~* ^% W  y. x4 ]
! f% \5 _( R1 Y8 q
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service( E9 Y! c+ Q9 J* z9 R

9 H' I3 }% T7 S# t" A$ d5 B" Y
( q' ^* C) B) L: u: P$ m启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:
+ A1 M% h" n* }; t6 n+ g; I6 W; W
( W. M: V; U3 p+ X- j6 l: i0 Q# H# systemctl enable openstack-cinder-volume.service target.service
' |& z2 I. @- ?* U9 c% G  n, I8 ~3 K' I8 d3 H# E
# systemctl start openstack-cinder-volume.service target.service7 J9 {5 _6 W+ Q

% E; P' L! f. C: l2 s2 o
6 l- H; h  g- ?$ J( q回到顶部+ b% G9 b; H; L& w' F
7.验证
# f) p( r4 @% G1 P在控制节点获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
" ~$ ?& Q/ {4 C' A& a3 A3 a$ h' C% k. c
# . admin-openrc
* r) `3 M, Z2 }1 d/ [4 m/ r列出服务组件以验证是否每个进程都成功启动:- x! F3 D; k1 l0 |& `( B) Z+ c

! Q2 R7 `# w$ i5 p, Z- J% N# cinder service-list; T' I! U5 L) c3 {( b4 S
并且登录界面后可以创建卷
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:02 , Processed in 0.021604 second(s), 24 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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