二、只在node1上操作
7 j e* f1 Y0 \+ i W) m% |$ ]# G三台服务器分别为node1 node2 node3 其中我们在node1上面安装ceph官方的自动化部署工具,也就是说我们只需要操作node1即可完成部署
6 V1 ]. B9 s& g) ^- z
6 a9 Z3 ?% q4 l3 G- q. U#添加服务器主机名
. U; ]5 U* T/ A8 n. R0 y8 s% Aecho '
1 \, I! o0 a! N, J+ ]8 y Z
10.0.0.11 node1
- e3 A4 |6 b6 w0 A/ m2 ?
10.0.0.22 node2
- U- o: q% m+ [. p! [0 n
10.0.0.33 node3
8 @4 z' H0 t7 k/ ]! \10.0.0.44 node4
8 L. ^* r/ y9 s10.0.0.55 node5
% g+ r |& ^; }, m! w
10.0.0.66 node6
( ]+ `- F) t l2 c& ~
'>>/etc/hosts
: M) Q" R* Z' g$ J ^7 R# j* g1 X
#创建秘钥
- Y$ f! D( \9 g. }0 l3 |
ssh-keygen
* U' M$ @% y! i1 Xssh-copy node2
( M: m" w; ?! y9 [' tssh-copy node3
, r3 b: s# |1 b( V
0 M2 p: @; W# \/ B#将node1的hosts文件发送到其他服务器上面
2 E" C' v7 _5 C7 L7 U
scp /etc/hosts node2:/etc
' d+ U1 e) ^" _+ O: |scp /etc/hosts node3:/etc
$ V: U7 t+ @& z# e+ `
( r, Q1 z/ }0 u! Q三、开始在node1上安装ceph
0 U/ \9 l c1 n. o: z
#安装ceph-deploy配置工具
" R! c" J) h) u% |8 P, M- Uyum install -y ceph-deploy
8 [4 y1 Q1 G( @: t
yum install python-setuptools
2 G0 Z, o V F, i6 o" X! _4 R% `& J8 `4 H( E
#创建配置目录
6 h1 T6 y0 |6 V4 i( d# c, Q N* mmkdir /etc/ceph
. ~8 U- D( t$ c$ q. C8 |0 `. K! Z
cd /etc/ceph/
# U1 [" o1 Y0 W9 g8 y8 I4 @; _# Y+ O1 a. \: V. Z) u# h
#初始化Mon配置
7 T8 e3 k0 {& p9 [0 B* M) r
ceph-deploy new node1
0 \6 v$ ?, y1 B
% D+ g! i5 M @2 |# #修改冗余份数为2,日志大小2G
- k, |! @1 A( s, F4 |( ]3 v# j# #配置网络,单网卡忽略
9 z( D# q7 u& r' Q9 I5 i6 A5 p# recho '
+ ~7 V6 g6 y& h8 q) i) ~; t& zpublic network = 10.0.0.0/24
W4 ^9 J. R. z' |2 p" G
cluster network = 10.0.0.0/24
7 {( W1 z! b3 @8 F# F( Y
- _. _1 X; p! c2 e; L( D8 bmon_clock_drift_allowed = 2
" G2 Y' w+ \4 v. v. k* Gosd_journal_size = 4086
9 Y5 |$ R" t; S( Q, {8 I, M( P
osd_pool_default_pg_num = 128
5 V1 m2 N6 ^- z) Y( v
osd_pool_default_pgp_num = 128
7 e9 a; |+ P3 g* ?* {. I
osd pool default size = 2
. o w& p. C/ x+ F! L; ?3 g! b
osd pool default min size = 1
5 C/ {5 e# @- c. s6 Urbd_default_features = 1
. t4 R6 I5 |5 N C* b4 l
client_quota = true
6 W( p S/ z; F: b3 B* s'>>./ceph.conf
$ D: x8 N9 p! M0 T! ^& L
8 I0 d. `! p5 q1 ]8 Z5 {" \
#安装Ceph
; ^; C. k |% r& T m
ceph-deploy install node1 node2 node3
* K) J0 _0 c' z) e- b#yum install -y ceph ceph-radosgw #实际上是安装这2个rpm
9 W/ ]# i6 o- [+ y1 u7 Y
m' i2 P; }& U+ I#初始化monitor和key
& p' N( r" O! Vcd /etc/ceph/
4 n: c2 ?+ M0 U: h' _1 Cceph-deploy --overwrite-conf mon create-initial
0 t5 ?: |- ^; O: p0 E- k0 Y0 l8 r7 L7 I: B" `; H- p- z1 k2 C; r
#创建osd
: z, M6 t# [/ M1 u* e2 }4 eceph-deploy osd create --data /dev/sdb node1
, t% {& ~! V7 o6 s9 w0 c. K5 M
ceph-deploy osd create --data /dev/sdc node1
# w2 F2 s1 j6 Q2 {9 Z5 tceph-deploy osd create --data /dev/sdd node1
7 M# S) o# l, m- k
ceph-deploy osd create --data /dev/sdb node2
+ v, [6 b* Z2 D
ceph-deploy osd create --data /dev/sdc node2
' L T$ N2 b, B7 e: Q: r6 V. ?$ T7 x( ]* Cceph-deploy osd create --data /dev/sdd node2
% x t/ ^6 U* ]! P1 t/ O% y, w- n
ceph-deploy osd create --data /dev/sdb node3
4 S/ L& ?( {* O$ Q/ P
ceph-deploy osd create --data /dev/sdc node3
& X1 R& m3 i% i' ]
ceph-deploy osd create --data /dev/sdd node3
# K) Q: `! h" }( l6 F* F! e4 m
; c3 T$ n! s+ z
#拷贝配置及密钥
9 R) ?4 @' U" J1 D' k# m1 Q+ H
ceph-deploy admin node1 node2 node3
, q6 |& J9 {/ i1 L2 F: C
chmod 644 /etc/ceph/ceph.client.admin.keyring
# ~, b2 k; B n" ?. p& W
: t- Y* q! E. |" _5 C r#创建mon
" D: |7 M: I9 g% g$ N
ceph-deploy --overwrite-conf mon create node1
! v( Z9 ~ J9 ^! _% N8 |/ _9 _
ceph-deploy --overwrite-conf admin node1
V3 ]( ^* C+ \4 Q* R* U) p5 u
/ t/ j6 Z: J9 O j% C9 x! ?/ C' W#添加mgr
! H7 D c/ ?: Q0 g
#ceph 12开始,monitor必须添加mgr
9 j+ ~4 ~4 o: o2 c7 G
ceph-deploy mgr create node1:mon_mgr
% o: Q k& x3 C; \8 s/ G% r3 A2 g
/ Y0 H2 k6 E1 K# e& a#启用dashboard (在node1节点)
6 L. J3 m X r! l1 r
ceph mgr module enable dashboard
+ f6 z5 |, c! b+ K* x# v
& j4 K/ M$ w9 l1 V* ]2 m
' o: R, V6 P3 V2 }: G3 e* |" w8 D6 P, D# h8 S O
#查看相关命令
. I. J8 R1 N6 bceph health
+ v7 w9 G% i4 K7 u% {
ceph -s
; u* E/ _% H6 |1 q' f
ceph osd tree
7 W2 f8 z& U7 P- i- r
0 O. B0 }4 U4 f; @ceph df
, G: X1 y4 }0 e8 M: o0 wceph mon stat
! ` x) ^& S. U4 i. kceph osd stat
" P& a" I; g; g, Z; k% {ceph pg stat
~, t+ T' [9 b" x b) @
( n) j1 h9 H' m) f
ceph osd lspools
) C8 V% U- [0 y: f( s. O3 D( Pceph auth list
0 `+ C! N/ F1 B: m3 X% Q0 F) e. ^
* S/ M2 X5 U! P' VCeph L版与openstack Pike对接
& d. E' {. f6 \5 m
8 |2 X" N9 I) |! r# A环境opestack Pike的controller、computer、cinder三个节点已经安装完毕,并且能够正常的使用
3 b) Z1 \: O! b5 f
( ^8 n, o) ]/ O- `/ V7 ?, C3 q d: z$ }+ Enode4为controller
; G/ T- C& a; V* ynode5为computer和cinder
; T" O7 c' \9 K) p( b8 g2 X9 D3 r1 V! r B$ I w1 a1 O7 ~) T
一、环境准备,所有openstack主机都要操作
. g6 d- ~* B( Z, ^) G
#所有openstack节点都添加主机名
: `2 d' b9 \$ k( |+ c" V0 k4 y
#添加服务器主机名
" A0 j8 G- k4 T e% @echo '
& ]9 z+ \ {3 s! z$ b- {10.0.0.11 node1
, s( B/ G+ N$ e: r6 W10.0.0.22 node2
) X S: I+ ~/ i" l4 Q: @/ W' t
10.0.0.33 node3
8 y+ ^9 Y6 @! z3 m' g% a: i7 j10.0.0.44 node4
) z* c+ w5 A" c' J3 A10.0.0.55 node5
3 O6 a O! L) x( x( Q1 d2 F2 P10.0.0.66 node6
4 _* r* G, R) C Q$ i
'>>/etc/hosts
! l* j! ^' G1 `4 A8 u
6 ~: k0 H5 M( O$ g% k, O4 J& ]
#创建ceph源
: `3 o7 q, n4 @# v( Z Y8 P+ i
echo '#阿里ceph源
' E3 R$ V" V3 x7 C' ~* ][ceph]
1 ^) o& W! \0 ?name=ceph
5 g' D2 B* j6 @ o H' y( z
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
1 H$ X2 @8 `$ J* Y3 ~5 dgpgcheck=0
) O$ e4 c1 Y+ J; L' j4 l6 }[ceph-noarch]
. }# G: l9 a5 }1 o$ i1 Wname=cephnoarch
0 \5 o% w# K8 n* e7 Hbaseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
0 p4 L4 S4 K. P& P, Z) bgpgcheck=0
. u% V! D/ M6 Q4 Y[ceph-source]
) f' G8 L2 F9 M6 M; [: A) f
name=ceph-source
# [; I3 d; {) ^
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
& V G5 D3 y* z9 n1 l5 F M, V0 H7 W
gpgcheck=0
3 y5 E; s) N. v: k( d. f" `9 `#'>/etc/yum.repos.d/ceph.repo
1 o) W* L' G" J b
yum clean all && yum makecache #生成缓存
& d a+ o- g$ ?9 r5 j6 t: f
#关闭selinux、防火墙
4 a O2 B0 M5 U+ tsystemctl stop firewalld.service
D; r. D- S: e Z6 O+ z- csystemctl disable firewalld.service
2 _4 P* A6 {+ E# dfirewall-cmd --state
7 E9 T* y& s9 A+ N+ Ssed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
: i, D& e4 b( B0 U7 `! }! N$ z6 i" j8 s
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
6 J# C) J/ D9 m. I# r/ u) u* dgrep --color=auto '^SELINUX' /etc/selinux/config
* w* W; \, F# q. V, Q" b& L
setenforce 0
( D( g& O2 {$ m; d( k# o
6 m0 p& s" Y$ ?( h" v. Q#将glance组件的节点安装ceph客户端
+ H$ g9 v7 V7 ?9 y! \& W0 }
yum install python-rbd
: [5 H" C$ y8 ]% r$ X z& D* c: z' q) q" [9 s3 Q# ^/ K
#将nova和cinder组件的节点安装ceph客户端
0 e/ |* r$ d1 D. C3 Q* ^9 j
yum install ceph-common
! ~! c @" O8 q2 g o2 i( V7 x+ Y' V' k- _
#创建POOL
- @9 T9 V9 x4 U/ ~& C; U! U5 u% g
ceph osd pool create volumes 128
: y& N7 M9 b# ^+ L% hceph osd pool create images 128
# X& C c+ o: F, l, f2 c
ceph osd pool create vms 128
! |0 w8 _& X2 ]9 z- a# M. m( ^6 j. e9 d& N- I
#初始化POOL
& K$ s1 X- K8 orbd pool init volumes
4 p7 I: l- e) c, U3 N& I
rbd pool init images
0 n% G: @: @* R4 L8 [rbd pool init vms
2 i+ L6 ~( B$ K$ j7 d
D! W8 T4 l; o8 S+ ~. A#将ceph的配置文件导入到各个openstack节点上
# t# t" `# x' n2 e' s! c' Hssh node4 tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
# b9 H6 q0 s. P# ~
ssh node5 tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
: X4 W: V; J$ I! f2 J C+ x5 f6 S% G: B# ]5 S
#创建ceph用户和密钥
# l- Z& z' A0 d H; Z3 Cceph auth get-or-create client.glance mon 'profile rbd' osd 'profile rbd pool=images'
- |; m5 N4 n0 Y9 xceph auth get-or-create client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
( o) J j {- W/ _/ Uceph auth get-or-create client.cinder-backup mon 'profile rbd' osd 'profile rbd pool=backups'
6 A4 U3 ?/ O: R( j/ S
J! v4 F/ z# ^& D9 h#查询用户,写入文件
. [4 y# A2 m3 Lceph auth get-or-create client.glance | ssh node4 tee /etc/ceph/ceph.client.glance.keyring
0 s; M3 o8 @ i+ M
ssh node4 chown glance:glance /etc/ceph/ceph.client.glance.keyring
% J( {" z, q! [8 O$ n! V
ceph auth get-or-create client.cinder | ssh node5 tee /etc/ceph/ceph.client.cinder.keyring
* n6 I+ d. m5 a. |! Jssh node5 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
, U6 C. o% n/ k& a1 d4 I. b. N
ceph auth get-or-create client.cinder-backup | ssh node5 tee /etc/ceph/ceph.client.cinder-backup.keyring
3 D% N" L6 A/ ]5 r. g, ?ssh node5 chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring
7 R. V0 e9 ?7 U B* g. B) G
ceph auth get-key client.cinder | ssh node5 tee client.cinder.key
. d5 P' X6 N) x5 w
# f, k8 I" u ]9 v0 Z( B9 V& d9 F
ceph与glance对接
# z1 L( z* k9 k) V: l, |7 o#更改glance默认存储为ceph
& V$ Y" v( l& Q) @1 b#修改/etc/glance/glance-api.conf文件,添加一下内容
1 n/ `4 Y% I S$ [! ][DEFAULT]
% L2 N( s3 T/ e; _+ J
default_store = rbd
+ R) W7 t6 p X4 m1 o
show_image_direct_url = True
7 \6 ?1 Z' f; r+ P0 l g
7 E' `" i! l- S[glance_store]
5 U" I* g- G) Z& u! X4 a+ s l
#stores = file,http
. _% }$ [+ {- M' S: r* ]#default_store = file
* a9 y" a; U$ J5 M: P
#filesystem_store_datadir = /var/lib/glance/images/
- ] v5 [8 K# B* z$ [' Gstores = rbd
6 u0 F! V2 y7 j+ b& e4 N
default_store = rbd
$ s$ P0 G5 O1 ]6 T6 E, b
rbd_store_pool = images
' N0 K& G/ j. ^' f1 U
rbd_store_user = glance
, G* O8 W+ {) e( @* A6 O& y
rbd_store_ceph_conf = /etc/ceph/ceph.conf
v! n; K, }( g+ k; j" b( n2 J3 Arbd_store_chunk_size = 8
y& ?# \8 l5 i! G$ v& e
% |$ h% D% l' O" [
#重启服务
- `: P- x+ A8 x( d. v
systemctl restart openstack-glance-api openstack-glance-registry
& h+ N! W1 k. F5 I) D$ }1 ]: M
- K$ j4 K) a- {: {6 z; ~8 k注意:在glance节点你需要查看/etc/ceph目录下是否有glance秘钥
0 M& ?' @# ^( r' K x6 B: b% ~& `9 g' {7 C7 P2 P% q
ceph与nova对接,在computer节点上操作
6 p& ^8 q. t6 R3 ]
#密钥加进libvirt
# L1 }6 m3 J; v) [' S& r0 xuuidgen
8 K9 w' a9 C! G* G6 O9 lcat > secret.xml <<EOF
+ s. N ?) |$ I! Q: x7 n( s9 J<secret ephemeral='no' private='no'>
8 D3 C4 b1 J+ [& J2 q. h! |+ M
<uuid>ff2e1190-30f5-4849-9c1c-886b1e1ee181</uuid>
5 Q0 Y' O8 u6 q$ Z' W <usage type='ceph'>
: [1 k5 Z, b+ G+ ^8 u <name>client.cinder secret</name>
$ T& \2 O; m2 R! C- q( f </usage>
$ _5 v2 B; R3 j, [
</secret>
: v/ {3 [% m+ p" u/ H. f! B
EOF
% J' L+ \8 C; g/ ~6 q; G) J) [. N6 N+ {$ P% u F
virsh secret-define --file secret.xml
5 j# } P/ W* ?5 N' [
/ ?4 {2 X1 j, _' |. c! Q8 _! X: W) wvirsh secret-set-value --secret ff2e1190-30f5-4849-9c1c-886b1e1ee181 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
+ ~. k0 o" U. J1 N g! ?( }( F/ H
virsh secret-list
5 b/ M8 B4 p+ D% B3 u# Y1 AUUID 用量
" T" f* W. }- i3 }. N--------------------------------------------------------------------------------
: w( h- w2 N( j# a
ff2e1190-30f5-4849-9c1c-886b1e1ee181 ceph client.cinder secret
* i! U9 \4 u9 C5 J4 r
, m9 A& |& X' H5 C: B' {! H" A3 m在computer节点的ceph配置文件里添加一下内容
d$ V6 n% m# h& D( y7 ]" G! @
ls -l /etc/ceph/
+ w( Q2 p0 d! r
#ceph
1 p( }$ m, L" y7 D+ L( Lecho '
: {/ v8 I6 B8 Q/ x, n4 l! H
[client]
- ~; W7 e' _" ]/ R6 D; A, b' l) I
rbd cache = true
- ?, T, U* q) ], y
rbd cache writethrough until flush = true
j0 P7 B& n7 q* `0 \
admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
7 W9 W& G% G, `& U
log file = /var/log/qemu/qemu-guest-$pid.log
' T% u: E: E3 E7 g, ?, y
rbd concurrent management ops = 20
6 S# i" P' X, R3 g
[client.cinder]
! f- i# c. J3 ?5 [keyring = /etc/ceph/ceph.client.cinder.keyring
8 Y/ ^( a+ U& |" W# F'>>/etc/ceph/ceph.conf
, |4 G. ]- b7 k1 h$ b& x
" W! W4 f, D0 {- g4 }# }1 Amkdir -p /var/run/ceph/guests/ /var/log/qemu/
( X1 R8 _# g: D$ Tchown qemu:libvirt /var/run/ceph/guests /var/log/qemu/
' M9 X) b5 l- p4 d5 s8 \+ a
$ l" K" f. a t J% z% T
#使用ceph存储,在/etc/nova/nova.conf添加以下内容
6 ?0 u9 B" D( D: M[libvirt]
+ _1 H: v" c. e+ C, K
virt_type = qemu
$ c" ~* ~, l9 e* }1 f! C4 e
images_type = rbd
! Q( V, b3 z3 e, V% D! dimages_rbd_pool = vms
1 n2 l0 {$ S# k! G4 `/ {0 O+ ^
images_rbd_ceph_conf = /etc/ceph/ceph.conf
9 X9 U) r9 r& C; j. j
rbd_user = cinder
8 d" Y- E0 a6 c6 C; {
rbd_secret_uuid = 'ff2e1190-30f5-4849-9c1c-886b1e1ee181'
# I/ i0 D( z4 ?4 `( ~. Idisk_cachemodes="network=writeback"
6 [: E5 W/ N8 Y8 k0 E$ {. T% s* [
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
5 P4 H2 G" ^) d% O% B0 N9 A1 |2 I
libvirt_inject_password = false
- z9 z4 `$ F1 q- [5 [
libvirt_inject_key = false
* [8 Y4 i' s& @' G: Rlibvirt_inject_partition = -2
6 w, M/ b6 U8 P ~" b3 i! F$ T
) n' L! l! y0 _4 } u) [1 C#重启服务
0 L. B( H9 \# ^9 X! k& C
systemctl restart libvirtd.service openstack-nova-compute.service
3 `4 |+ K$ X, h3 ]/ O, N
+ r% E( ~7 M/ N+ f8 U" L) ~
2 H* x3 X2 T) Q* ^* |ceph与cinder对接
0 L5 p3 L% P( e& B: ?
; O. j* n* o% s: J* `# h$ I* Y
#修改/etc/cinder/cinder.conf配置文件,注意:将之前的lvm的配置都删掉
& p0 J D# H2 {, X6 q
[DEFAULT]
+ n' P5 @6 r8 b1 v; K% g#enabled_backends = lvm
& c( E6 K0 U8 h7 h$ ^enabled_backends = ceph
! P5 Q5 U$ E) F
% _+ l x% L. n+ d
[ceph]
' ] J7 O2 W$ i* Uvolume_driver = cinder.volume.drivers.rbd.RBDDriver
# }* j1 h! L. \* H: v) f( Z- O
rbd_pool = volumes
0 {4 j6 g! I9 W( y1 u
rbd_ceph_conf = /etc/ceph/ceph.conf
$ O6 M2 U9 K [* w/ n! Srbd_flatten_volume_from_snapshot = false
9 W) Z! h/ f8 c6 v0 W6 vrbd_max_clone_depth = 5
" g4 W8 O9 X* X6 e, D grbd_store_chunk_size = 4
" K& j/ I+ p/ m7 i1 i4 t) U$ G2 _- Rrados_connect_timeout = -1
( t1 u' u- y) n+ d* n+ W3 i* I
glance_api_version = 2
2 ^8 P2 C) ?6 f& o" `% k2 Rrbd_user = cinder
4 {# Y: W5 h, r a
rbd_secret_uuid = ff2e1190-30f5-4849-9c1c-886b1e1ee181
/ F6 Z) g$ S. p
' X- }0 W j) [" o) W* ]2 H; m
. R" B; y9 I$ Y* j* B#重启服务
* W2 B! E2 z" S4 h+ Z- nsystemctl restart openstack-cinder-volume.service
. V: H4 }1 q$ `) \' f* B0 |( L: D0 X