|
|
1.创建存储池9 a+ X# B$ k. h7 N4 [
在ceph节点中执行如下语句。
. Q% z8 c* W& G9 W8 v( b" O, ]8 b% g1 A7 j4 \ J' }" e' e! _
#ceph osd pool create volumes 128 M7 A: m8 c. {/ B& ?! j3 p
回到顶部# v$ c6 _' x1 _3 P( H8 z
2.配置 OPENSTACK 的 CEPH 客户端" t) h4 W# y( ?. r* j1 K
在ceph节点两次执行如下语句,两次{your-openstack-server}分别填控制节点和计算节点IP。
7 x8 A( R' k' V7 h3 W; o! v
9 N! A5 S; K3 [- G4 g) i6 L如果显示在控制节点和计算节点中没有ceph文件夹,则在两节点中创建对应文件夹。
, h3 H$ v+ q8 z7 S$ Z
3 O6 ^5 J+ u) Y, D! c3 Z#ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf
8 p6 u. N4 k2 i) ^回到顶部2 f$ G% K- G9 u. c1 n% |, R. O
3.安装 CEPH 客户端软件包. [0 n& @& W% `7 _' v6 C
控制节点上进行librbd的 Python 绑定% ~6 {6 T8 u) A8 j# M
$ j) d1 f U3 k
#yum install python-rbd
* F: e X8 {1 }6 w3 y7 C; Z* L2 B计算节点和控制节点进行安装 Python 绑定和客户端命令行工具" h$ {+ \* k$ |( Z- T
& r. t# j& {2 X8 n1 x8 r# v- M#yum install ceph-common
% J8 B! p9 |. D, G, L" | H/ e" a! m! q3 c( b. F& F' A1 s* H# \
#yum install ceph
& o4 A/ s& J. t" H; v: p9 j回到顶部6 q- t# w7 h& w
4.配置 CEPH 客户端认证; f9 l5 n$ d1 @) L4 P
在ceph节点为Cinder创建新用户 l- X9 ^1 g$ Y2 A: x% U0 y
0 N1 ~3 j; Y. d& n; F
#ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'/ L7 W2 e4 L9 v/ y/ U) O+ b
在ceph节点把 client.cinder的密钥环复制到控制节点,并更改所有权,{your-volume-server}和{your-cinder-volume-server}处填控制节点IP。
# o- T8 o& S8 E/ v% O* N6 b! M* ]) m& I! ^1 J
#ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
M0 v H! Q0 X: V
6 d& n' M# @* w' v#ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
' l; x, m. |/ y; Y) U4 \# L在ceph节点执行如下语句{your-nova-compute-server}为计算节点IP。2 `: g9 O0 T2 J1 z7 u# S; ~9 p
: N5 W8 K4 _1 O4 c w#ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring7 y# y9 j6 g L9 ~: b; m8 A
在ceph节点把client.cinder用户的密钥存进libvirt。libvirt 进程从 Cinder 挂载块设备时要用它访问集群,在运行 nova-compute 的节点上创建一个密钥的临时副本。5 l# x" U- b. ^) Z+ K8 @: ]
2 g- r8 @/ i# O* b* H M0 G! Q3 M{your-compute-node}为计算节点IP。9 B8 @/ i2 z5 X
h, [: n; \% M# O$ L8 i5 v6 W* H#ceph auth get-key client.cinder | ssh {your-compute-node} tee /etc/ceph/client.cinder.key
* L" d' N n0 ] |0 V
9 q2 E1 n5 K3 l0 H( I3 X在计算节点上执行如下语句,把密钥加进 libvirt 、然后删除临时副本。# Z3 P% I6 X* V( |# H( ]' \- c+ U
0 g6 F6 Y! g, _& v, u& f( W2 }#uuidgen, W7 A7 W! s8 F) S& A4 A
记录下产生的数字,将下面的UUIDGEN替换为该数字,并在计算节点执行下列语句
/ d D X' c d7 k+ b
3 S g" s% [+ E( W) X7 `cat > secret.xml <<EOF
. X' q6 ]" t' E! s5 G$ D- a H3 [3 D. Q% A
<secret ephemeral='no' private='no'>
' V- n% v I/ [. G, W7 s
$ h. S. f7 y5 g- T <uuid>UUIDGEN</uuid>7 k4 q# |2 Y) [% @" w5 \
5 P& k1 X( H( |" R" ^" h0 B. k; t <usage type='ceph'>
& \3 r9 P: |3 D. o9 X# c7 P" a! k( {, z9 B) d* W9 y# D6 i
<name>client.cinder secret</name>' i) e$ m8 X6 r8 P* ~8 P- e
0 k) f. h. p4 B </usage>6 P/ F9 Z4 i3 T4 I' [
) _0 X) w. Z; I2 q" E</secret>
( }0 ?4 r( _" }& y3 P* C' [; t* S- }4 H
EOF
! E& ?7 g& |% p* P/ B, g#sudo virsh secret-define --file secret.xml
! |' d' `" ~9 h. d: Q8 \7 Y. ~3 ^5 F6 S7 V
#sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
: Z0 S9 q3 [& D6 V0 A" H ^& f6 w _执行完后,记录好上面产生的uuidgen,下面还会用到。/ [# p" F! i, K7 l) U# s" ]
$ n; K q9 d' r9 K0 z回到顶部* D" Z% E$ {0 {) {3 i( ~" I
5.安装并配置控制节点
! b& N$ _4 z8 ^# i! R5.1先决条件
# s; I* r9 I( e, N9 ^9 U E8 Z8 Q, I3 W# F5 M$ q6 l% j
在控制节点完成下面的步骤以创建数据库:
; b! R6 @( k9 y6 G ]0 Q7 K2 K" K
* x7 ~6 S' h* |2 K用数据库连接客户端以 root 用户连接到数据库服务器: f t2 k2 e: m& T7 _
; @: D$ r/ T/ i1 G: r: Q# h7 P" t5 n' K#mysql -u root -p. p3 w& i- `6 C% E5 F& o S
创建cinde数据库
4 X. y8 q/ J! I; q* r" r' K& [- X, H! U2 J5 U
#CREATE DATABASE cinder;
4 G( ~8 t( R# \配置 cinder 数据库的访问权限,下列CINDER_DBPASS用合适的密码替换。) V5 Y/ }6 l1 m* A5 I5 s# p* r
( @7 K8 D0 ~( _. \9 H% s#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
1 i( I* F! j4 t& v3 Y- H: B. n& @( l0 e4 \* `$ u2 j7 t
IDENTIFIED BY 'CINDER_DBPASS';
) D1 w" }+ E: j6 t D0 E; l
% w& Y9 b. G7 ~3 B% w# f: l#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
# d/ Z8 s- E& Z* S
8 c' z7 L, P/ m IDENTIFIED BY 'CINDER_DBPASS';
4 l4 P( o. {+ ~退出数据库。
+ l0 z. s7 z" a5 S2 k) D4 O
2 Q: n' e5 A6 U& ]! G获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
0 b4 s2 ~- S+ ?; M! ^# L$ M8 G3 A" L. f x$ B c h J
# . admin-openrc
: S# H4 B, S" E: J: e$ ~8 i' j$ q创建服务证书:# r9 \. ^8 b8 f/ \1 H6 s' M8 a! ~
3 s( F" m& H E) X& ^* F; \
创建一个 cinder 用户:
+ _5 V+ B P+ c1 g6 |7 N8 e( }0 a- A
#openstack user create --domain default --password-prompt cinder. h6 n. b5 m! O0 D5 p7 X% f/ _
添加 admin 角色到 cinder 用户上。
6 |& `" ? o" |! |& {: @0 b5 N! n) X) e& R; X- f
#openstack role add --project service --user cinder admin( s. Q8 y0 V- }
创建 cinder 和 cinderv2 服务实体:
8 a, Z4 G; ^9 m3 q
' I/ x: }9 ^. i1 _: p#openstack service create --name cinder \
: Y: x3 p3 v! L4 u/ s
% p& g* f0 w8 Q3 z. a* C --description "OpenStack Block Storage" volume. b/ c" V; B U1 T3 H) [& d& `
7 p$ R E" U" T& E
#openstack service create --name cinderv2 \
, T6 S* O+ S1 O( Q$ Y C) W- D O3 }. R) `. q& W( V
--description "OpenStack Block Storage" volumev22 J5 Q- [- p/ H) u2 M
5 d& {3 n' G9 y7 A* ~* O5 U) I
V3 \5 q+ m' I, M; D3 q4 K) h9 p创建块设备存储服务的 API 入口点:9 X$ K$ e3 b" n2 d1 L- D1 I2 m
3 C1 F9 `8 [6 D. H4 Q+ A#openstack endpoint create --region RegionOne \0 J- M! i" U$ x c: ^; B
( z& A4 h w, x( J
volume public http://controller:8776/v1/%\(tenant_id\)s0 d$ y$ n/ K' Y L( ] Q
2 i9 S! Z# r1 M+ a- e8 P9 _#openstack endpoint create --region RegionOne \
4 r M3 G$ i( ^) ]+ I! ^/ `! D4 U) ~' }' \ N4 j
volume internal http://controller:8776/v1/%\(tenant_id\)s
( A: n! y' {" q8 y
- u5 @. A$ |% S0 N8 e' r% }#openstack endpoint create --region RegionOne \: B1 v3 r" A/ |2 S9 q& O# d
# B% B( T7 k A6 ]& `
volume admin http://controller:8776/v1/%\(tenant_id\)s/ T! S8 {% ^9 J; d/ B2 J. z/ E% I
2 F: A* G, K7 C1 s& v/ {7 P) ~
#openstack endpoint create --region RegionOne \3 n% G+ s& c+ L' v1 u, d
$ O1 K1 y# F: B6 u; H
volumev2 public http://controller:8776/v2/%\(tenant_id\)s
6 a2 P: ]6 h& H* A0 r5 b6 S! S |! ^
#openstack endpoint create --region RegionOne \
3 d% K/ L2 w1 z. i9 g7 F% q4 c p( l5 X0 n6 ` Z. ]& n7 K" f: r
volumev2 internal http://controller:8776/v2/%\(tenant_id\)s( d2 M2 d, |0 |8 D
: u" I2 r, h1 I, ?
#openstack endpoint create --region RegionOne \/ |( R) a: S2 Y w+ A
; l9 x" n/ y# h* {, V
volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
" ~- }7 M6 \4 v( H9 y2 l" C5.2安装并配置组件
9 n; e0 D: d2 M* V F/ M
9 S$ {4 |+ P9 \! `+ l安装软件包
( b* q- W1 _3 Y5 T$ d
3 ^/ C) r; l. U m0 L# yum install openstack-cinder5 Q& ?5 G* Z7 {4 m. Z4 U
9 S# A; ^% o: F) d4 r* [
#yum install openstack-cinder targetcli python-keystone* K) F' k3 k& E
在控制节点上编辑cinder.conf。1 K- M' j' w8 X8 o
. \: L7 J7 w. t# Q
#vi /etc/cinder/cinder.conf
9 X: p6 f! ?1 [+ t* b
% \: n, u5 b5 ^- h# B/ C0 A1 n9 E- |% o6 o, K1 S
添加如下内容:( W9 L K. y: i5 L& b6 o
6 _, d! h! i8 Y0 d注意:; S7 T. U3 j9 {( f: j+ ^
1.如果你为 cinder 配置了多后端, [DEFAULT] 节中必须有 glance_api_version = 24 w/ b5 F" b4 M; O3 O
" P& D. i8 k3 `- M$ w* H
2.[ceph]中的rbd_secret_uuid后面对应填的刚刚记录的uuid。" [: e# d+ U6 D% _4 C$ F$ c
8 z- J/ l& w1 f# p: J+ O- [$ v
[DEFAULT]5 K" n7 L# C+ Z. E5 t/ c8 c
$ i2 N9 t! l* d8 U& P: F/ Z& Z" z
transport_url = rabbit://openstack:RABBIT_PASS@controller
2 T/ C. D2 d+ T! |8 M' |/ A* [6 [3 D6 _& e
auth_strategy = keystone8 x: F( J2 \3 Y( i, L
3 ]3 U& H7 q5 h1 H" r/ kmy_ip = 控制节点管理网络的IP# ~) O" V: m* c7 _3 o
! K, F* K$ F% N. v6 `enabled_backends = ceph" f" p- j1 f) L; C& Y+ A( L# q
$ D. Q7 T* y D- Q6 ]1 E/ G+ O& O3 _
glance_api_servers = http://controller:9292
4 {& A/ B. E( w& Z B p
! U5 v8 I v$ G' u' f
( U/ b9 g4 e9 Z% o! j- s L8 w* R. y! M0 u3 p* o, i
[database]
- ]% O% ]6 E; M/ @ X: V4 U3 c$ i) ]. g" p: |" ^
connection = mysql+pymysql://cinder:CINDER_PASS@controller/cinder
" ^0 |# X$ }3 `/ m2 ?# x, t4 X# _: |. Q. p6 c9 Y9 [0 x
: k1 c* q$ w8 A9 q
# ^; [( |2 d. z* J4 n c
[keystone_authtoken]
) x' C; b! g! @9 a2 P1 Z7 E+ F/ e. z* j0 [: E
auth_uri = http://controller:5000, p% F$ a* [+ ]. I7 r0 r. w7 Y
+ }/ J+ X# ~, F+ w0 E
auth_url = http://controller:35357& h5 f* B* O; g/ d; V, D
/ d/ e3 [* p% W. c6 F# D% q; I8 k: f
memcached_servers = controller:11211% F0 H. D* t: |! v
' q# Z- G4 C N! G) q) @
auth_type = password6 a5 n; f# ^ j5 F: t
/ R! I1 _! v2 |; @- M1 w# i" Uproject_domain_name = default
" o$ W: @: z6 `4 C/ u$ s5 r0 z9 o% P: G: O7 v3 O; e
user_domain_name = default
* K- o x8 q: r5 K# ?/ Z" \" h9 N
0 p# f! C1 I$ `+ l0 @% S" gproject_name = service- ~ a- |& Q# g4 \' v8 m4 _
0 T2 l! @) g* G, Qusername = cinder
/ `6 K" l' q6 Z- G3 T
0 G! N' G, N( M: Apassword = CINDER_PASS# l( L1 D+ _% Q2 b6 Z; b" B p
6 q8 C5 ]) `4 P- v7 i/ r" j5 q
+ {: L6 i+ r! D* e: U& W {# Y% |9 v, N _4 P
[oslo_concurrency]9 N4 w+ i1 |- c7 [- h
" w% K/ E& S3 b1 y- F/ a- k4 |
lock_path = /var/lib/cinder/tmp; J; S; {( u: F
0 V* S- i: ^/ D# e5 J# J: T9 Y% U
4 o) n3 w$ h5 W7 z9 g9 j- V[ceph]. v. l& ^$ U8 }0 J$ x* w4 B7 u
( O) m5 d$ U% ^' Y( X# t! H0 E# |* Evolume_driver = cinder.volume.drivers.rbd.RBDDriver+ [; e; F, r6 N
" f5 O( R, S$ n, r0 c2 ^* X- a! I8 Mrbd_pool = volumes3 |$ V% m6 V. i7 ]
: h. J3 a$ l$ A& o" D
rbd_ceph_conf = /etc/ceph/ceph.conf
8 s& O- g: e/ \, I* q
% y# S. T+ z$ r( ?8 |( urbd_flatten_volume_from_snapshot = false
" A" n, \6 s/ r8 M/ _
1 I0 [) ]# c0 s: `" f0 krbd_max_clone_depth = 56 D& H. W/ G% F% z
* u# [3 O, Z6 ]: \/ a& e
rbd_store_chunk_size = 4. O* n4 F8 z/ u- u) j3 ~1 N; P
/ C& C# ?+ r0 z9 P! G) hrados_connect_timeout = -17 [2 D7 b. [9 ]- v) | K
/ A: V+ U6 z$ C/ P
glance_api_version = 29 H6 L7 Q, g4 e" N
# [; \6 B- V) { Y5 @: l
rbd_user = cinder% z0 v( Q3 Q. M
! c( s3 S8 L1 G2 r! c% z5 H% ?rbd_secret_uuid = a852df2b-55e1-4c1b-9fa2-61e77feaf30f6 B( W9 c d4 H2 } A% |
编辑/etc/nova/nova.conf 添加如下内容:* W8 @' _+ q8 k- ?# r' K6 W
6 d. u$ p( I; Q% ?. J[cinder]
- B# R2 k7 _0 t/ Q0 o
3 V: U { f9 L3 L4 tos_region_name = RegionOne
: [% ]/ W) A& v! i* C" e回到顶部! b6 X: Y5 G% A
6.重启 OPENSTACK
) E4 i( d2 N7 z% \9 p# |在控制节点重启计算API 服务:" l- V/ T! y; Q3 L9 Q8 C4 w
& c! O* H2 S) P4 }: J
# systemctl restart openstack-nova-api.service6 K6 P" _+ Q' O2 x0 ?; a) D0 e, u7 ?
: H3 C9 R8 `: T) K- e5 _, l. v+ L6 \
& _3 V" v6 a' _5 X+ B
启动块设备存储服务,并将其配置为开机自启:# K5 V# p8 _3 }% \# Z3 L! t
1 `2 E! u8 P& b# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service: b$ ?$ {! h7 c( y6 F9 t# e) N( n6 b# r
: Q4 K0 W) U1 [ \ ~; @
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
$ A+ K8 \* e* N, D % p. y0 W* }1 J2 N
" o6 J7 f2 l/ I7 T# u启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:4 s& N1 P# d0 ?6 ~; s
4 [, O2 f' ^% `# E
# systemctl enable openstack-cinder-volume.service target.service. A$ {6 P& e9 W3 n$ s3 z6 j3 }* a
+ L- H) I$ e2 ]# systemctl start openstack-cinder-volume.service target.service
5 n- ~, X% `' x* i C* } ) @. x" l4 f. q$ p: p0 p. s5 E
! J0 R) G9 X: J0 n
回到顶部
6 L F# C3 D6 Q% O& G- L8 V7.验证2 l! z9 i9 D- D( F( m# F, T
在控制节点获得 admin 凭证来获取只有管理员能执行的命令的访问权限:1 v3 K4 s0 @2 h9 w
- f6 o/ o* Y: P( ^
# . admin-openrc2 B$ t5 ~% C/ {8 q, _2 ]
列出服务组件以验证是否每个进程都成功启动:
& Q; e* ]5 W# A/ |# Z, L _* Q0 X5 x; f5 _; W/ J! H( J
# cinder service-list. z _ |) z- K5 @" |
并且登录界面后可以创建卷 |
|