二、只在node1上操作
! y7 l" |* z' W0 s) C
三台服务器分别为node1 node2 node3 其中我们在node1上面安装ceph官方的自动化部署工具,也就是说我们只需要操作node1即可完成部署
1 {1 ^5 c" o# z) b9 K
) ^/ E' o+ F- p: I A" _' F4 A2 K#添加服务器主机名
: {- ?8 J- ?) `7 J3 ~
echo '
* ^6 k) F }9 _! e2 J. Z. H* m
10.0.0.11 node1
# a9 e5 L9 |: m( x6 T1 H; j1 l10.0.0.22 node2
! t+ Q0 C. ~/ N; `! F7 D. N10.0.0.33 node3
; n, h/ W7 l, o3 R u
10.0.0.44 node4
: j. [! y% m! _ Y2 c( ?
10.0.0.55 node5
2 K4 z6 P M3 v$ u# r: t( M10.0.0.66 node6
1 ^, l2 l- F- j" k; l'>>/etc/hosts
1 P( q& ]7 b& S: S. h L8 X
c7 L- g: n6 }5 M/ k% o0 ]
#创建秘钥
3 Y$ Y4 e( l$ F7 v) M7 h
ssh-keygen
, _6 P+ L6 h# w+ N2 _7 t: u4 Nssh-copy node2
' v) [" M; A7 d& n- V
ssh-copy node3
! G3 D, C2 \% l/ _! s
% a+ s& k& [/ Y7 u6 s9 @& G" D" \#将node1的hosts文件发送到其他服务器上面
/ ^ G% R' m! R6 C; y2 kscp /etc/hosts node2:/etc
- a; b9 [1 w5 c/ ~/ }! Cscp /etc/hosts node3:/etc
- T# J2 q) ?+ ~ `
% \$ ^1 f; o: W$ }% l: Y三、开始在node1上安装ceph
) [. F$ v2 W8 q, h; l+ p" \- B& N#安装ceph-deploy配置工具
7 C* S' `4 F9 `5 G& y5 p# s/ ^yum install -y ceph-deploy
& y0 d" L2 b) q. Q- k: C
yum install python-setuptools
$ Y6 Q5 k5 s( |; a& D
- z( e i# O3 W4 b; |# I#创建配置目录
% Y+ P! r4 |( ?; B1 g! w
mkdir /etc/ceph
2 N* G F7 Y, Z7 Ucd /etc/ceph/
' r2 H& X. D- u0 M) M+ `& x9 M
) z z0 `" b8 ]#初始化Mon配置
0 q" w9 ~6 X: |2 eceph-deploy new node1
_7 c* X1 U( |, B
|6 }1 R9 @* A5 a! Y# #修改冗余份数为2,日志大小2G
* b2 T6 R4 }, E! X( C. |# #配置网络,单网卡忽略
$ b$ U$ a( ^ C5 qecho '
- Z' D \2 @, Upublic network = 10.0.0.0/24
+ D% \/ W$ `5 F+ J& z, x V3 }; w
cluster network = 10.0.0.0/24
+ W6 l" X- z/ p7 q* A: Q9 ^1 J9 V' L) f; x* Y4 v4 j% W( ?1 w6 R
mon_clock_drift_allowed = 2
% s# ~' U0 Z- [$ L
osd_journal_size = 4086
# W9 S* y4 B& v' ?
osd_pool_default_pg_num = 128
6 n( ^4 X1 q! Bosd_pool_default_pgp_num = 128
- {, A1 s( \9 Uosd pool default size = 2
3 Y0 W' G- R& M; `osd pool default min size = 1
# V: f P+ S3 U9 brbd_default_features = 1
, k! @0 g' p3 S) y: g( w/ Pclient_quota = true
: P6 O7 C5 ?* R+ W1 e+ A: a'>>./ceph.conf
! @" s/ H9 @+ X0 \, ]" r$ t% Q- C m, w; S7 k R
#安装Ceph
$ N- i9 \/ Y& x
ceph-deploy install node1 node2 node3
* }4 j! J( u$ q$ Q#yum install -y ceph ceph-radosgw #实际上是安装这2个rpm
# M' M M3 L' D/ K
4 h4 w' e6 X' Q" X8 B#初始化monitor和key
1 x% [* a) W9 K) A
cd /etc/ceph/
0 X; l. t1 r. z2 kceph-deploy --overwrite-conf mon create-initial
2 L4 Q$ ~& G) e h8 R0 B+ ?
8 F+ {+ N% `, O) D8 J! U$ _4 h) A' O. ^
#创建osd
$ w# I* S M0 ^4 c8 M5 z
ceph-deploy osd create --data /dev/sdb node1
8 i" E7 M3 a! gceph-deploy osd create --data /dev/sdc node1
. J+ z- y" R0 Q/ |* n8 j+ |ceph-deploy osd create --data /dev/sdd node1
3 `4 T% E4 {. L" f( o
ceph-deploy osd create --data /dev/sdb node2
! K, r* d3 w, U8 }ceph-deploy osd create --data /dev/sdc node2
- e8 q2 i& l$ f" N( t
ceph-deploy osd create --data /dev/sdd node2
4 \! w! p* _0 E+ j& H
ceph-deploy osd create --data /dev/sdb node3
; P6 N0 F) _1 I, r( y; a
ceph-deploy osd create --data /dev/sdc node3
" D' Z6 P2 i. W) t3 W
ceph-deploy osd create --data /dev/sdd node3
) I. a, z% h' O7 s, n0 x
3 C5 t6 }; a( |7 k T
#拷贝配置及密钥
# C: k" u) O6 ?. w7 }8 G' |5 h: F
ceph-deploy admin node1 node2 node3
3 s' z% [1 K# ^chmod 644 /etc/ceph/ceph.client.admin.keyring
" e) K/ S" j7 x
# ?; x5 W+ [& K) Z+ n* u7 @2 w1 r5 v#创建mon
( C1 s" g5 u; ^/ h2 V& Yceph-deploy --overwrite-conf mon create node1
# Z" o6 a$ {. m+ T+ Q$ e. kceph-deploy --overwrite-conf admin node1
! L8 G# ^" I$ M8 J
7 [: d; _# w' ?( w. Z" o#添加mgr
% r6 `$ Y- f% Z H#ceph 12开始,monitor必须添加mgr
1 a+ h( r* ^) |/ g# z4 h+ M) ^ceph-deploy mgr create node1:mon_mgr
5 h3 W% {% s( @( [# H
/ y J" J! u c3 j
#启用dashboard (在node1节点)
# ? o( M3 } U$ E- W
ceph mgr module enable dashboard
7 d" v; Q0 k+ M0 r; I: d2 }$ n$ l4 P6 ?/ q# M
. `3 [3 w& S5 H9 I* Y9 t) A
0 e1 d/ j8 m& \! Q5 d9 |0 M7 M" B8 U#查看相关命令
. O2 V% b1 `+ e: `) t9 N9 C7 j
ceph health
! ^. M3 T9 t) d3 ~: g- T
ceph -s
8 ]$ o6 i4 B7 R hceph osd tree
" H7 q$ m9 Y5 c n6 ~/ n6 w
& p1 u- F- C8 [; y, b$ u( v: uceph df
& c- ~4 k/ W/ R8 G6 U1 Gceph mon stat
$ o9 w4 a2 L, L. z8 Wceph osd stat
9 d) Y7 k; ^, {
ceph pg stat
h' W# ]0 J7 p* p
* x( `# q1 A2 `; S6 f" E+ ~( l. wceph osd lspools
& W1 D$ H( g; [ceph auth list
1 a3 k( ?6 Z- c2 Z! B: p( V4 H D9 k7 ^/ [/ y
Ceph L版与openstack Pike对接
; I8 E( S* Z9 P0 F- x+ u. j9 H, D, R3 l( }
环境opestack Pike的controller、computer、cinder三个节点已经安装完毕,并且能够正常的使用
1 [% g6 h' x; m/ T. b) ]8 _* \: L9 s1 ^
( t3 f$ K0 `, }; D+ A' Jnode4为controller
1 ]' I# G) Y; F, d3 O. x
node5为computer和cinder
- }4 w! f6 b4 a" o9 }1 H% @
6 b" }; m- d1 e/ r1 b
一、环境准备,所有openstack主机都要操作
$ C2 g9 I- S" }# s4 ~0 L
#所有openstack节点都添加主机名
' Z7 w' ~7 i" D( G4 `- s5 y. ~3 t5 F#添加服务器主机名
, g+ W* {/ y2 s7 i; F" n- b
echo '
L% e* v$ b( L
10.0.0.11 node1
2 v' }" b D4 u% s8 P. M/ A: P- o
10.0.0.22 node2
; {4 e5 h* X$ n1 k# L
10.0.0.33 node3
* k' N5 @) J5 k& R10.0.0.44 node4
# I' M8 L' ]) h/ Q% G$ F2 x l
10.0.0.55 node5
- n4 ^* J5 n* I" G# |& w$ G10.0.0.66 node6
$ e5 i# O/ b8 `5 a2 Z+ c- ]
'>>/etc/hosts
6 } m7 n1 l$ G+ J) T: ~+ s8 e1 s8 {# [- h, t$ D
#创建ceph源
9 }7 t! j7 H) Z9 Z7 @5 M) fecho '#阿里ceph源
% \( }3 I6 |( e9 V N8 R
[ceph]
) e% q8 Q. V8 M' y* s& {
name=ceph
/ l1 d! k+ Z( l# _
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
, v) ?; N3 L: \) |6 j9 E
gpgcheck=0
6 W) o: p {! {7 x6 S
[ceph-noarch]
: N) ~/ E/ i, _& S( T; _
name=cephnoarch
% \5 { J: E# u+ {) z6 N- _& ? t# Obaseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
- T& I+ D" v: O: u) @! X; g3 tgpgcheck=0
. D' C, ]+ }2 [6 z2 t& V! f[ceph-source]
8 B( E$ k; C, ^5 E5 `/ |" d
name=ceph-source
& r5 d" T! m9 t5 @. W1 R
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
) ~; k e1 A" _gpgcheck=0
, q% J. `9 O' L% @
#'>/etc/yum.repos.d/ceph.repo
* q9 f) C+ q }' syum clean all && yum makecache #生成缓存
2 L$ m- t+ M7 L#关闭selinux、防火墙
) ~/ K( f t+ \3 msystemctl stop firewalld.service
6 J& D3 }& G, _; }# j
systemctl disable firewalld.service
) A; N& v# x; S; z3 a
firewall-cmd --state
* B9 Y3 g- O! e. H6 z5 i, [3 U
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
9 y, s& w! v2 k( L0 L. y
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
% W8 Y/ B5 ^5 Qgrep --color=auto '^SELINUX' /etc/selinux/config
/ s& X3 Q }# ^* y3 msetenforce 0
' j2 U. b; K' _7 m8 `( J% W1 C
9 x6 d$ L- V% H1 s; q2 b5 m#将glance组件的节点安装ceph客户端
. Q& h" {9 v4 \: o4 K4 h2 ^4 M% L
yum install python-rbd
; ^: M, U& v6 }5 j, p% k1 v5 x, S) w) e( s$ w
#将nova和cinder组件的节点安装ceph客户端
0 ]6 ~2 d7 k* Gyum install ceph-common
1 d: b1 I$ _' P6 f) _9 F4 h
9 Y- ^, l$ j- f8 d#创建POOL
$ w9 m3 X" }9 `- o1 P: C. a s$ d
ceph osd pool create volumes 128
$ M8 }- F M5 A" o: L: }
ceph osd pool create images 128
; Z6 L; p+ h5 {2 S" x: E2 fceph osd pool create vms 128
# f8 \! ? \0 W( @7 l/ t: H) J9 c0 B. \3 |0 m& Q
#初始化POOL
& F% g' r0 l- w, ^, `2 G1 ]rbd pool init volumes
/ X( K' l" x! L7 lrbd pool init images
) q# _" F @* g7 v6 C {8 p# ~
rbd pool init vms
+ ^3 S) X5 s9 A9 l! z$ T
' ]: X6 z* L9 o. I0 n9 M3 x! U#将ceph的配置文件导入到各个openstack节点上
$ _2 O1 c U t+ Kssh node4 tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
! x, S/ F# r7 ]) l% d3 ~
ssh node5 tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
0 D% t7 n1 _6 a% K2 e
; r5 W( v6 J3 U$ Q2 s% g#创建ceph用户和密钥
8 \' ^4 r4 }6 ]
ceph auth get-or-create client.glance mon 'profile rbd' osd 'profile rbd pool=images'
; \0 @/ ~& E8 P! m* Q
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'
& e: R) D0 H. F$ _/ L; J4 Rceph auth get-or-create client.cinder-backup mon 'profile rbd' osd 'profile rbd pool=backups'
4 m% M# U" `) |# e, ?1 ?
( w9 W+ D. T0 E! T2 E" A; t#查询用户,写入文件
o# N# G6 S$ W' G
ceph auth get-or-create client.glance | ssh node4 tee /etc/ceph/ceph.client.glance.keyring
8 i- L$ t8 V# R$ v1 ~( f" K, e0 `4 ]
ssh node4 chown glance:glance /etc/ceph/ceph.client.glance.keyring
) D3 K$ r& }5 T" W2 @ceph auth get-or-create client.cinder | ssh node5 tee /etc/ceph/ceph.client.cinder.keyring
. w& Q4 e5 X; `. M( K
ssh node5 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
: H* I6 T8 _: Y" W' Q' V
ceph auth get-or-create client.cinder-backup | ssh node5 tee /etc/ceph/ceph.client.cinder-backup.keyring
7 Z# z7 n/ m6 m4 m1 Bssh node5 chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring
2 t8 U+ t) t/ E: Oceph auth get-key client.cinder | ssh node5 tee client.cinder.key
$ i2 j2 ]) i" H8 K M, Z4 _. l: I0 d9 e3 d& ~2 X! u
ceph与glance对接
; w! h* c5 ]) P* q8 m#更改glance默认存储为ceph
* T; q4 X% y3 e/ V
#修改/etc/glance/glance-api.conf文件,添加一下内容
6 }% x" W5 b* n( q[DEFAULT]
! g2 \( e# X% [/ w3 m8 P( C* Pdefault_store = rbd
9 O' l2 K* _1 \3 W& q3 ]- C6 kshow_image_direct_url = True
% ^' t9 _# Z( r; _' U
2 R' K2 k# M' }" b3 k3 N[glance_store]
3 x& _' i$ y1 d. _; R# ^% | w" P# J
#stores = file,http
0 L5 A3 y$ N2 E% x
#default_store = file
! B9 J( C! D* `8 B3 t#filesystem_store_datadir = /var/lib/glance/images/
2 Z) D9 U7 h) O& j- ]
stores = rbd
0 B4 e, w) @. _! ?& c# O0 Z
default_store = rbd
- ]/ u3 C B1 ?: e2 d E& `8 D
rbd_store_pool = images
# E+ a! E4 l) }# s9 @7 G D( A& z7 h
rbd_store_user = glance
$ q) ?) i V" F( N" M) F" B8 [rbd_store_ceph_conf = /etc/ceph/ceph.conf
Z1 T4 Q8 Y9 T8 a4 Z3 \5 h: ^) hrbd_store_chunk_size = 8
" q5 N8 v: I4 ?( i3 R4 T2 X5 l
3 J0 ]/ T S" Q0 T1 D6 d#重启服务
3 ^" H4 E) L' L4 U+ H) M" ~3 O
systemctl restart openstack-glance-api openstack-glance-registry
2 |" n; E' j' I* L! [, _5 w7 N! f+ Z* Q) i3 c5 f! ~: n
注意:在glance节点你需要查看/etc/ceph目录下是否有glance秘钥
/ `3 M3 t# J; T- C4 t( E; b; `
) Z5 W, I$ O% X0 |& \' v& rceph与nova对接,在computer节点上操作
' Q J3 y4 k: l+ u
#密钥加进libvirt
, }( I# b9 T6 P
uuidgen
^2 u( N& I. i1 t/ X" \& ncat > secret.xml <<EOF
2 _: Q5 z: s3 Y+ x; T) Y) U, S5 F* u
<secret ephemeral='no' private='no'>
% F: ^( Y+ Y0 W$ r <uuid>ff2e1190-30f5-4849-9c1c-886b1e1ee181</uuid>
* Q7 V" x; S+ {' c
<usage type='ceph'>
: m) K$ P4 x4 s7 r% { <name>client.cinder secret</name>
$ d/ U: M2 x1 u2 ?
</usage>
0 [& Z0 I" S+ i1 L( h
</secret>
# E- a- g5 C! r0 i2 h: }, F8 [% ]
EOF
; Y3 }+ j r. V( \" m& S; H0 [
virsh secret-define --file secret.xml
& A/ K4 `: d1 w0 b5 A' u& J1 G% i% E9 y8 R
virsh secret-set-value --secret ff2e1190-30f5-4849-9c1c-886b1e1ee181 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
3 q9 V, }7 c: M+ N! o0 t
+ S% m1 p' \" p+ B, P7 j
virsh secret-list
! J7 S4 |& C" l1 U# p1 N/ J
UUID 用量
/ V4 z6 E7 V$ j6 \* P& Q. n--------------------------------------------------------------------------------
# i" Z9 ?& t N' ]2 [" w% _4 h2 N
ff2e1190-30f5-4849-9c1c-886b1e1ee181 ceph client.cinder secret
. f7 j8 r2 t7 \) C6 b# Z: V7 O) `% {
, ?3 g5 o; ^& ~8 s1 p' L9 c在computer节点的ceph配置文件里添加一下内容
8 }$ G- n4 m8 M# q
ls -l /etc/ceph/
7 L% ^$ C& g( r+ W$ S#ceph
- _, ]2 P; t! H/ f
echo '
. ]4 ^6 y9 O. z; U* v7 |, T0 r; H
[client]
0 W' G3 }, g0 o8 r Rrbd cache = true
3 V& n2 {0 ?) h7 N$ l4 g
rbd cache writethrough until flush = true
8 N- H) J- {4 \+ Aadmin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
( W9 X* v9 X2 ]6 x2 Slog file = /var/log/qemu/qemu-guest-$pid.log
# G% Q8 W7 O' X$ H* t
rbd concurrent management ops = 20
% U: b: N3 ~& M6 I' B: p u) v( ^
[client.cinder]
! G7 D L, e7 b8 ^4 k$ g( g- O- f
keyring = /etc/ceph/ceph.client.cinder.keyring
6 u) u& {3 Y1 [6 _# L y'>>/etc/ceph/ceph.conf
+ Z. E9 N, [% I2 ^
! L8 {% |# B' j" o! N2 t* Hmkdir -p /var/run/ceph/guests/ /var/log/qemu/
; S; e5 D/ L' B9 b/ q3 Q0 Nchown qemu:libvirt /var/run/ceph/guests /var/log/qemu/
4 s) z9 t0 s8 i0 w8 v U+ s9 E0 [' m+ M {
#使用ceph存储,在/etc/nova/nova.conf添加以下内容
2 O) Q {/ `* |' ^1 o5 M) C7 o
[libvirt]
8 \2 R0 Y/ k1 U1 yvirt_type = qemu
2 B! ~ f! m' ?' Timages_type = rbd
2 G, ~, ]/ G! K! r. \- B! M3 i+ himages_rbd_pool = vms
( P( d% f7 c$ b c
images_rbd_ceph_conf = /etc/ceph/ceph.conf
) n0 H* O( B' O" urbd_user = cinder
! b4 m. Y- b! w( I1 lrbd_secret_uuid = 'ff2e1190-30f5-4849-9c1c-886b1e1ee181'
" C k: {) p; C; u9 W% x8 M
disk_cachemodes="network=writeback"
8 x0 V f; I2 Z& h7 n: b" F
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
+ z0 x% K5 i% J% L* e: e
libvirt_inject_password = false
i$ x$ z: Q0 k1 t1 U. j' o
libvirt_inject_key = false
$ R: L5 D+ ^' V1 ulibvirt_inject_partition = -2
/ x9 v0 ~1 K7 o1 g3 F
$ T6 V0 x5 |: e#重启服务
" i! X! {* o/ ~# N
systemctl restart libvirtd.service openstack-nova-compute.service
" L2 }' g$ B5 Q5 y/ T
[( h. F# k c& S. p T9 M" s( M5 L y+ i, i3 \; Y a
ceph与cinder对接
; y( X% X9 D! @1 }! P* J1 f& d
7 o/ \# c, p8 n4 F#修改/etc/cinder/cinder.conf配置文件,注意:将之前的lvm的配置都删掉
) x% A3 a- Q' @! D. G[DEFAULT]
; m8 V! ?; f' R& Y. h) L#enabled_backends = lvm
5 H1 B. ~6 G: G# A; d: Henabled_backends = ceph
y4 {) }: b+ d0 P& f/ P- }5 w3 t( q0 o" o
[ceph]
; @/ T# \) ~) V
volume_driver = cinder.volume.drivers.rbd.RBDDriver
5 n- r& N* r( m/ Z/ U
rbd_pool = volumes
+ c) [6 g1 x3 p4 {4 P! ~rbd_ceph_conf = /etc/ceph/ceph.conf
8 ?* }% q# T) p; X' G( V# ~
rbd_flatten_volume_from_snapshot = false
6 w/ I8 `$ u2 h$ jrbd_max_clone_depth = 5
8 l0 i5 J$ J Jrbd_store_chunk_size = 4
! j1 r$ `: ~2 ~ z) P4 D3 j. drados_connect_timeout = -1
) i- { g0 ^# R& ]& rglance_api_version = 2
$ e' c m: _* O7 ~' ] y
rbd_user = cinder
" W9 z4 C4 }/ G/ ]( U. C( U6 ?& arbd_secret_uuid = ff2e1190-30f5-4849-9c1c-886b1e1ee181
/ G, q( K ^2 n6 \
: a! Z; C, Z3 K" w, s) u, d. P G3 v- K! D) R
#重启服务
I. P9 r$ U+ X' \# Y
systemctl restart openstack-cinder-volume.service
, h9 f: X+ _- w1 |4 o