|
|
1.创建存储池
8 f' ~1 _" [& I }& G0 ?/ d 在ceph节点中执行如下语句。
& }+ D4 M% u9 P# S+ b3 N$ h% W* K, n7 g. V- T7 s5 v b
#ceph osd pool create volumes 128
2 m% w: M1 J; b7 }# ]2 m6 ]: A回到顶部; B5 i1 g* b+ r! y, Y
2.配置 OPENSTACK 的 CEPH 客户端; |# V" B# P6 o" R
在ceph节点两次执行如下语句,两次{your-openstack-server}分别填控制节点和计算节点IP。
& z& z, f& B. b& S, [0 n" A2 X1 ^3 S7 N5 Q7 J
如果显示在控制节点和计算节点中没有ceph文件夹,则在两节点中创建对应文件夹。
# o/ k! ^; a0 C# _6 @4 P# O) F! x, ?8 j i- f
#ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf' E' L8 `9 d* a
回到顶部/ S/ m: U9 Y0 P v$ {3 l8 _
3.安装 CEPH 客户端软件包
. Y' W/ }: R, y 控制节点上进行librbd的 Python 绑定
! S2 Y8 k3 {5 U, B: R; l
& G s3 M' T' L% C#yum install python-rbd7 m1 A) `" \/ u0 B/ I) O5 M$ i- K
计算节点和控制节点进行安装 Python 绑定和客户端命令行工具
3 f' K; [8 q+ a0 n% X8 A9 A( E3 ]5 d" ]; q" p9 {/ ^
#yum install ceph-common
% a7 U% o' h" l/ q. u7 m6 v; z* T1 Z5 r1 L
#yum install ceph% V' ~7 O, i) m
回到顶部
8 J, Z! y! X0 [4.配置 CEPH 客户端认证& V' ]4 n O' w+ }
在ceph节点为Cinder创建新用户
# M: J3 f( l ~6 C/ e5 _$ E& V- M
/ K4 ^. j0 p1 [; A#ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'
# `6 k8 p9 b& x2 J在ceph节点把 client.cinder的密钥环复制到控制节点,并更改所有权,{your-volume-server}和{your-cinder-volume-server}处填控制节点IP。
1 L' Y: a9 j U% ?% Z# p: s% Q, j2 a. S( p: o( b9 A
#ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring7 t. `, j M$ ?$ ~+ `0 k
1 Y. r9 ^% K! _* p' o7 N P9 v- t#ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring # X+ m- }) f2 p, G" g
在ceph节点执行如下语句{your-nova-compute-server}为计算节点IP。) D$ G0 D b& V$ g
. `& Q+ A$ o: ^2 _% ]1 a
#ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
: p1 v! |5 Z* w% U5 e在ceph节点把client.cinder用户的密钥存进libvirt。libvirt 进程从 Cinder 挂载块设备时要用它访问集群,在运行 nova-compute 的节点上创建一个密钥的临时副本。
5 d4 v N; i$ A3 L4 l9 e) w, g$ X0 |* d8 G1 E! _( ^$ ~* `
{your-compute-node}为计算节点IP。
8 L' S6 q8 H2 E. C
4 }2 w0 P% Y9 q* I#ceph auth get-key client.cinder | ssh {your-compute-node} tee /etc/ceph/client.cinder.key
4 u/ l1 H P" h" \' U
" [1 w- O% z+ S Q在计算节点上执行如下语句,把密钥加进 libvirt 、然后删除临时副本。& y) M- U+ \! R; [
: g& ~# Z! x7 }" F, }' K#uuidgen8 `) U7 g; p- E- a- b' j9 K2 Y t9 R
记录下产生的数字,将下面的UUIDGEN替换为该数字,并在计算节点执行下列语句
0 z9 `; s9 l% F$ W9 `' {7 b$ Y6 u" S9 V( C
cat > secret.xml <<EOF( b* c9 b9 ?' s- h% R
4 D; C' y! E- Z: K+ y1 v
<secret ephemeral='no' private='no'>$ u* W& v# M2 o, z
1 I, c, z& U1 U9 a2 x5 j7 _
<uuid>UUIDGEN</uuid>0 B, ^1 \' `) ~5 y. X+ p
1 C+ M8 H* e y: }1 C& u
<usage type='ceph'>' F/ |6 M- K' e9 D
; P1 W% |. R# W, }! B <name>client.cinder secret</name>" w5 g+ @8 i x: c7 ]7 e# {2 T
+ U8 r+ z ?; E+ |0 s </usage>
8 {" I4 N) k% B/ b9 t
# j9 |" H) J) v& b; n7 i, r; G8 G</secret>
% ^, O0 ~' j# W" W6 U
" e6 O, h6 y+ y8 p4 |2 Q8 K$ i- v' @4 rEOF
, X$ E* w1 z9 K3 b7 _3 ^ M#sudo virsh secret-define --file secret.xml" X+ W; t& G5 ?6 c4 P h( [" @
1 V# G( W5 N1 w$ N% x+ p+ `" N# v. Q
#sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
0 }) G0 V5 K6 v& h, Y* S* `3 b执行完后,记录好上面产生的uuidgen,下面还会用到。( p+ I$ J) @0 W! k0 |+ p
! M: x( \" O% Z R7 z2 T4 \* i0 S8 X回到顶部
5 v( z% \, Y8 {$ ^3 H) F5.安装并配置控制节点; H& \/ W8 v* a7 m2 B0 W. I
5.1先决条件, W& C7 G/ R! Q G
( A0 o L$ j8 k. Q. |- |在控制节点完成下面的步骤以创建数据库:
0 b) c4 V( I3 K$ \+ H6 B$ T* h9 h p4 g2 \, d
用数据库连接客户端以 root 用户连接到数据库服务器:
4 I! S0 M- J+ \2 J5 B* n
# o" M1 e! i6 r: `% _# w#mysql -u root -p
( ^' o X* I$ w: a- Y5 w) T3 u9 B创建cinde数据库% \% n% D" `" N0 Q: w; m( V
' A+ Q0 f- R5 f$ t3 Z! j4 l#CREATE DATABASE cinder;
3 ^% A6 ^5 `% s$ x+ q6 D: E配置 cinder 数据库的访问权限,下列CINDER_DBPASS用合适的密码替换。
4 d6 f5 u9 ? h2 Q+ Z, `
# s9 U1 ]% {- Q- X" F) z# Z( N#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \3 u V" D% P2 H* F* C
" @% p+ Q: H% O! l# D2 I. Y
IDENTIFIED BY 'CINDER_DBPASS';
$ r6 d* q6 |- O; l5 _
7 D% N7 I" b$ l Z- w#GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
0 a. S W9 T: e# ~9 X' ?
, z! e- G( V: B& ?/ s IDENTIFIED BY 'CINDER_DBPASS';
A# s2 \' u+ y. M* T/ e退出数据库。* d! M" E0 X& ~* g
* \+ o; F' ]2 k) x" ]% L5 `& C/ F
获得 admin 凭证来获取只有管理员能执行的命令的访问权限:" {% R9 f: C1 w: M' N( r2 ^
: i8 f* M7 L \0 @* f% K# . admin-openrc |0 X! ^3 H* P2 M
创建服务证书:
" G3 ]2 {& ?) O' t) S, X
6 k, ?2 C4 G" c( B5 H创建一个 cinder 用户:4 S! x. D1 F4 h0 n
: U+ ]% r& \2 v2 w4 [
#openstack user create --domain default --password-prompt cinder. R% w. l3 e3 M0 ~3 A/ r9 d
添加 admin 角色到 cinder 用户上。$ i, S) x6 J" V9 \
' u% D5 {5 e; _, u. @#openstack role add --project service --user cinder admin
$ V0 Q+ o% |5 b8 L) @创建 cinder 和 cinderv2 服务实体:; l$ Q6 o) `: ~1 g8 b
" F' L8 s. [- P1 ]
#openstack service create --name cinder \
& R; M. X2 U2 _/ d$ ?# t
5 i0 J% c9 B" i o- {1 z --description "OpenStack Block Storage" volume- P& l, H( }8 F- f2 I
- \8 e$ B Q# Q+ Q9 V3 f s
#openstack service create --name cinderv2 \
; ?+ o* X6 l( Y! c/ V# v" P4 D" U% l# z, B1 f; X- O
--description "OpenStack Block Storage" volumev2 x. O( k" m5 u4 n0 K; H# E& _
; f5 ] _: p: e9 \3 H7 N6 X3 N
$ S7 o7 y$ Z! r* e5 u4 z3 ~8 K创建块设备存储服务的 API 入口点:. V5 D: O z1 v7 |$ q5 z% g' L2 r9 y
' U8 i' k% Y, v( D( V2 P& [" k
#openstack endpoint create --region RegionOne \
+ C( V# [- R" t) Q- l: V9 S- E7 w5 ?8 [' \ D
volume public http://controller:8776/v1/%\(tenant_id\)s, w9 f+ {! A$ i, e+ q
% ?1 N3 t% c. p, ?( U" `2 c4 C% z
#openstack endpoint create --region RegionOne \4 g) }/ b, [) U
: l' g% x( x; U/ g( D9 ~ volume internal http://controller:8776/v1/%\(tenant_id\)s K! z$ q& o$ u% |0 z
4 f8 D& b* n2 M6 L$ M5 g#openstack endpoint create --region RegionOne \' C7 ]! W% l) c4 |4 V& n
* f. s3 {; U( z" }$ e
volume admin http://controller:8776/v1/%\(tenant_id\)s S6 t0 A1 c0 U5 l, R8 t
2 O7 E7 M7 Z" `! j! |#openstack endpoint create --region RegionOne \/ c5 @, N( q2 V) F0 @' F: n" G
S1 X; z1 b( V7 t volumev2 public http://controller:8776/v2/%\(tenant_id\)s
2 ]0 O4 N. |. j& M# X% [" a$ E3 R& m+ \
#openstack endpoint create --region RegionOne \
- x! A6 a* U+ W& ]5 N* K0 Y+ u- _5 K+ ?# Y
volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
8 {# @$ C" U5 d; r% e2 w
# i ~/ _& V2 X% X3 Z5 x8 d#openstack endpoint create --region RegionOne \
& x5 s+ E+ |3 R- ?' [! [" I* y' R: t5 y4 n! {5 W& T
volumev2 admin http://controller:8776/v2/%\(tenant_id\)s" }2 U$ b3 X/ e7 I, {' h
5.2安装并配置组件- e3 o) `+ J1 L# N1 W% i4 ?6 m
$ b7 X8 W( s+ [$ Z* f: M2 U+ |5 o安装软件包9 j! T3 {/ }2 g3 g% |
9 t' E7 F' z) Q! P# yum install openstack-cinder2 c0 A" d' J+ {+ i s9 c ~
c; \3 z3 v/ R% g#yum install openstack-cinder targetcli python-keystone
+ v+ l" r. b! i `9 O1 h在控制节点上编辑cinder.conf。
* z: j) m* g. j2 y" T+ u3 D+ V S9 d8 y4 I: A- Z; m' d2 E
#vi /etc/cinder/cinder.conf- x8 L) F6 W# l) c
5 i1 f9 d- O: r
" G( B6 o+ R) c/ y3 N6 J s0 {
添加如下内容:% w; y; D5 k6 y
8 A; z4 ~6 N- }9 k注意:& b# B% e1 Q& k- W
1.如果你为 cinder 配置了多后端, [DEFAULT] 节中必须有 glance_api_version = 20 z$ v! f8 B: A) J# }
0 w7 b( Y1 ]0 |2 u+ w# x+ a$ ?
2.[ceph]中的rbd_secret_uuid后面对应填的刚刚记录的uuid。
; C d# E5 `1 u5 m. S5 q3 K
& m1 e+ f0 L e8 s/ B2 i[DEFAULT]
, H' k& ^- ~3 F8 x
9 M; o8 Z4 t- Ztransport_url = rabbit://openstack:RABBIT_PASS@controller
$ ]' ], H+ o7 D4 d
! W1 v1 N2 ?; p s8 o" cauth_strategy = keystone" f5 B' e- z& z _5 y. S' B" f
% Y% u; u; F; pmy_ip = 控制节点管理网络的IP
- `9 a7 Y- k8 {0 T" g% W# t) M9 r' h i( B; @" k
enabled_backends = ceph* I- ]* R$ \2 Z0 x! \
7 w) A6 ?, U; w& L! H; jglance_api_servers = http://controller:9292
$ N# C& {2 R- ?1 I
8 F3 A8 l+ R4 s/ J# Z( T
+ r5 i, ~: b `; F. u
, [. j- \1 w6 F( c2 q: b[database]
7 [0 X3 { s' Y7 c( ^, q" ]* Y% T! d6 o
connection = mysql+pymysql://cinder:CINDER_PASS@controller/cinder! f+ ]7 s1 K* k: p; A% ]" F: I- ]
, ]3 i$ m8 \) S& L ]4 q9 x" C. n9 j& s' |5 n' V
( S- ^: x7 ?- g& K" C6 v$ X
[keystone_authtoken]
+ l0 C3 W$ s. E$ h* w( }- M
, I/ ~4 t; A6 ?8 v- hauth_uri = http://controller:5000. X8 j8 s) J: j4 t
0 f" g' o, S6 f2 b- D/ g) x
auth_url = http://controller:35357
' [) c( d6 u! q4 F' I+ G# b& K Y; ?) N: P
memcached_servers = controller:11211
% J% j) J4 ^! E7 E% C# f" I: m; J0 ^$ ~, Z* W- J
auth_type = password% b/ d: I2 \" l+ T5 N; d
# V4 z" H6 b& D; q$ {. Xproject_domain_name = default
# g1 l. Q9 t6 j% T- |" A/ A- j( X# o/ r% h" c
user_domain_name = default
: O8 B( i9 B# L2 z# u5 g
p4 k5 ]# d! S) ]; L5 gproject_name = service
8 M( O! z; z6 C* t& ~) \- b
1 n" [( D" G) T# j4 Susername = cinder
9 M3 \* H; H8 J0 n; P7 X+ U/ h( k- }( n/ J; q9 Z: W
password = CINDER_PASS
W" i4 y. J5 N
$ ~1 t# ?$ r6 P8 R2 o( @9 G' ]6 G 4 t/ A8 J# n& b, h0 w+ ]5 t% |( B: r
L$ B" P, l3 f' a7 d, \[oslo_concurrency]
1 h% s6 V* Q6 j7 E% x
- |7 L5 \* K/ e% l* J+ Elock_path = /var/lib/cinder/tmp& N n2 x5 y. m4 m3 a! o
2 x9 t- h! _* L2 @( F6 f E
5 B) C$ x. s% F' \! C[ceph]
9 a7 _) j- e, A5 @% C; \; q1 Q- |' \( [
volume_driver = cinder.volume.drivers.rbd.RBDDriver! n$ c' R' g- b0 F$ e9 a
" z# W) V( f a
rbd_pool = volumes
; c$ P/ b& n) T6 `: p; i' I0 r6 m4 c
rbd_ceph_conf = /etc/ceph/ceph.conf
2 Q9 ]1 @/ N/ N) S$ R5 x; @1 e: K1 a8 W: I) c7 U
rbd_flatten_volume_from_snapshot = false
: j8 Y( D) m8 y; J$ z; b- M0 C6 F+ \/ p! g3 o3 @6 q9 {
rbd_max_clone_depth = 59 v0 i) T( D2 u" g5 [" v2 \
& S8 T% S Z, h# q* C( x. L: ^rbd_store_chunk_size = 4( _( @" o4 e N
, G5 K0 n8 Q4 U, y krados_connect_timeout = -1& Y: R& n9 x* m
4 X5 f: ~: i0 T& u
glance_api_version = 25 U# q, f% T4 }/ y* O
0 N2 P) R# ]1 I5 I* \1 N7 H5 Frbd_user = cinder5 {& x+ q% S6 \ ?8 z( t1 i. c' C
6 G) [9 g7 q7 W R& G/ J
rbd_secret_uuid = a852df2b-55e1-4c1b-9fa2-61e77feaf30f) M- b0 H N" |9 _7 n+ e
编辑/etc/nova/nova.conf 添加如下内容:2 g" V# C% x. L* J* j
8 m# z+ \3 |6 V3 M& @[cinder]6 r1 t9 v& J2 I
' T& U, t, N6 L) oos_region_name = RegionOne0 b$ F# p. H2 {. t5 a# P
回到顶部
0 e/ v0 v8 m6 e, U; v( |5 D S) p6 P6.重启 OPENSTACK
+ `! Q$ X1 G' }; }/ t: z% L在控制节点重启计算API 服务:6 R9 V) {- _4 J, ]9 H. d5 e5 e& _" K
( m/ P8 K8 G6 N# systemctl restart openstack-nova-api.service* a! H6 I( Q: W7 j7 d+ t/ g. k2 i& Z
; K4 Z- k" O2 \& Y$ [/ K
6 ?2 N$ L- d' s- m2 U3 o0 P启动块设备存储服务,并将其配置为开机自启:
8 P6 m2 d7 L _% K; U2 L0 E. v. z8 X4 s& ]7 B# x* L* H/ Q
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service- q9 }. r8 I- \6 G5 g; u
% Q" n$ I5 g6 a
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
4 Z% g* ~/ j, Q0 C
' f1 w% v( t; x5 ~: E! v! D3 H/ i, X4 v' |6 _
启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:- S2 U+ W7 u1 i% ~4 [2 i1 c {
! J( I J: Q$ Z' c: q
# systemctl enable openstack-cinder-volume.service target.service
. Z! H& `) c+ l7 l1 v p
$ x6 L W' P. e# systemctl start openstack-cinder-volume.service target.service( U4 x' n9 p8 N4 B
" B9 _( f" ^9 O* ~' A) N
* p8 F1 v# |- }2 H& ?9 D回到顶部
3 f( X4 N9 t( k8 A: r2 b7.验证
/ W6 _3 s. l+ D, F2 o* {在控制节点获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
( P$ n% Z% u: X* x9 x! C% Q3 F. U" U3 A2 C6 M. _! A4 X
# . admin-openrc
* f% ~) q5 M& h- H# h; X2 P% D列出服务组件以验证是否每个进程都成功启动:! p% d8 M9 f1 w/ I8 ~# E) Z
8 {" Q; I* {( [# v
# cinder service-list8 ~( e ~/ P% {6 P
并且登录界面后可以创建卷 |
|