二、只在node1上操作
- e$ l; Z. ]6 X/ I& W8 E
三台服务器分别为node1 node2 node3 其中我们在node1上面安装ceph官方的自动化部署工具,也就是说我们只需要操作node1即可完成部署
], o% s% Y* i4 _1 k: _
* p' I7 X7 r, J* u+ _- \) z, L
#添加服务器主机名
% n9 Y/ ]5 ?: T9 h+ _echo '
U' }; R5 ^4 j {( J- N C0 t4 I$ T& i10.0.0.11 node1
" m3 D3 Z9 M5 W+ A/ B! j5 ]10.0.0.22 node2
8 ^3 `4 O+ `/ P10.0.0.33 node3
$ u6 \( @) X# h3 m( u10.0.0.44 node4
/ |* a2 t, @) a C0 A9 a8 a10.0.0.55 node5
- s! v0 X$ E5 w: q) }/ R4 T10.0.0.66 node6
: m" O5 o! J3 T& @5 T; {/ E8 p'>>/etc/hosts
$ d: Y: r0 g0 k' `3 ~# x2 x
+ H6 J( f, G" \
#创建秘钥
* l/ A9 k4 r- n% t1 Tssh-keygen
/ k0 O* |% h) Y' } z: Mssh-copy node2
/ n3 r3 ?2 ]! |9 ]' Y9 M7 s' L# ?: {
ssh-copy node3
, u6 o9 U& I8 @2 x' m
2 v" g2 \/ ?1 U( J& {
#将node1的hosts文件发送到其他服务器上面
Z9 K$ M' u; v( ]/ v) lscp /etc/hosts node2:/etc
- z5 [5 ~, f0 `* H: U5 x3 Z* F7 E1 s
scp /etc/hosts node3:/etc
5 H* _; B# \7 G% P( u
7 r2 c9 f) P: v( z8 o4 @4 L+ k! h三、开始在node1上安装ceph
) ?; Y z% v; `
#安装ceph-deploy配置工具
7 _, R& Y# a2 F8 ?2 nyum install -y ceph-deploy
! K' H e" e! W3 R4 y
yum install python-setuptools
7 e* d3 d( w# Z* N% P
- Z- m- _" e$ u#创建配置目录
& U _ j! J' ]6 X3 ~, c! kmkdir /etc/ceph
- l' f: b7 i2 x6 T
cd /etc/ceph/
# h- U3 }0 i! C0 K1 \
5 W+ p+ U# M: ^8 D#初始化Mon配置
' t( d5 C8 a1 J) U9 V
ceph-deploy new node1
) D$ {) h) X. d6 k! V7 X8 i7 O @; }% c; U0 Y! e
# #修改冗余份数为2,日志大小2G
+ R# d( R7 m) v3 W# #配置网络,单网卡忽略
$ {+ b9 e v" E# o5 |! l8 _; n' Xecho '
$ ]( f+ o6 c3 ]6 U: T. Ipublic network = 10.0.0.0/24
/ V( w& ?+ q X
cluster network = 10.0.0.0/24
/ r& T/ r7 ^+ [0 Q/ K! c2 D
3 e5 L) ?, n Amon_clock_drift_allowed = 2
' f6 Z( O/ e% @5 K5 `, u$ p
osd_journal_size = 4086
/ K" b7 ~) v3 x9 P |' |osd_pool_default_pg_num = 128
# w3 _' f% o$ Qosd_pool_default_pgp_num = 128
^9 d0 z2 J/ T1 l2 z: n. H) L
osd pool default size = 2
8 M, H0 }% i! C: v
osd pool default min size = 1
1 l) `# d2 p& @# N5 q, A2 ]) T
rbd_default_features = 1
; b# B1 D) V' C* e8 A, Xclient_quota = true
( M, Y; _6 x3 b
'>>./ceph.conf
' c9 t5 ?5 F, X/ o1 L% N& b# l" _; S" f
#安装Ceph
3 H! w- D& f0 G* u" m, ?/ C7 Vceph-deploy install node1 node2 node3
5 p7 H4 x; G0 M; m) A#yum install -y ceph ceph-radosgw #实际上是安装这2个rpm
9 l9 c) ]/ |9 j6 c2 X8 H
4 `5 r$ e+ y s) I" B9 g) f0 Y" e
#初始化monitor和key
- W: F) |5 ?. bcd /etc/ceph/
8 {/ K5 Q* C: C x; j: Dceph-deploy --overwrite-conf mon create-initial
" s4 j4 ?/ J2 x3 w" ~+ w) l) V3 D; V, S: T5 E! o5 |+ F
#创建osd
: ^$ Y' `# |% n" ?6 Aceph-deploy osd create --data /dev/sdb node1
: Y* u- z3 X/ I2 w/ t4 W, x3 R! _7 w/ b4 _
ceph-deploy osd create --data /dev/sdc node1
1 [! k2 S4 E) H; l8 w
ceph-deploy osd create --data /dev/sdd node1
5 j+ Y! A4 s- O) C' \0 Gceph-deploy osd create --data /dev/sdb node2
1 n8 o. W! r$ p3 I) tceph-deploy osd create --data /dev/sdc node2
# E4 e% n& r: I: F D
ceph-deploy osd create --data /dev/sdd node2
0 i% {' e/ ?5 i; z9 b* X
ceph-deploy osd create --data /dev/sdb node3
0 ]" g" T$ L6 e3 j0 e! p
ceph-deploy osd create --data /dev/sdc node3
& _+ Z1 {9 m1 S- s% f, R! Zceph-deploy osd create --data /dev/sdd node3
: C6 n# q" Z/ u. A' o
: V; M) c* q p5 ]6 }3 K1 N& y
#拷贝配置及密钥
0 j) w. p- H4 n: A. E9 K
ceph-deploy admin node1 node2 node3
: ?9 [, T6 z3 ]chmod 644 /etc/ceph/ceph.client.admin.keyring
( c- W1 O7 Q. j0 `! `
! m& b) ^& t' J( y9 U+ [3 y" w#创建mon
' t6 }6 S' b' d/ k; G
ceph-deploy --overwrite-conf mon create node1
4 m& e0 [' b" _) }( y- F; b% _ceph-deploy --overwrite-conf admin node1
4 C3 D+ O: k' E! a1 W) |
- X8 Z# [+ x, [' h! N% m2 r6 t5 B
#添加mgr
( J6 ~# D: ?, l+ ?7 w
#ceph 12开始,monitor必须添加mgr
/ M% T" m- z; h' c6 S0 z2 cceph-deploy mgr create node1:mon_mgr
( j. L: l C$ R( n4 R
# I# b" r: B; v: q
#启用dashboard (在node1节点)
' U6 L; F+ k U% W f6 A/ x
ceph mgr module enable dashboard
6 ?5 i, ]1 F7 j) `& A- p# M
' ~* s& `1 h% l8 ?/ ?. r3 C% Y$ I- W3 k& j* [. J
1 }+ P m8 a/ z2 W
#查看相关命令
' \0 P* p9 f; g8 k: ?/ f' U
ceph health
# i; s) J: K) y# i( Mceph -s
, Q% Y: k- v3 z$ B4 \0 S. R- K4 r) Hceph osd tree
+ l8 k2 n' U- ?. [4 K
4 u+ j: X7 N& m$ g- \' n+ R9 z7 B1 Nceph df
- q5 w; ~4 [: H0 |ceph mon stat
" P& ^( x9 x% y% z4 D7 `ceph osd stat
4 m/ _& i% I# g: }8 |( Lceph pg stat
: H2 k: }! i* Y7 L- X: h" ~* ?
: Z$ E) O- d- V9 ^* Z
ceph osd lspools
$ s6 `) T" c7 \$ g3 B* U8 m! s; Uceph auth list
* c! z( H$ G+ \9 W
( {2 {1 F' Y4 l' g4 H
Ceph L版与openstack Pike对接
; n/ T0 K9 t9 I6 E+ |/ D
+ A4 X- A5 R; j1 R! k- z- K1 {
环境opestack Pike的controller、computer、cinder三个节点已经安装完毕,并且能够正常的使用
8 [5 C9 P8 B; N- Y+ I
' U0 \' |1 i' y* W& Z4 p7 Q6 B! H6 Jnode4为controller
6 ]/ F# U) b/ N3 ~2 f* [2 A
node5为computer和cinder
- p6 N7 w7 f: T+ T& \0 G' e# D4 I/ t1 A+ R& k0 |7 f4 \
一、环境准备,所有openstack主机都要操作
% h. n( }3 q9 r#所有openstack节点都添加主机名
, h P2 w0 q( f1 T$ ?9 ^9 h5 H
#添加服务器主机名
) w2 U9 c$ \: |
echo '
2 A* f, J* Z% L9 U3 E0 U$ j \10.0.0.11 node1
$ k1 t" t- J$ Q' F7 L6 }3 R) d6 D
10.0.0.22 node2
9 F! N0 M. o3 L% O% F10.0.0.33 node3
" x/ M/ X$ d1 }9 c
10.0.0.44 node4
2 E2 P$ ?2 ^5 J; {( {" e T; @10.0.0.55 node5
$ M4 W( F9 i; B2 g$ ?+ Q8 _' _
10.0.0.66 node6
* K( y2 t' W9 Q6 ^) i% w: a6 o
'>>/etc/hosts
8 m1 P3 F. ]1 f0 r) R5 r
3 i9 z7 z; ]+ k" X) T2 q#创建ceph源
, Q, y8 K" k! b8 l! uecho '#阿里ceph源
* G3 C; M- e9 n2 x/ H- e[ceph]
: Z- n" s6 a" P8 H. D4 A! gname=ceph
" w# A3 i0 h* X3 s; d6 `baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
2 I# g" u% G& x5 x1 n/ H) tgpgcheck=0
: F0 V% E/ i8 |* u4 V* I[ceph-noarch]
8 P$ Z; d- `) w% X5 v1 M/ U% zname=cephnoarch
3 j. L( j z- a( d3 c1 ^
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
( `$ V6 S% w. ~$ u
gpgcheck=0
& o( y8 ]9 O |2 P( m[ceph-source]
" Q, d5 l7 } p6 C/ I6 N
name=ceph-source
1 x2 ?5 f: J% u! {2 ybaseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
' D) k: M& r( p. }* V& Hgpgcheck=0
9 g, x7 `3 _: e3 b2 n' \: I/ K _
#'>/etc/yum.repos.d/ceph.repo
5 ?0 a+ w0 z* d6 {. M v
yum clean all && yum makecache #生成缓存
$ h& e( ?% ]# j6 }% k4 F5 ?1 Y
#关闭selinux、防火墙
" E$ K/ Y9 Y: G) Ksystemctl stop firewalld.service
0 ~7 x7 }. v2 |" r; \0 L/ Y# Ysystemctl disable firewalld.service
% I% }6 k4 F3 r$ m0 t9 e
firewall-cmd --state
5 N% o, b% v) X P* |) {
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
4 r$ t& J& W$ }
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
6 F, ]3 w. N# L: k4 N
grep --color=auto '^SELINUX' /etc/selinux/config
& g+ o8 Q7 k$ `setenforce 0
3 P2 Q, f. `7 p' u5 i& S% A
. _$ t+ b3 g/ a' |) S0 N3 r5 k#将glance组件的节点安装ceph客户端
( ~* E# q- b; W% F# m+ \8 fyum install python-rbd
7 s7 W# B& m" e. k, ` S2 Q3 {& W) \
; i8 y! ^3 P, k6 t# P
#将nova和cinder组件的节点安装ceph客户端
/ |; v8 M+ @% ]. `- w8 Cyum install ceph-common
: @( C; l e+ C4 a p" W0 n* ^
, y2 k$ H; r8 B#创建POOL
2 w' v* u" C. n; v1 Gceph osd pool create volumes 128
! s2 a8 O. a( j, k0 Z! p N
ceph osd pool create images 128
2 V8 K& |3 |: X1 Rceph osd pool create vms 128
* W- T( @# ~+ m4 U3 M R* v7 B! c7 P' n9 O8 S/ [/ T# R" C
#初始化POOL
, G+ }% z0 V% trbd pool init volumes
6 b, Z) w5 y6 q& @ `7 W
rbd pool init images
" O6 {4 @, `5 C9 `8 M
rbd pool init vms
# d) u0 N4 y1 A/ S& T
* Q" q% \# Y m3 F0 f
#将ceph的配置文件导入到各个openstack节点上
+ s @2 P3 y) ?; j5 o+ B: Wssh node4 tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
8 D7 B* ~$ D: X2 Y: F4 X8 f0 A( a
ssh node5 tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
+ ]2 o1 e( ^5 [7 k! S- g
1 ~( ]0 F' o) j! O#创建ceph用户和密钥
2 J3 l) k; s5 v @" rceph auth get-or-create client.glance mon 'profile rbd' osd 'profile rbd pool=images'
( g5 F; F1 w8 d$ T) |' U, E$ _6 Q8 }ceph auth get-or-create client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
0 D+ f) D2 V/ E i# _ceph auth get-or-create client.cinder-backup mon 'profile rbd' osd 'profile rbd pool=backups'
) D/ i8 j0 S$ b F! `
# x6 u0 X; @( j6 t; D#查询用户,写入文件
( f: w, E! c9 A
ceph auth get-or-create client.glance | ssh node4 tee /etc/ceph/ceph.client.glance.keyring
0 [; G- H! k% }+ Rssh node4 chown glance:glance /etc/ceph/ceph.client.glance.keyring
7 d+ a7 {# E& c
ceph auth get-or-create client.cinder | ssh node5 tee /etc/ceph/ceph.client.cinder.keyring
5 i1 o( x' i) Mssh node5 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
+ F* ]$ I; Z# I) I
ceph auth get-or-create client.cinder-backup | ssh node5 tee /etc/ceph/ceph.client.cinder-backup.keyring
) }% t) S4 f2 U' o. ]/ K3 p$ H
ssh node5 chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring
B! f, N! R5 Tceph auth get-key client.cinder | ssh node5 tee client.cinder.key
6 z7 I6 g2 \1 H9 H _* u3 O3 W; o- [# z/ V/ b
ceph与glance对接
; }0 `0 x& M% x* a2 q0 ^
#更改glance默认存储为ceph
; g. ]- q# J- t
#修改/etc/glance/glance-api.conf文件,添加一下内容
/ W. W, F7 E- Z# H8 G3 m: g
[DEFAULT]
% s6 o5 Z, |' h; g$ U6 _
default_store = rbd
0 r( b0 V9 c7 c6 L) ^1 X& tshow_image_direct_url = True
1 U9 \- n* y$ B7 W% M& C0 E$ U$ Y+ I& O/ I
[glance_store]
7 l* R# w0 |( b9 T$ s1 P% S% Q: b
#stores = file,http
0 I" r ^ O- K, r#default_store = file
4 Q8 `7 O, n, ^% G
#filesystem_store_datadir = /var/lib/glance/images/
, e. U' ]9 u: \stores = rbd
9 G1 Z- M% a& G$ m8 p
default_store = rbd
4 }4 ~% @8 l& c
rbd_store_pool = images
* k4 ]: P8 ~' l
rbd_store_user = glance
! i2 B. O2 V6 t/ t- Grbd_store_ceph_conf = /etc/ceph/ceph.conf
8 X& H( H) `. G$ N3 O1 P) t
rbd_store_chunk_size = 8
6 v2 m7 Y, c6 ?3 ~8 d8 a) E
" H3 k- y+ ]. Z
#重启服务
) H& w6 R# m2 e4 `systemctl restart openstack-glance-api openstack-glance-registry
9 R6 ]/ Z$ x& ?, k4 g+ x# e( O; V8 E
注意:在glance节点你需要查看/etc/ceph目录下是否有glance秘钥
1 g, {: h8 n5 m& z: k! f$ X& _2 J
4 k, X# C, O5 w! i+ iceph与nova对接,在computer节点上操作
, O7 x3 c8 q f5 W7 m#密钥加进libvirt
( u4 x4 F" B" Z( n. q5 E3 Y+ |uuidgen
9 N4 `0 g6 D# A7 ^2 { e7 \cat > secret.xml <<EOF
$ \% L8 Z. B, P8 a4 h/ n0 n<secret ephemeral='no' private='no'>
& }5 L3 I( `& V9 C& b( F2 }* H <uuid>ff2e1190-30f5-4849-9c1c-886b1e1ee181</uuid>
, i- y+ W& M5 D& R
<usage type='ceph'>
6 y! Z8 L* Y4 C* z
<name>client.cinder secret</name>
. A# o& w$ g' u4 N </usage>
. p# Q2 ~/ ~. X
</secret>
: |+ f9 h2 N) S" wEOF
2 k) }6 q; P/ ]7 y% P; C% X0 k3 X4 q$ A* P
virsh secret-define --file secret.xml
# n4 t; ?1 f3 O. @" F
* n) D4 w' g; q( B6 _
virsh secret-set-value --secret ff2e1190-30f5-4849-9c1c-886b1e1ee181 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
0 s. U8 W2 ^" G* S! K, i
/ p) M: X# N8 Y2 W( ]4 `virsh secret-list
3 o, Z6 n9 h/ iUUID 用量
" [5 A8 m, S! f2 b: {, Q--------------------------------------------------------------------------------
2 s0 Y2 F2 l/ c( }: _4 `ff2e1190-30f5-4849-9c1c-886b1e1ee181 ceph client.cinder secret
1 y& r3 H3 p1 w7 x7 C
8 N* X- Z ~* g% Z: k' c% P1 T在computer节点的ceph配置文件里添加一下内容
2 a" w! X/ O; {$ c* v, gls -l /etc/ceph/
% l4 ]/ K' q' q' v! f$ j#ceph
8 S. s, H. V2 h2 Y6 g* _% {7 O
echo '
1 R3 ?5 f; l& O. }$ V3 U G9 o[client]
8 x {7 S4 C( S
rbd cache = true
: T/ C" Q+ [$ W0 Drbd cache writethrough until flush = true
4 Z0 L9 x$ P# ]1 {, J: `6 y; Z! }admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
: E$ a$ q9 {3 E0 l- P* Qlog file = /var/log/qemu/qemu-guest-$pid.log
7 x) U# v: O% D8 \) M# Erbd concurrent management ops = 20
$ A! E1 r0 X1 i4 L G2 d
[client.cinder]
2 m( b* o$ d+ q
keyring = /etc/ceph/ceph.client.cinder.keyring
8 G2 \0 F" Q! b2 \( t
'>>/etc/ceph/ceph.conf
h$ _9 u1 b: a' G, i7 _1 v
$ D+ O; s- l) rmkdir -p /var/run/ceph/guests/ /var/log/qemu/
5 f4 l1 v" K5 c$ d- S+ cchown qemu:libvirt /var/run/ceph/guests /var/log/qemu/
/ y2 j! V4 Y: p# k1 T2 Z
K3 E0 G- m ]# ^* o#使用ceph存储,在/etc/nova/nova.conf添加以下内容
. b* Y+ S7 E9 ]/ W[libvirt]
7 Q: O6 u( R, ^5 Tvirt_type = qemu
?# F1 z% o) a0 {. jimages_type = rbd
9 ^. `5 `2 U2 Q( timages_rbd_pool = vms
. m+ `2 F n9 a8 J2 Y: T9 M- a
images_rbd_ceph_conf = /etc/ceph/ceph.conf
+ L) S. f) E8 ?
rbd_user = cinder
8 M: M9 w# q2 _% y" O) arbd_secret_uuid = 'ff2e1190-30f5-4849-9c1c-886b1e1ee181'
* |. I; J/ l. ]3 Y2 d" N; V4 Z% y
disk_cachemodes="network=writeback"
' \4 D, z- N5 [: V8 k- S! hlive_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
& N& \9 H2 ]4 Y; E# \& }libvirt_inject_password = false
3 A2 v* b3 ^4 c" J5 E; \libvirt_inject_key = false
7 \3 M R5 \. j! `$ {libvirt_inject_partition = -2
) F' L5 t, c2 }9 k! ^8 _. J
. {/ _! {5 F3 O#重启服务
! |( |5 G9 \8 g# b1 i$ [4 [- P
systemctl restart libvirtd.service openstack-nova-compute.service
2 o0 h/ }" H/ k/ {* J7 f5 y8 u. m- F6 Y! R7 [ h; j5 ~ z
. p8 _2 v1 v9 R8 |
ceph与cinder对接
4 s" q h' |- a( e' W1 o8 |* L1 I+ x/ w7 r; B, t1 W
#修改/etc/cinder/cinder.conf配置文件,注意:将之前的lvm的配置都删掉
% S6 {( `' z) e5 V% s
[DEFAULT]
. I2 i! N' F6 x+ Q6 f; V#enabled_backends = lvm
' I! L$ S- e) a( b/ K, t# E- ~enabled_backends = ceph
/ U; C' T4 }4 U, i8 X. \: \
7 F4 D9 {; w% k: _[ceph]
9 Z) D8 j- l$ S3 X* gvolume_driver = cinder.volume.drivers.rbd.RBDDriver
& q; B4 D0 k a8 {
rbd_pool = volumes
: H" ^& [ z6 B
rbd_ceph_conf = /etc/ceph/ceph.conf
% n2 D) U2 A& y9 h+ R4 h4 Qrbd_flatten_volume_from_snapshot = false
2 w4 z/ v/ w, I+ e
rbd_max_clone_depth = 5
) I. S+ T' f* P, T
rbd_store_chunk_size = 4
/ p# v( i' M) @; `6 e
rados_connect_timeout = -1
- D/ {1 s7 r- t, [, u* q: j8 l1 r* Kglance_api_version = 2
( A* y7 S8 a% F3 V; e/ }* F
rbd_user = cinder
! P7 ?: c) h) C$ L/ r/ s
rbd_secret_uuid = ff2e1190-30f5-4849-9c1c-886b1e1ee181
/ B6 b: }+ c$ C
4 h- |% Y/ d) a* c6 p( f0 ?' [
+ V. u V& M+ l' G#重启服务
1 i A* e+ O# ~; r2 t4 t q( D; c8 G
systemctl restart openstack-cinder-volume.service
7 T& `; k6 k; n