|
|
具体操作. Y6 H* h0 j6 t+ w
3 \$ @) s$ e, a) ?创建存储池) A$ k+ K: A% ?, P" p) {
针对Openstack的3个不同服务,需要把存储资源池隔离开,也就是每个服务一个Pool:
1 v: S1 \& R; t+ g0 n
% u5 W# K6 x( l1 m4 B' [3 z. X// 创建volumes池,对应Cinder服务
2 D A$ y1 x2 X5 ^1 |% Xceph osd pool create volumes 128
9 A$ |) v2 ]; W
6 v+ h0 b% }2 H$ }. N, ?" h// 创建images池,对应Glance服务2 W U6 Y$ j- b5 P9 ^" y
ceph osd pool create images 1287 Y6 O8 x6 p. n5 U2 `+ m
; k/ a' I7 N1 d. c- V- `// 创建vms池,对应Nova服务
1 e: l- i6 H6 Xceph osd pool create vms 128
8 Y% l9 w0 U7 Y4 e. q; M$ v
+ @7 F2 \, H( v7 ~ u, r& }// 创建backups池,对应Cinder-backup服务。但这个backup在同一Ceph集群中,意义不大,既然是做备份的话,就应该跨集群或者跨机房、跨区域来达到备份容灾的目的。
. n" f6 m5 C9 o) k( c" Aceph osd pool create backups 1286 K* j1 s- [- l& H& t2 B
6 B7 _ V+ f4 z$ E8 F: D3 `+ S1 g3 M
+ ~ g$ } k, G3 l安装Ceph相关包* V5 u5 O9 z# c i( A" m) Z$ c
在glance-api的主机上安装python-rbd包
2 Q7 k/ W- w+ m* j) [7 ^. t8 L; j( G* B0 b5 T7 n; P$ |1 B
yum install python-rbd2 s# A0 s0 s5 ?, D# a
! n' N* V$ V0 j8 F1 ]; T% |5 g$ |/ W$ \) x. k! _
在nova-compute、cinder-volume、cinder-backup节点上安装ceph-common包% N: M. h7 |+ M9 H6 Y1 T( U3 R0 I/ R
% \* V3 u, u' ]
yum install ceph-common# D0 X& P2 A1 z! D3 q; G2 N; d1 p
安装完ceph包之后,需要将ceph集群的ceph.conf copy到所有client端。
6 X' N( a- ~$ `3 Y
4 L' `4 @: W5 } I! m如果在Ceph的配置中打开了auth认证,就需要做如下的操作;如果Ceph中的auth都是设置的none,也就是关闭的话,可以不做如下操作。: E0 L2 b( ~0 ]( R* j! `) r
, ]3 ]* U$ V ^* }2 a+ |+ h3 ?3 B$ }' D2 b5 C
' s8 L' ~# p9 f1 e7 I! N0 u4 J7 Y! M
在ceph中创建了cinder、glance等用户,并做了权限控制 j( T; A. o2 [, l
4 ?9 M/ ]. i5 Y9 H& P5 h
ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'2 }; S6 V5 S' c% f! m g- J" X5 \
ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'5 p+ k1 s9 W3 P# j2 @) C7 w* C
ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups'0 g$ E/ B! e6 b) \
' b& X: \! X$ }1 s% v/ M& V7 t
0 y1 |6 t) o' S, R7 M将上面生成的keyring文件,保存在相应的节点上,并修改为相应的权限
^1 W! @. L+ [6 a" V
8 A; r' G8 o; H2 Z// 注意替换所有的server为相应的主机名! f2 J$ |0 i# o7 E- T
ceph auth get-or-create client.glance | ssh {glance-api-server} sudo tee /etc/ceph/ceph.client.glance.keyring
( S# J5 \% ?/ E' z! Pssh {glance-api-server} sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring/ T2 K. \% m! q/ G+ b
ceph auth get-or-create client.cinder | ssh {cinder-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
" a. R0 q3 y4 |2 `ssh {cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring+ Y7 X) r* b2 q9 K# j' U( r# B
ceph auth get-or-create client.cinder-backup | ssh {cinder-backup-server} sudo tee /etc/ceph/ceph.client.cinder-backup.keyring1 _/ p3 f& F; Q$ c" M% `
ssh {cinder-backup-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring
& {- h' L3 j4 Q$ C. H
$ m' O$ e' r. O: `! P0 w" k6 f, ^+ f! T9 h
在nova-compute节点上保存和cinder-volume相同的keyring$ Y; p# N0 e& P$ ]
* z9 T+ l* I: M8 F" p* K8 o) Hceph auth get-or-create client.cinder | ssh {nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
# r' F# w, g7 Y7 r
. A- g" r* T# ~9 W) ~, l# M
' S! i8 {6 P& A) Q在libvirt上添加secret key
: c+ J) D, c/ k3 Z; a5 y% s( s% v; f6 \! |
// 获取cinder keyring,并保存到一个临时文件中
8 R2 Y6 X3 R# ?1 j8 \* Q; @4 vceph auth get-key client.cinder | ssh {nova-compute-node} tee client.cinder.key8 S4 z; e, A. p
% o2 H" H, E9 Y! @) K) v+ v// 生成一个UUID% h. _! L8 z+ f/ O
uuidgen" {' C% ?( F, A8 f$ F
457eb676-33da-42ec-9a8c-9293d545c337
/ J! M' ]5 Q# A& j' f7 S2 z6 w3 G4 W/ B
// 修改secret.xml文件,注意替换下面的uuid
: S+ R7 x' l, y, @! \cat > secret.xml <<EOF n7 K9 C9 h/ k$ e$ W
<secret ephemeral='no' private='no'>
, a, }9 z+ L# U+ g1 i <uuid>457eb676-33da-42ec-9a8c-9293d545c337</uuid>0 ]1 Y" t2 m* G8 H6 k! N5 b# m- I
<usage type='ceph'>9 C, o; S- n9 Z
<name>client.cinder secret</name>
0 B/ k- a$ \3 W* N: R- V& e </usage>
1 \/ p. f" V5 N2 D8 F! \2 m1 M) C</secret>. e3 W! w, |3 V# I$ z
EOF4 |( N2 P* N- m4 k3 J7 `% Z
0 I+ U0 [5 n5 @8 j3 e% s1 Qsudo virsh secret-define --file secret.xml
1 s B0 a4 o( I% o6 ` zSecret 457eb676-33da-42ec-9a8c-9293d545c337 created
9 r, k l" X" W% @- S9 L& \* D1 t& p# \6 s& S( V8 v+ ^# f8 m9 g/ i4 y
// 设置libvirt的secret key,并删除之前的key临时文件
* G( K+ K" v! p/ u4 u7 Msudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
x5 [+ j+ J& f* R+ w h9 S. K5 p3 S+ L
3 h; c. c9 l& @$ H在三大模块中增加ceph相关配置
1 [ d+ y; W2 B' F( n% _Glance配置
: P! C8 S: ^$ W1 l: t1 v) d& S0 n! L
- R. r3 Z* f, n8 N- A// 在/etc/glance/glance-api.conf中添加如下:2 ~4 P/ x' G g$ N: t
R% M& M/ T* a: P5 P' e// 在DEFAULT域中增加:' T( Q9 }! k9 o+ ] R- |+ x
[DEFAULT]
0 }1 M1 N' E8 b* L: jdefault_store = rbd+ y1 ?1 p! I0 M/ `. M# Q9 y/ v
# \' w8 u/ R( G6 l) d// 在glance_store域中增加如下,如果没有glance_store域,直接创建:9 H9 A/ `! `& w0 \
[glance_store]
7 s; `) s' {2 _# i, z" ?7 |3 K3 B2 A9 pstores = rbd) J+ A J) ~ a5 k) z
rbd_store_pool = images
5 k1 r. A% L1 N2 g7 @1 M7 b% K' |, Srbd_store_user = glance0 O/ E+ {2 A! v3 I4 F! ?7 K/ T
rbd_store_ceph_conf = /etc/ceph/ceph.conf
) w: W: T4 p2 P3 `7 w5 lrbd_store_chunk_size = 8" I7 [% m( R6 F5 e+ _9 O* r
; N2 ^6 r9 @0 A0 v6 G$ T2 u1 o6 b7 N& ?
! e" ~0 Q# O0 ~Cinder配置
9 O0 b3 P) U6 A# U5 t! `5 ~6 F( P* ~+ y; C7 Q1 T
// 在/etc/cinder/cinder.conf中添加如下:
( o& E( s+ d. J0 p
# Y: o$ ^% a. s; x1 L9 u3 T// 在DEFAULT域中增加:+ P5 P; Y+ t5 J$ L# K
[DEFAULT]' c! c" G3 S. `. Q3 e
enabled_backends = ceph
0 z: ]" Z+ {4 ]3 V8 d- D1 B" X/ O' ?1 `8 ^% V5 x1 r
// 在ceph域中增加如下,如果没有ceph域,直接创建:6 v P* ~" L$ o8 R
[ceph]
4 w# @2 D; B; |7 s7 }7 b j! g7 ^volume_driver = cinder.volume.drivers.rbd.RBDDriver
7 U) {! Y* p) p! e* prbd_pool = volumes
) y ~3 |6 O! D0 xrbd_ceph_conf = /etc/ceph/ceph.conf. y7 E6 T. A5 z3 t
rbd_flatten_volume_from_snapshot = false
' {+ ^' n3 ~$ }* m. s7 L5 a) q* nrbd_max_clone_depth = 5$ q& l6 N5 a$ V5 X% B& M
rbd_store_chunk_size = 4% l4 e% B; i1 I+ ?* G3 N# R
rados_connect_timeout = -16 A/ V4 Z0 d# h a# R, _: z
glance_api_version = 21 h3 I K. w$ G, h8 P e f
; f2 T x1 c2 A
// 如果使用了ceph auth,还需增加:
7 }+ i% m }5 Z. o4 m3 Z0 Q7 Srbd_user = cinder1 }* v2 n/ @) p+ m- B4 j x
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337( E: ^+ F; T' D% d
/ @- L! M* w; X9 h1 X( A
4 U& d8 W9 l+ a( B/ s$ ZCinder-backup配置, o: p) M, w' Q6 b/ \/ u
" Q( ^- ]: o0 A6 k, h. }1 t$ [8 L
// 在/etc/ceph/ceph.conf中添加如下:
5 @# R; H# @4 M$ \ \8 x+ abackup_driver = cinder.backup.drivers.ceph( Z7 ~7 |* g) z
backup_ceph_conf = /etc/ceph/ceph.conf
0 t6 \, I% d- ]backup_ceph_user = cinder-backup* U" N! m' o! l5 R- L0 Y
backup_ceph_chunk_size = 134217728" x) E& E/ C/ q, I6 R
backup_ceph_pool = backups
5 F" B4 L0 k9 R3 R" |backup_ceph_stripe_unit = 07 d' f% A) \* M
backup_ceph_stripe_count = 02 l4 [5 {6 H6 k5 K0 s
restore_discard_excess_bytes = true# Z1 F# H/ \5 T) I( o
: E N9 B6 Z' Y8 X
0 R: W/ {# w7 J# S& B) f) C计算机点Nova配置5 @, V4 H( F2 g$ ?1 I/ p, X
0 {# O/ j5 Q& G/ w9 Y1 h
// 在/etc/nova/nova.conf中添加如下:
/ u/ Y! c0 u2 P1 K[libvirt]; m/ m# Z, t' Y/ z
images_type = rbd
7 P( y% X8 M% U4 s- ?images_rbd_pool = vms
! F$ h5 P: Q, z! L. a* q& X# u9 |! eimages_rbd_ceph_conf = /etc/ceph/ceph.conf. K8 ?3 [4 O1 v; _' o. |! n
rbd_user = cinder
) t4 w0 `6 K' E, crbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337
( ~7 Y) l- f; l! s) p; hdisk_cachemodes="network=writeback"+ h$ U: [' w) q% [0 K) A& u
|
|