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

Ceph和Openstack的cinder模块对接方法

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-10-6 15:16:52 | 显示全部楼层 |阅读模式
1.创建存储池
& n7 h5 z3 a' B! m" K! n& { 在ceph节点中执行如下语句。
, U2 J+ |0 `9 e; f/ _
! r# b; q: W  R9 q( S6 n#ceph osd pool create volumes 128
+ t/ _6 Y* E# X9 A$ G回到顶部
8 Q6 s2 F% B& G$ \  P! D$ u2.配置 OPENSTACK 的 CEPH 客户端
! k. w; ?. p7 @在ceph节点两次执行如下语句,两次{your-openstack-server}分别填控制节点和计算节点IP。' |& t% x9 L' C- `- j  a" S5 X/ P: Z( z
+ r8 c- ]4 `, G' i$ v; Y. O
如果显示在控制节点和计算节点中没有ceph文件夹,则在两节点中创建对应文件夹。
7 ]. {7 P& {4 E2 N
2 R/ y( y8 h  v/ U% l( X  W8 z#ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf$ {; r: C. f, k1 f! Q1 h0 s+ @/ Z! b
回到顶部6 D* c& k& S; H; ?; ]& c2 ?
3.安装 CEPH 客户端软件包
8 O7 G( @, b0 O7 O! ^$ |  控制节点上进行librbd的 Python 绑定
" _  o& R5 P$ ^$ d" G& r# r: H2 F. a, u0 t
#yum install python-rbd
0 |+ g$ x+ ]$ Z$ T计算节点和控制节点进行安装 Python 绑定和客户端命令行工具
( e' C3 q- ]& {  I: c
% w! J* P, y5 b$ i3 ?7 h#yum install ceph-common, j2 g  T% L8 |0 z3 M/ B

4 x+ w$ M- W3 M3 R#yum install ceph
9 r! ^) W( a' X- k1 V& Z回到顶部  o/ @! ^& w( H, W
4.配置 CEPH 客户端认证
2 C) d! _: e  Y/ E在ceph节点为Cinder创建新用户" J- O7 Z: C$ _( [, Q7 L

! t- G9 o' j# A" y3 Z/ z2 d#ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'
# J) Z/ N! V7 {- C# r在ceph节点把 client.cinder的密钥环复制到控制节点,并更改所有权,{your-volume-server}和{your-cinder-volume-server}处填控制节点IP。
1 e4 Z5 E4 U' b$ l; ?! ~0 |6 b; Q9 a$ N  s/ S& v+ {9 H* k
#ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring. j1 V; ~4 `% x& s, w3 }
' _9 s% ~) l) V3 A( k
#ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
8 {7 ^3 g6 N7 [9 C0 s* E在ceph节点执行如下语句{your-nova-compute-server}为计算节点IP。
4 c5 C6 ]# {- i9 H! Y  ~  k+ }/ v% K* m3 U1 `1 |5 g0 t
#ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring- k% L+ B3 K7 c% U) [- T- |7 D' q' I
在ceph节点把client.cinder用户的密钥存进libvirt。libvirt 进程从 Cinder 挂载块设备时要用它访问集群,在运行 nova-compute 的节点上创建一个密钥的临时副本。
2 O+ |" m/ @. \2 d9 d6 X& n( F! s, \& k1 Q, F6 b* {
{your-compute-node}为计算节点IP。) u! V) a3 K0 M
% \- o% [" E# u; U% ]2 F* j5 ]
#ceph auth get-key client.cinder | ssh {your-compute-node} tee  /etc/ceph/client.cinder.key3 U( t3 S* W, g8 o# C& M6 H4 N/ |
! @/ D$ g: M( Z/ M- c, m
在计算节点上执行如下语句,把密钥加进 libvirt 、然后删除临时副本。
, o0 c, u& W# b1 T# r* z2 Z% e1 I, D3 q- D. |, L  l
#uuidgen; |, G8 s/ V5 T7 Y7 x4 w. d
记录下产生的数字,将下面的UUIDGEN替换为该数字,并在计算节点执行下列语句
! C4 n& N. G: @4 P  G0 \) y, D, _/ }" D+ p9 j% F2 I9 `$ K
cat > secret.xml <<EOF: z7 G- E* Y8 e. C6 s6 j

' x, o' I$ J& H$ Z) O6 o  q: A<secret ephemeral='no' private='no'>* e4 Y* \! H/ T' T4 \

% J. f( E* e. z  L' i2 y  <uuid>UUIDGEN</uuid>
( Y2 ~' _* Y. N% P; T' Q( L
$ z6 k* |6 S9 c) M' s2 h, z  <usage type='ceph'>7 i2 a/ P7 R7 `" {6 F

, B# P/ e" M6 ~$ x( @        <name>client.cinder secret</name>4 e7 d$ Q/ _( a6 m! `
3 {' _4 l' R5 Y+ E8 V
  </usage># z5 w; r+ {' r/ [* ^9 e3 n
5 j) Q/ f2 C: e5 h' D) {7 P1 J
</secret>8 g! O3 k/ J' l4 V

; k% B  ^+ h# p9 Y- C3 HEOF! [2 n  d2 N, |. L* R
#sudo virsh secret-define --file secret.xml
6 ?# ]5 t  ^5 \( i$ N
! j4 b* I$ O' S% J( p#sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml, C% F; m( I7 `
执行完后,记录好上面产生的uuidgen,下面还会用到。/ x+ P6 z& Y7 B% c

! D' b. F7 b% P1 @9 l回到顶部
/ Y$ W5 W+ u5 s. @2 v4 n8 j/ }7 u1 B5.安装并配置控制节点5 s+ M8 S$ Y' D5 T
5.1先决条件
# y4 w% ^5 {! b$ u0 f
) _& v  G: r3 W在控制节点完成下面的步骤以创建数据库:
9 L" i3 c4 ]$ f
+ M( G/ D  t6 U4 U, z用数据库连接客户端以 root 用户连接到数据库服务器:3 s! w1 y" I5 h2 a; E

* Z, a5 H' C: z1 ]7 q8 G9 W#mysql -u root -p
* D/ n! c. R) k8 O/ z9 ~创建cinde数据库
; }% a. l- R6 U( X" ?! ], T# b- p. P. C; D
#CREATE DATABASE cinder;6 M/ ^2 }' E) q5 ~) ?# e# `
配置 cinder 数据库的访问权限,下列CINDER_DBPASS用合适的密码替换。
1 w5 e! z, b; `. [' p& A. e; }9 c# p* G0 \/ o3 L" a/ I
#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \' a' e2 d4 A! T5 H8 a1 A
1 T% C3 C/ V% A$ j
  IDENTIFIED BY 'CINDER_DBPASS';
7 b7 A" x/ j  C$ }3 I" }8 D3 B" X5 m3 E7 E5 K4 G) M
#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \- h2 c- ~5 d( U0 L9 e. Y$ B

2 \' [! m( `: ^' A: o: {: @7 r* P  IDENTIFIED BY 'CINDER_DBPASS';
% @6 Z% ^, i6 d8 W5 E1 A, q退出数据库。
# `8 n' Y0 i+ ^* Z# {# }' N+ e- {
6 t7 p4 E2 n4 F* l% k0 o1 z% D  V4 {! s获得 admin 凭证来获取只有管理员能执行的命令的访问权限:, S7 k6 [! K9 Q, z9 A9 k8 D

- W5 @5 n% l. k( x. }9 P# . admin-openrc
& t/ l9 @' I6 j& G6 z0 a. @创建服务证书:. ~5 J. s  d7 V+ d1 n1 ^3 C
5 I1 c+ q6 F& d" V: ~
创建一个 cinder 用户:
% j/ ~2 ~5 ?5 K/ y. b: s) Z. w8 {+ w1 r9 B
#openstack user create --domain default --password-prompt cinder( p; k: {" W- B  |7 j; W
添加 admin 角色到 cinder 用户上。
3 E& G4 I' g/ z6 k! X& C+ L  E4 y( T4 ~' }: _8 g* p
#openstack role add --project service --user cinder admin5 V8 s0 L% r9 Q- i5 A  a& i
创建 cinder 和 cinderv2 服务实体:
; p4 W& e- Q& d6 u& B
1 [6 ^5 u+ m# _. v  p#openstack service create --name cinder \
8 x# g! b- B1 U5 H) t: Z: [. ^  ]! G7 n* w0 m  T% g% g
  --description "OpenStack Block Storage" volume3 b. o  S+ x' C/ F) E- e$ B

8 a. a  z  ^6 [$ ]; M2 s9 B5 @' w& ?$ x#openstack service create --name cinderv2 \( k5 x1 e( ]# L: O% v9 Z
( q& t! t0 y, K9 Y
  --description "OpenStack Block Storage" volumev2
! V1 y, ?, B4 p  ]4 q
& o) G) k, w2 k0 o7 P; W2 t# o! n) }( a7 U, z3 T
创建块设备存储服务的 API 入口点:! F5 w0 p: ?, e/ s+ A" Y

. @+ C  I) o% S" ]! \#openstack endpoint create --region RegionOne \
& S- h! {- R8 J$ u3 x8 e: \. d
& g: \; g. B( V  volume public http://controller:8776/v1/%\(tenant_id\)s
! B; t: T( Q, v, Z+ s# I. h
# Q) F7 ?% J$ F& T#openstack endpoint create --region RegionOne \- _8 L6 K- v) H6 f" t, n
) Y5 S& s. D3 O% S2 y7 H
  volume internal http://controller:8776/v1/%\(tenant_id\)s
; V8 t3 L+ v, D9 R. y, X$ q- I# x) d  B: z" P
#openstack endpoint create --region RegionOne \; a; a; g3 w4 {. j& x- r

( P8 p5 I" x1 \% G6 W7 }, E; d; j( O  volume admin http://controller:8776/v1/%\(tenant_id\)s
5 N, ?; S# c: e/ B5 ^& g- ~2 h- O6 M9 ]/ }
#openstack endpoint create --region RegionOne \
/ y0 V+ O5 }1 W6 }$ V& W. [7 b: U; L% q# f1 d8 h
  volumev2 public http://controller:8776/v2/%\(tenant_id\)s
. m1 u9 c9 p, m* |* x
4 C' E! ~+ G( |, F8 A2 |3 ^#openstack endpoint create --region RegionOne \( n7 |: e, s; R$ C/ R4 Y3 F, n* v

8 [. Z* Y; F$ K  volumev2 internal http://controller:8776/v2/%\(tenant_id\)s9 H4 _+ s- i& Y0 e" K/ N
& K' v/ Y: x/ j
#openstack endpoint create --region RegionOne \
1 H, i% Q) J. o7 }
9 k5 j1 b7 T4 h! l  volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
3 U) g( h; I) ^2 {9 G0 P( @5.2安装并配置组件  S  b. y2 C9 F8 H& @8 i0 Z

/ X6 F2 O/ ?# \: Q$ Y7 h% t+ y, K9 V安装软件包
5 s7 k5 ]/ o) b0 K& |" J, Z9 w& S4 _
  |5 E# R% V4 Q+ Y4 _) u# yum install openstack-cinder
- _0 a9 A( M, ~( s6 R8 `8 t- {
0 F6 I; I8 I* J#yum install openstack-cinder targetcli python-keystone
# p' `, p+ f# y5 n( F1 V在控制节点上编辑cinder.conf。
  G3 s+ f& L0 u0 z" e( {/ g4 [! D3 ]) A3 ]4 |: b  j- w
#vi /etc/cinder/cinder.conf
7 B( p8 r# F" x6 z, B & ?+ h  F8 M7 m3 q- V$ _2 q

4 `6 r$ {7 T  a" x6 E* Y6 g9 R' J( k- O添加如下内容:
  L- S# H* ^, V+ J8 D8 R: l+ T
9 w; I- }+ O3 c* i! b. }  M* j6 Q+ w注意:6 Q& L& c; }5 C5 L# E
1.如果你为 cinder 配置了多后端, [DEFAULT] 节中必须有 glance_api_version = 28 q( V; s* p0 ~3 A8 I
; M1 ^; b2 |1 e' I% \# P- `1 \  V; G
2.[ceph]中的rbd_secret_uuid后面对应填的刚刚记录的uuid。( g9 N5 @9 `) J/ R3 U8 p
9 s) s6 a: |, _* C! |+ v- d
[DEFAULT]7 I9 Y& N9 Q6 f8 X4 x* ?- Q
9 K8 @3 S5 I  o% k0 \4 W" c+ N0 M
transport_url = rabbit://openstack:RABBIT_PASS@controller
/ E  [) D- w3 b, F- A- Y) [
# Z. J) Y* p& }' R/ j- ^auth_strategy = keystone
( F  G* L' X' r8 m, J& C- V/ g# [! E* n4 v0 s  F+ R4 E
my_ip = 控制节点管理网络的IP, x& H3 x% V7 B' s

  ^, v- W1 ]8 F: @7 Uenabled_backends = ceph' C5 R/ n6 ^- s$ @2 o. [" D( O

* K( Q7 J  Z6 l9 B( B+ ]4 xglance_api_servers = http://controller:9292
) t5 E+ |" i5 Z5 N% a0 F; f. D- s; ?$ j4 F4 g% M
3 D+ o2 ~4 H  _

; y9 `% O1 P3 s[database]
$ p; L2 v9 W6 V/ T" S, t/ U) v7 _' F. r! l- H4 a3 Y+ Z
connection = mysql+pymysql://cinder:CINDER_PASS@controller/cinder
- f& v' `4 A; I' d: y$ ^3 S+ I+ C  e' ^1 @8 B; ^2 d2 ^/ ?' {: I( Y& Y

) W+ i, H8 n! R! R0 `: |" [
0 k1 J9 r4 O, p: Z( m[keystone_authtoken]
# g, z' d7 E8 V, @6 L& `) s6 M; L4 v9 s+ f
auth_uri = http://controller:5000/ A' S$ N8 m# X8 P& P' W8 g/ k
; {  @6 r/ R8 y* u/ h( }& d& }+ A' b, t
auth_url = http://controller:35357
3 o' m/ M( s$ Z% f1 r! {7 s( Z
0 d  ~3 Q8 b0 s# F3 p! H$ W1 n% @memcached_servers = controller:11211+ B5 F+ E5 G, g" _; b

- f6 W  S; h% X' ]8 fauth_type = password
6 v3 U5 [3 U/ |5 G3 A
+ M: z9 _) s% qproject_domain_name = default2 I6 G" e9 ~* W; y6 N3 l( N

% P- g$ P+ Z" l1 \" Quser_domain_name = default6 H; W  V/ [% G( `6 [8 n. w5 p
' C6 O& S5 F3 b; G- s/ T
project_name = service1 {6 ?5 O; j. p4 T
7 ^* r( g* e! B! E2 Z! m
username = cinder+ j: F# E8 Y, F/ v

9 ?  {( `# [& I5 }/ t5 n. z! d$ wpassword = CINDER_PASS
% k" }+ V& T& J  B" s  K: e
- g2 Y) u" V" O& c: N2 K
( t# U* i; Y9 H% T5 S/ E
  r& u+ r  Y2 N7 o[oslo_concurrency]
, [9 j' U& u+ o+ v& n: _% z% r/ x" v/ c3 E& Y
lock_path = /var/lib/cinder/tmp7 d& }; ~- _) |. W

9 y0 e) z7 H8 P' D0 [& ]' G$ W! c
& w  n* t" i3 G+ X[ceph]
) E4 F' S4 ]( d( x$ @& V8 h4 I/ M& V5 x- W6 S6 O! s+ v5 U7 }
volume_driver = cinder.volume.drivers.rbd.RBDDriver1 D" ^( t" ^/ g6 w& {' \1 X
$ @6 F/ L, m1 ]% I
rbd_pool = volumes
1 q3 @2 E4 [- i. D4 t6 s. Z3 |. K6 L' v* }# @+ L# O. T" F
rbd_ceph_conf = /etc/ceph/ceph.conf
5 d0 y: \( l, f: [2 n  q% \* K$ X: [# g/ P3 T' X7 J, Z* Y
rbd_flatten_volume_from_snapshot = false
; p" r( M3 n5 B( t, h+ \1 g) Y/ `) R7 b$ x$ u. Y
rbd_max_clone_depth = 57 f5 q5 B. r. q- J9 X* v4 K( N
5 w$ i$ j% u9 v0 N7 X7 D
rbd_store_chunk_size = 4' G; K/ T( H; S, l# @2 ?3 f3 `
2 C$ r1 l% [) R2 J" u* [
rados_connect_timeout = -1: |. m& f. C2 K; g0 N1 S: Z1 F
) L- B) r2 t1 I& @1 f; \
glance_api_version = 2
  a/ C; _0 }' z. D$ Q
+ @2 J2 C8 g0 }rbd_user = cinder0 ~5 ~4 l- o8 N1 t3 i

9 F# V% m: R1 i* p0 B7 Y  Orbd_secret_uuid = a852df2b-55e1-4c1b-9fa2-61e77feaf30f
  h+ B4 T' \) o) n编辑/etc/nova/nova.conf 添加如下内容:9 n) J; t* e: q# m% W) ^( s( Z
1 ^" Q8 F& U. B5 N) s
[cinder]6 u9 g& P+ Q& H/ ^
3 U! `  p3 b2 r- N- q
os_region_name = RegionOne% W; h& L& X" o; L0 L* Y* q
回到顶部
# ?, j1 {; f; S2 b: O0 b. h6.重启 OPENSTACK6 a+ I9 b! @, O% f
在控制节点重启计算API 服务:& u' Z  e0 {6 r' F( K- I/ n

* T# ^4 R- Z# A, b; J# systemctl restart openstack-nova-api.service
1 e) f$ D. u, N+ {$ ^ . u5 I" O3 r5 `7 s( ]9 A

; p! a. Q1 u9 g# O/ _9 J8 l启动块设备存储服务,并将其配置为开机自启:
/ U; V6 E+ p8 ]3 x. n1 v
5 [* }6 h. Z: X( M# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service, l' j4 h- V* j% C4 D4 B/ R& d8 G

2 B# o9 s& n/ r. e/ j# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service. |0 E/ Z$ W7 g1 o! b* J$ ?5 Y

& H" ^0 ^. ?1 N9 p& @7 x8 M4 ?+ y$ O- \
0 g: E( X" I! ]' }0 [启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:' s$ U8 x& `( R. p* Y

1 `* B. S+ q: o; L7 O  v# systemctl enable openstack-cinder-volume.service target.service1 I, ]9 `2 ~) G! z6 Z6 u
) D& W7 Q  ?- Y, m) c
# systemctl start openstack-cinder-volume.service target.service
1 F# j" o8 V) P' ~
5 A9 c- f1 e4 Y' X
# B4 |9 K+ ?+ u) @回到顶部
3 ~* O3 o" d$ o8 n! P& d7.验证
  I' r! t* l# V! t! v0 _, k' e' F. J在控制节点获得 admin 凭证来获取只有管理员能执行的命令的访问权限:+ d- e5 g6 p# F/ m. h! Q) p

3 A5 M- C5 y2 t2 `! h# . admin-openrc$ O6 V3 W7 q/ |; U5 u  _
列出服务组件以验证是否每个进程都成功启动:
0 O2 L: J( p# x$ C. H
# b1 V# J! I% J+ n# cinder service-list4 e( F( k1 q( }$ F/ o$ B; y3 s
并且登录界面后可以创建卷
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 03:22 , Processed in 0.015249 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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