二、只在node1上操作
: S+ e* P8 [/ v f' a3 O
三台服务器分别为node1 node2 node3 其中我们在node1上面安装ceph官方的自动化部署工具,也就是说我们只需要操作node1即可完成部署
- {0 {4 f: k2 X# d
# E6 j+ I; }- H. ]6 N#添加服务器主机名
K1 q6 i. D( Y( Z. W" u( f
echo '
% c( j* A8 I$ m4 w: d" Z: ~ a4 Z, P9 @% L10.0.0.11 node1
$ {1 U: X$ e, ~, e( ~2 a0 S3 Y2 [
10.0.0.22 node2
0 O8 o5 m9 `% f+ \0 j& b10.0.0.33 node3
3 A2 j7 c# }8 }' P/ ?: t! M10.0.0.44 node4
6 c6 v1 M0 V/ C9 h* O2 j10.0.0.55 node5
. n) H1 |0 I5 h3 e! c e
10.0.0.66 node6
( ?& E( R H$ k" _* L9 [ b'>>/etc/hosts
: G0 u. l+ Y. |1 X4 ]: b# s( a3 }1 B0 O
#创建秘钥
' i' ~2 G, e; {( [ssh-keygen
- E M+ l1 R* L7 C9 ^" S- T* i
ssh-copy node2
2 D+ ^: s: N. Q8 z. i4 `7 @; m
ssh-copy node3
$ a. v, e+ p+ W5 z, ~# X
8 n1 Q @# l: m- v7 W6 p#将node1的hosts文件发送到其他服务器上面
/ [+ P+ f* H$ r9 }4 z5 I" O
scp /etc/hosts node2:/etc
6 |) X' \9 O6 W- y. ]scp /etc/hosts node3:/etc
: [3 S6 f3 n* }
( `) ?( T1 J- q, S" W1 y三、开始在node1上安装ceph
; G4 q5 p0 l* t6 O) _, O& C#安装ceph-deploy配置工具
& B, b* |' t( |& p! C# C% Q
yum install -y ceph-deploy
- D g8 ?, Z8 h! E
yum install python-setuptools
( ?( u- o2 t- J7 K/ ~2 @
1 h$ U* y `7 t/ A( [2 b. y( h
#创建配置目录
5 Q5 B8 K4 P4 @mkdir /etc/ceph
3 h& j' U7 j/ S9 a
cd /etc/ceph/
* y+ R0 B" l/ w7 x4 x4 J: G, \3 ^6 y+ A6 d
#初始化Mon配置
# g$ F9 ~- Z# K/ I5 p( k5 `1 K
ceph-deploy new node1
! l- c# i) j/ n4 {
$ T/ Z/ j9 @0 m; Y B1 z: G; `- M2 J) M# #修改冗余份数为2,日志大小2G
3 z$ Y& L7 r7 z# #配置网络,单网卡忽略
1 T3 V6 `- r' z% N3 K! i! M l
echo '
5 j; j) X9 M5 [! R' X- f
public network = 10.0.0.0/24
) N, F- p3 B$ [/ L9 w e( P2 F
cluster network = 10.0.0.0/24
3 q) P0 }! d0 c3 j2 v9 r/ u r5 U5 j4 U5 @+ L! j
mon_clock_drift_allowed = 2
1 V( y( `" g* j7 u" U0 \$ C
osd_journal_size = 4086
. g: P: d2 H3 [, B$ \osd_pool_default_pg_num = 128
# V/ U; s) b6 | o' V/ n
osd_pool_default_pgp_num = 128
, y$ _! ?) I( bosd pool default size = 2
' r( l2 f3 G/ { R* Zosd pool default min size = 1
+ G; ~! ^6 s! x) k8 zrbd_default_features = 1
+ Z. w! g/ I5 Y n, O
client_quota = true
' T4 w4 Z" P+ W+ w8 @; ]0 ]' @'>>./ceph.conf
9 ?6 S7 ]& @) }! T: ?! J6 }' x# M2 M V
#安装Ceph
8 {) f, c, f0 `6 l) f0 o. ?ceph-deploy install node1 node2 node3
3 e/ L' b: @+ v3 ~) r: {
#yum install -y ceph ceph-radosgw #实际上是安装这2个rpm
2 Q' S4 B8 F3 {0 P4 F1 S
; n* h7 h8 K) L1 Y/ U
#初始化monitor和key
! z# ^9 S0 ~2 w c
cd /etc/ceph/
' }4 D, T, c$ H; Lceph-deploy --overwrite-conf mon create-initial
, r/ R0 O; v/ E5 _, S
. `7 E- [: w' I, n9 w1 e$ Q#创建osd
8 D% z7 G" O9 Wceph-deploy osd create --data /dev/sdb node1
( a( x8 q- C4 J; n* @ceph-deploy osd create --data /dev/sdc node1
; S c9 `2 L. x* F1 `ceph-deploy osd create --data /dev/sdd node1
8 `4 ^& I$ U. {$ l
ceph-deploy osd create --data /dev/sdb node2
2 P/ B' X; n5 }* L e- ~
ceph-deploy osd create --data /dev/sdc node2
( U! c7 m+ x9 W1 D3 f; qceph-deploy osd create --data /dev/sdd node2
% r$ t2 x* V; ]& X8 S
ceph-deploy osd create --data /dev/sdb node3
* [9 o6 R' N5 y( k+ ]ceph-deploy osd create --data /dev/sdc node3
9 | D. H, q& Bceph-deploy osd create --data /dev/sdd node3
. ]+ i- j4 j5 z4 G8 I
1 D7 I/ x8 S1 B# M#拷贝配置及密钥
7 p% h4 b. s' _ S3 @+ E: Xceph-deploy admin node1 node2 node3
) U( Z# ~1 C' L) U1 x' ]1 z `3 Rchmod 644 /etc/ceph/ceph.client.admin.keyring
( k' _/ N* M( @, f3 U2 O, l! d0 _) `6 N( L2 z, Y6 b6 ^: C. T* ?0 Z
#创建mon
: Q5 R, z- ^( @! T
ceph-deploy --overwrite-conf mon create node1
$ r$ w- p% O- Z, f& R
ceph-deploy --overwrite-conf admin node1
* }1 j) \) Y8 V# V/ [
/ n3 B( {5 ~8 n2 ^0 q
#添加mgr
1 \: J( w( d1 S+ m) e9 E
#ceph 12开始,monitor必须添加mgr
( m. m( D9 \* j# L8 Pceph-deploy mgr create node1:mon_mgr
5 Z: {+ H- Y% I! t6 P! w' I* Q2 O l. F) C# O+ \, [
#启用dashboard (在node1节点)
$ z6 { s5 H4 I) d) oceph mgr module enable dashboard
v) f3 ^( U' U7 v
3 p% O8 j% v- |
: M4 _! J* \6 y4 h- q
& h5 W/ \% W7 A" ]% I
#查看相关命令
; ?' Y1 q. s6 H' I cceph health
8 Q9 n- x) y" a* s2 E( b' p
ceph -s
+ K) ]# _4 e8 g& Z9 [ceph osd tree
( Z4 J/ ^% e$ p9 Z* a) C9 ?: H; K. _/ o
+ U% V* `' W& z6 ?: Iceph df
! }& U: b! _) u/ C& ^0 ]3 Fceph mon stat
7 F1 M. u, X+ R8 q. I
ceph osd stat
$ e# r- t0 d h8 \8 q9 sceph pg stat
2 e3 f" G/ B2 f7 i8 V, P
. q" q; s9 |, }; a) Aceph osd lspools
6 d/ m" I# b8 Y2 I1 P3 f1 u( Y2 o
ceph auth list
7 Z: W# p1 U9 y, G' m% }
5 R1 ^; [2 M6 R! o$ w6 B& x7 K/ }+ dCeph L版与openstack Pike对接
0 b& }3 [% q' A/ L7 D
* W) G5 ?/ z& Y环境opestack Pike的controller、computer、cinder三个节点已经安装完毕,并且能够正常的使用
6 `" H. w) Q% Q4 Z9 Q z/ a' n. s" m
node4为controller
! I( B! u. y, |
node5为computer和cinder
/ Y* ]7 n3 I& d0 M4 k6 g
# b% [/ C( g, @: |9 P! @一、环境准备,所有openstack主机都要操作
+ B3 Y, p" c; p
#所有openstack节点都添加主机名
4 m1 H4 A% t9 m/ _6 X9 b; s
#添加服务器主机名
5 S, M3 @) @: g& |4 u# t1 _
echo '
& k, [* k6 K E10.0.0.11 node1
G: `3 P8 c- H; A7 `& l7 a) g* A
10.0.0.22 node2
3 y" t$ }' W/ W- o# h. Z* L10.0.0.33 node3
3 k! ^* P y% E10.0.0.44 node4
; V' w9 f6 r! e4 c; [
10.0.0.55 node5
' r4 W5 |3 h& c, S, X( v' W
10.0.0.66 node6
5 b3 A g9 ~3 b8 A9 Q
'>>/etc/hosts
2 ^6 C5 S3 S; R7 ^/ g
; I/ t5 a) q4 k* m) e
#创建ceph源
( Y& o/ _5 p. N2 l7 I$ Wecho '#阿里ceph源
/ S8 h+ F w4 @8 V# ?1 _# x, P
[ceph]
4 B. c x' `" H1 @$ d! D
name=ceph
! J/ v& f8 }; S& p9 Cbaseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
1 V$ n+ k0 h& l4 vgpgcheck=0
8 }3 T, y2 L' \: Z7 ]# f
[ceph-noarch]
( z+ D/ M% W; K0 d$ b) W2 bname=cephnoarch
. _1 [2 D+ G- o6 X9 u
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
6 x2 ~- a7 i, I* Z( c. P& _
gpgcheck=0
+ F% r# a" q: v4 A E! P
[ceph-source]
& @5 F/ h% v0 Kname=ceph-source
; {. g3 k. E& U; M2 Zbaseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
# L& N. {8 g1 I1 u9 bgpgcheck=0
* e( u5 c* S1 P( b% r#'>/etc/yum.repos.d/ceph.repo
6 N) ]7 {. q0 m6 ?5 U, a+ Y3 @! cyum clean all && yum makecache #生成缓存
( ~" C. O" W0 b
#关闭selinux、防火墙
5 Q) s6 u3 {0 W0 A) h& \systemctl stop firewalld.service
0 { b% q8 E* E1 x( D6 Z
systemctl disable firewalld.service
1 N% p9 b* T$ z' a
firewall-cmd --state
" t3 |" l Z" ~. S5 v5 O/ {3 Ised -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
1 K) i. R" ^. _ J7 {: p
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
3 j7 f4 z, N% h- {$ ]grep --color=auto '^SELINUX' /etc/selinux/config
% g- E8 l$ \+ t
setenforce 0
3 {* [& K3 X1 j4 Q6 x. y3 ]; G: X, @* [. h4 `5 \
#将glance组件的节点安装ceph客户端
$ g. e4 \- u+ t" q( z; j- p xyum install python-rbd
6 q0 G$ p: @6 N! I2 |" a( ^* Q6 u
/ s: n5 g, z6 W' {6 D
#将nova和cinder组件的节点安装ceph客户端
" L- `: [! }6 q7 o. Hyum install ceph-common
% c, e* x" [9 y
" |0 H! i' U. u4 `" l% ^; H
#创建POOL
# Z1 c+ o5 x5 Z1 p5 G
ceph osd pool create volumes 128
! O0 _' N7 X* b' J2 k; B" c
ceph osd pool create images 128
& p' Y& e* U4 }& d7 I$ B) u, I m% [
ceph osd pool create vms 128
: Z+ n; Q$ [% w. {5 Z( @
& ^! ]2 m1 r3 a# E$ i#初始化POOL
% V4 {) j/ z1 J& S! e) {( s6 j
rbd pool init volumes
* I& ]6 L5 r$ L9 h: t, B3 F0 H/ Prbd pool init images
5 l6 ~. J' ? Z3 h+ H: \rbd pool init vms
9 p" a# {( `! [9 e- Z
% ^5 M4 ^( v$ l#将ceph的配置文件导入到各个openstack节点上
- H) x, V8 r6 V6 r
ssh node4 tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
, O. s9 R0 I& Q4 X8 b1 r/ V3 Sssh node5 tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
$ ?% K' c7 I) L4 ` A1 y$ ^$ J( O: Z& k7 q) |6 }# a# k) u/ u
#创建ceph用户和密钥
8 ~0 s2 D( p/ s2 mceph auth get-or-create client.glance mon 'profile rbd' osd 'profile rbd pool=images'
. b8 j) k" s! }0 n- U L
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'
Y6 l' O3 g: F0 z$ C8 B W
ceph auth get-or-create client.cinder-backup mon 'profile rbd' osd 'profile rbd pool=backups'
q7 ^: S8 } s; A s8 H
* i3 ]( D6 Z- n5 y; @
#查询用户,写入文件
$ @- o: T& a/ @3 ]3 @
ceph auth get-or-create client.glance | ssh node4 tee /etc/ceph/ceph.client.glance.keyring
9 U* f! G( z) N& J4 v
ssh node4 chown glance:glance /etc/ceph/ceph.client.glance.keyring
- v2 \/ A! ~$ r% P8 Cceph auth get-or-create client.cinder | ssh node5 tee /etc/ceph/ceph.client.cinder.keyring
5 h o' n8 L; q$ F2 r8 }
ssh node5 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
, o# K" I4 K8 J1 O1 Z8 [8 e1 Qceph auth get-or-create client.cinder-backup | ssh node5 tee /etc/ceph/ceph.client.cinder-backup.keyring
3 c) w c8 m. n/ x! b! s. r0 j. }
ssh node5 chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring
& {5 Y7 W( Y" |% Eceph auth get-key client.cinder | ssh node5 tee client.cinder.key
, D6 P9 T6 ~1 y* b0 x
3 M. A* e- Q; ~* ^1 b/ Iceph与glance对接
5 k. C" F% `& m0 H# M/ f
#更改glance默认存储为ceph
3 G2 ?# j3 U! i. k# b0 {#修改/etc/glance/glance-api.conf文件,添加一下内容
. a% T/ e& q" o* N/ ~
[DEFAULT]
. o$ l9 s& c$ [6 D
default_store = rbd
/ f% I. y( l& r# o! Yshow_image_direct_url = True
8 k' k w# C5 l
% U- K/ `- F) H& @; A
[glance_store]
; @" o" n; ^6 p% q& H3 z8 {#stores = file,http
+ w: J9 Z% M. K5 c/ @) Y#default_store = file
* i* `6 S9 G2 @% s, H$ r( V3 v#filesystem_store_datadir = /var/lib/glance/images/
5 b9 C6 s% S$ O# D4 k
stores = rbd
' D6 C( g' Q, Q1 a8 r+ t" i% C( K
default_store = rbd
: d# }4 }8 _% rrbd_store_pool = images
# |" ^' h6 C! T( v2 B
rbd_store_user = glance
3 j+ O+ z' h; e; ~! s! K5 {rbd_store_ceph_conf = /etc/ceph/ceph.conf
1 K( ~$ v9 z( p
rbd_store_chunk_size = 8
1 e- l8 B( M1 f) Q, u6 g- q9 A. t
#重启服务
& \1 S! h( Q5 ?# Tsystemctl restart openstack-glance-api openstack-glance-registry
' `) L: ]3 R. L$ o3 c8 j9 S4 y1 M" @
* t' I" E* T5 M# t* Q; ~4 T# V1 o" Y注意:在glance节点你需要查看/etc/ceph目录下是否有glance秘钥
$ L3 f! a2 x. N4 V9 F
- X: e" y/ g# [* `5 |4 M
ceph与nova对接,在computer节点上操作
' \' U4 r$ }+ t9 \#密钥加进libvirt
; @% {! f3 u4 ]4 ]3 D; `" H
uuidgen
/ w' V7 z3 \4 c' Y
cat > secret.xml <<EOF
8 E6 z# R/ T: U* Q/ v
<secret ephemeral='no' private='no'>
2 U8 K/ H* d) S5 {4 O! ]' U1 P
<uuid>ff2e1190-30f5-4849-9c1c-886b1e1ee181</uuid>
0 W) V; l5 `# z* T1 D$ V! D! @. \
<usage type='ceph'>
- P5 p$ E& E! r- W& Q& \ <name>client.cinder secret</name>
" _3 H8 W; H$ R$ T) C+ T" Q, Y" n1 L
</usage>
2 d- Q+ D/ Q- O8 V5 Q
</secret>
* H) C2 r: J' Z/ `" U! p
EOF
4 ~7 R* n& K7 ]9 |
; A0 f* ]4 u0 C+ S( u/ ] r4 U. o: t& Q
virsh secret-define --file secret.xml
4 \7 H6 @. n9 O9 d" o# H0 P `; Q8 B0 O/ u
virsh secret-set-value --secret ff2e1190-30f5-4849-9c1c-886b1e1ee181 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
) z3 k! s- {1 @0 m' q
' ^. B, I6 @: P6 ~ ]5 d
virsh secret-list
' R" z% j8 [& G O/ `' EUUID 用量
' @- I! Y1 v5 I3 t--------------------------------------------------------------------------------
* d1 O I9 [' u; M8 }ff2e1190-30f5-4849-9c1c-886b1e1ee181 ceph client.cinder secret
' t3 L8 z9 N" Y3 u8 p. Q7 i# R6 s1 s; }5 J
在computer节点的ceph配置文件里添加一下内容
; w% d( ^" V9 @* I9 v; uls -l /etc/ceph/
2 x/ _; Y- B& V I
#ceph
; R& Z4 d2 x' o. g% e+ n. A
echo '
5 X1 `( G5 L8 l* R' w[client]
) q0 Y1 b1 G; d2 j
rbd cache = true
5 ]" _, a n( E, x- u/ p
rbd cache writethrough until flush = true
; J; p4 H- F }6 y
admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
+ h Z; t+ [, Z! i# V! j0 plog file = /var/log/qemu/qemu-guest-$pid.log
$ F2 K' x4 E# O: V5 Q$ \rbd concurrent management ops = 20
* ?0 ?& L% G( `6 P% i2 v0 {[client.cinder]
4 e$ W( j0 n' o2 B5 v) V2 o& J3 akeyring = /etc/ceph/ceph.client.cinder.keyring
) r' h$ P& F( I8 @0 G- C- a/ _
'>>/etc/ceph/ceph.conf
: _1 c* M6 j- `' k, D }, F5 u F+ z$ g, i' |
mkdir -p /var/run/ceph/guests/ /var/log/qemu/
% e$ `+ X4 C1 g9 W/ a, Q4 Cchown qemu:libvirt /var/run/ceph/guests /var/log/qemu/
6 m! d; K( x8 I
$ E+ w1 f% {6 S5 ^/ o4 W
#使用ceph存储,在/etc/nova/nova.conf添加以下内容
$ C2 }7 Z% {# m& W- F$ X* W$ B
[libvirt]
1 e- ^0 @. s" T$ P! W$ B/ \: rvirt_type = qemu
8 z7 S& d# L Q1 @
images_type = rbd
6 b, F9 y( w. z$ B1 |* t9 Oimages_rbd_pool = vms
& L0 F- _- |9 ~9 wimages_rbd_ceph_conf = /etc/ceph/ceph.conf
6 X8 ?' R5 Q: R0 ~1 \" e
rbd_user = cinder
. A: v" a2 L% N; \) J7 M+ A
rbd_secret_uuid = 'ff2e1190-30f5-4849-9c1c-886b1e1ee181'
" I2 ?6 b! E- tdisk_cachemodes="network=writeback"
3 G" J3 V6 u4 flive_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
$ P! U- }( m( U. e& |/ slibvirt_inject_password = false
8 L. M9 }" w5 U" I( Nlibvirt_inject_key = false
/ y) u& q8 `) O$ O" ^( V/ jlibvirt_inject_partition = -2
3 A" h9 x8 a# ^. } m/ N- e& _0 {' M$ o m) W; p
#重启服务
/ X4 q1 {+ m! V; G" _ Nsystemctl restart libvirtd.service openstack-nova-compute.service
, o ~* @6 x6 Q- F
, x0 S. J% B0 t+ c/ H
b' X/ z/ x5 b% Q% r" T5 ~9 E1 f
ceph与cinder对接
- t1 i6 y" b$ b! ~& m8 x, D7 J& H1 l. z8 g' D/ U( D: ]
#修改/etc/cinder/cinder.conf配置文件,注意:将之前的lvm的配置都删掉
, }- e8 f$ \6 u$ m0 A7 b
[DEFAULT]
( Y2 x2 f) E6 k' Z+ z! B% R#enabled_backends = lvm
9 i2 r2 V, t/ t2 i& f2 d) H
enabled_backends = ceph
2 W0 i/ c; t- R+ d
7 ? o n' g4 S. e[ceph]
1 G; x" U$ [+ t; v" j) j
volume_driver = cinder.volume.drivers.rbd.RBDDriver
+ r0 G0 i; }0 s: ` d0 E. A7 r
rbd_pool = volumes
& F* l" t1 ^; urbd_ceph_conf = /etc/ceph/ceph.conf
/ U5 ^. }+ _" |, |* N" l1 urbd_flatten_volume_from_snapshot = false
* c; l3 N; L0 w3 t; u8 Erbd_max_clone_depth = 5
) F6 g3 _& x2 ^, ], k$ wrbd_store_chunk_size = 4
6 c; S( ?1 k: r4 t/ I
rados_connect_timeout = -1
R" ^5 L) D) A8 W2 C/ i4 @glance_api_version = 2
" }* W/ | T% ]6 N6 T" E: w
rbd_user = cinder
6 p! Q# a0 N1 [ S: k& O* U$ z
rbd_secret_uuid = ff2e1190-30f5-4849-9c1c-886b1e1ee181
( v. L, c' u( m4 }9 e+ u- z @" F
9 D6 t' @) e [% c' r; R
8 W* \7 G9 w+ v! g' ~#重启服务
) U. o/ O/ ~9 r! @% G. W" l& Y
systemctl restart openstack-cinder-volume.service
& Z% Y9 a$ s8 G5 I