找回密码
 注册
查看: 6711|回复: 2

CentOS7环境下ceph安装部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-7-18 10:20:46 | 显示全部楼层 |阅读模式
一、环境准备

安装环境为VMWare Workstation虚拟机

1.准备5台虚拟机

ceph-deploy:作为管理节点,后续的ceph-deploy工具都在该节点上进行操作。 , O; G8 R1 I' S: V5 P# t
ceph-node1、ceph-node2 、ceph-node3 :即做mon节点又做osd节点,都有3块磁盘,前2块磁盘部署2个osd,第3块磁盘建立2个相等大小分区作为2个osd盘的日志分区。这样,集群共有6个osd进程,3个monitor进程。
. v  j2 A) n. Sceph-client :作为客户端,用来挂载ceph集群提供的存储进行测试。

2.磁盘规划

ceph-node1、ceph-node2 、ceph-node3 上面各有3块盘,/dev/sdb,/dev/sdc为数据盘,/dev/sdd为日志盘

3.修改各个节点/etc/hosts文件

192.168.128.110 ceph-deploy : L: z: D/ ]2 f
192.168.128.111 ceph-node1 * J" o$ T% t+ G& ]3 d
192.168.128.112 ceph-node2
9 n4 S+ }9 e# ~% E5 U, q+ f192.168.128.113 ceph-node3
8 ]9 P% o- j% J( S' `192.168.128.114 ceph-client

4.关闭firewalld

systemctl stop firewalld & f( N" B" D+ N( T+ z  X
systemctl disable firewalld

5.关闭Selinux

vi /etc/sysconfig/selinux % y" p% A; j; F( C( O
SELINUX=disabled

6.安装ntp

yum install ntp ntpdate ntp-doc

systemctl enable ntpd / B9 C9 ~/ P! a, O) y7 _% i  C
systemctl start ntpd

将系统时区改为上海时间
; n* w+ H, `+ l1 @* p1 iln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

查看时间是否准确 # L. v6 E- r4 ?: w7 Z' x3 ?
date

/etc/ntp.conf # deploy节点 3 D5 Y; P" m7 f3 W4 Q0 h

& Y4 _# A7 ?$ e# E) Yrestrict 192.168.128.0 mask 255.255.255.0 nomodify notrap 6 l3 J7 N. \0 Y5 A# ~0 ]& A( n
server 127.127.1.0 iburst $ C  w) X5 T+ t& r
fudge 127.127.1.0 stratum 10
# D+ O1 K' j  t' j* {

/etc/ntp.conf # ceph其他节点
( A& W! S1 Q; X. ~2 n. t
& ^5 e( m- E' U0 y1 [( w% qserver ceph-deploy iburst / X& [- X  R1 Q6 Y' `* P

systemctl restart ntpd

其他节点查看
$ g/ l6 e4 H% a# {- \watch ntpq -p
4 I& U' P* G0 @2 c( T1 J9 h

二、配置ceph源,安装依赖包

在每个节点都添加ceph源,修改epel源,使用阿里云源

cd /etc/yum.repos.d
% J1 }. D: t2 S- z; |  S2 a0 Mvi ceph.repo

[ceph]
; r  B3 r8 ^% C' Lname=Ceph packages
. [/ W' N- _8 z. sbaseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/4 r0 [) R' l7 Y  @' r& W# f
enabled=1" V  r7 f  h% C6 `' B
gpgcheck=1
; N" W0 A& C% r: xpriority=2type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
+ g1 m" E2 P& Y% K* A# A& P[ceph-noarch]
, F$ T: f% E4 P+ g2 l# Tbaseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
, k3 n9 W+ u2 t8 |" |% ^- j: c# Q$ penabled=1
7 l" R9 L3 [' Y/ t* }gpgcheck=1
. l6 u, @! ~* Y+ E4 z7 s) ppriority=2type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
( ~" }; Y! P" o2 \$ c
; @+ R& [0 H* \- \' b

vi epel.repo

[epel]7 z4 j0 a( H, q. E- a
name=Extra Packages for Enterprise Linux 7 - $basearch
+ s9 [* l3 Y5 I& V; ubaseurl=http://mirrors.aliyun.com/epel/7/$basearch
& c% O0 s3 e6 m- y5 [% V! A        http://mirrors.aliyuncs.com/epel/7/$basearch) T  s' O- ]. [& I1 X: A
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch: t+ k" p2 [6 Y
failovermethod=priority
* i* C7 ~( n3 ?( P; x. ^enabled=1
- z* X( T4 s" Q/ Wgpgcheck=0% q: {- C, M  [& {
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7


$ E6 P" n5 w+ S" \( a8 d0 g0 d, J

/ e! G- E. W$ a  J; Y; X' w; r

下面这些包需要在每个ceph节点都安装

yum install -y yum-utils snappy leveldb gdisk python-argparse gperftools-libs- ~4 S1 Q' h+ o
三、安装ceph-deploy工具

ceph-deploy是ceph官方提供的部署工具,它通过ssh远程登录其它各个节点上执行命令完成部署过程,需要安装在ceph-deploy节点

yum install -y ceph-deploy
; c( I. r  M- a$ }2 F4 \/ M

我们把ceph-deploy节点上的/data/ceph/deploy目录作为ceph-deploy部署目录,其部署过程中生成的配置文件,key密钥,日志等都位于此目录下,因此下面部署应当始终在此目录下进行

mkdir -p /data/ceph/deploy9 o- f6 e5 m  Z; w( h

ceph-deploy工具默认使用root用户SSH到各Ceph节点执行命令。为了方便,可以配置ceph-deploy免密码登陆各个节点。如果ceph-deploy以某个普通用户登陆,那么这个用户必须有无密码使用sudo的权限

ssh-keygen $ U0 Q' ~$ q& C4 J
ssh-copy-id ceph-node1 2 R7 k2 |. l% M
ssh-copy-id ceph-node2
& C- x4 L4 m0 P' k% l% D4 ossh-copy-id ceph-node3 . ]9 w8 b* j3 k" d- f' M( P4 k
ssh-copy-id ceph-client

四、安装ceph集群

1.ceph软件包安装

首先安装ceph软件包到三个节点上。上面我们已经配置好ceph源,因此这里使用--no-adjust-repos参数忽略设置ceph源

cd /data/ceph/deploy2 v8 Y$ I. A& E, ]; h. M! m9 t0 v

3 @1 u0 S0 Z6 K/ a2 Qceph-deploy install --no-adjust-repos ceph-node1 ceph-node2 ceph-node3
$ Y9 X, w7 J: ?0 q
" ~' e. I4 b6 x' ^

2.创建ceph集群,部署新的mon节点

ceph-deploy new  ceph-node1 ceph-node2 ceph-node3
( t* v! M# n) D
1 q  P* H5 b8 P7 X

上步会创建一个ceph.conf配置文件和一个监视器密钥环到各个节点的/etc/ceph/目录,ceph.conf中会有fsid,mon_initial_members,mon_host三个参数

默认ceph使用集群名ceph,可以使用下面命令创建一个指定的ceph集群名称

ceph-deploy --cluster {cluster-name} new {host [host], ...}* Q& u; v3 q2 d4 V" ]

Ceph Monitors之间默认使用6789端口通信, OSD之间默认用6800:7300 范围内的端口通信,多个集群应当保证端口不冲突

3.修改配置文件

修改ceph-deploy目录/data/ceph/deploy下的ceph.conf

vi /data/ceph/deploy/ceph.conf    添加如下参数

osd_journal_size = 10000       #10G
6 S  N% G8 I. I& S# Iosd_pool_default_size = 2; U. Y( B. W: ?' @0 L& ?/ e) b
osd_pool_default_pg_num = 512
, u1 R- c" \( U( mosd_pool_default_pgp_num = 512, M5 d5 c. S2 O- C5 g- t6 f8 I+ E
rbd_default_features = 3
8 ~/ j9 x: \$ @, g
- @' P& W& ]2 R  q$ D# A

4.添加mons

我们这里创建三个Monitor

ceph-deploy mon create  ceph-node1 ceph-node2 ceph-node3
/ J/ y/ f' w* ?/ X+ s, i
( U9 b+ V0 S$ G8 ?  B

上面命令效果如下
; p3 S: w& D: M. H5 \0 |a.write cluster configuration to /etc/ceph/{cluster}.conf
; z' _" P0 _' S, n% vb.生成/var/lib/ceph/mon/ceph-node1/keyring
5 U. J, i& N- y( F3 J4 mc.systemctl enable ceph-mon@ceph-node1 , J% w# L  M, E& }
d.systemctl start ceph-mon@ceph-node1

在一主机上新增监视器时,如果它不是由ceph-deploy new命令所定义的,那就必须把public network加入 ceph.conf配置文件

5. key管理

为节点准备认证key

ceph-deploy gatherkeys ceph-node1 ceph-node2 ceph-node3# w! h3 Z; M0 m# N" f

若有需要,可以删除管理主机上、本地目录中的密钥。可用下列命令:

ceph-deploy forgetkeys
1 U) W0 O! ]  \2 p6 g: Y9 L% t; m' x

6. osd创建

创建集群,安装ceph包,收集密钥之后,就可以创建osd了

准备osd

ceph-deploy osd prepare ceph-node1:sdb:/dev/sdd ceph-node1:sdc:/dev/sdd ceph-node2:sdb:/dev/sdd ceph-node2:sdc:/dev/sdd ceph-node3:sdb:/dev/sdd ceph-node3:sdc:/dev/sdd
- w) K3 |( u4 Q- c+ w+ h- I

可以prepare多个osd # w. e% a7 n6 M+ P( g1 |( o5 @
ceph-node1:sdb:/dev/sdd 意思是在node1上创建一个osd,使用磁盘sdb作为数据盘,osd journal分区从sdd磁盘上划分 - O3 Q' e+ O) G) v7 J$ t
每个节点上2个osd磁盘sd{b,c},使用同一个日志盘/dev/sdd,prepare过程中ceph会自动在/dev/sdd上创建2个日志分区供2个osd使用,日志分区的大小由上步骤osd_journal_size = 10000(10G)指定,你应当修改这个值
5 {& u% T9 [! {" Wprepare 命令只准备 OSD。在大多数操作系统中,硬盘分区创建后,不用 activate 命令也会自动执行 activate 阶段(通过 Ceph 的 udev 规则)

激活osd


& K6 B! ?5 j/ [' v: k3 D6 K2 jceph-deploy osd activate ceph-node1:sdb1:/dev/sdd1 ceph-node1:sdc1:/dev/sdd2 ceph-node2:sdb1:/dev/sdd1 ceph-node2:sdc1:/dev/sdd2 ceph-node3:sdb1:/dev/sdd1 ceph-node3:sdc1:/dev/sdd2
1 T8 Z( _; I. }7 t/ J
& H2 Y+ ?) v& X2 R

6 y; e: T. z0 W4 b% b7 ~* `# z6 ]

sdd1,sdd2 为ceph自动创建的2个日志分区
( B# ~2 i# ~: o! Q0 x9 t2 t. Sactivate 命令会让 OSD 进入 up 且 in 状态,此命令所用路径和 prepare 相同。在一个节点运行多个OSD 守护进程、且多个 OSD 守护进程共享一个日志分区时,你应该考虑整个节点的最小 CRUSH 故障域,因为如果这个 SSD 坏了,所有用其做日志的 OSD 守护进程也会失效

! @9 O; q- h6 ~# _1 l: ^

7.验证安装成功

在mon节点执行 ceph -s[root@ceph-node1 ~]# ceph -s, K5 O/ w$ W# E) {$ f; {
    cluster 2ba8f88a-1513-445b-93d0-4ec7717c6777
, j4 }/ y% D1 J* Q3 n  U; @7 \9 x3 J     health HEALTH_WARN
/ `' a: b% u9 ]0 q7 W* L3 ]7 I: S            clock skew detected on mon.ceph-node2, mon.ceph-node3
, e- C4 G# p8 u" g            too few PGs per OSD (21 < min 30)
0 ^8 A* a; }. x            Monitor clock skew detected
4 x0 R* H0 q. K: z+ M+ R6 R     monmap e1: 3 mons at {ceph-node1=192.168.128.111:6789/0,ceph-node2=192.168.128.112:6789/0,ceph-node3=192.168.128.113:6789/0}9 b# Y6 s  ?% g
            election epoch 6, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3
& k3 I4 @+ K7 F9 m' U8 e: L% \     osdmap e30: 6 osds: 6 up, 6 in
3 ], v+ h. Y1 g& [            flags sortbitwise,require_jewel_osds
9 M& g6 c; q% }! V; D      pgmap v63: 64 pgs, 1 pools, 0 bytes data, 0 objects
: s4 g* |0 _( ]! d9 p. K            201 MB used, 299 GB / 299 GB avail
1 m8 _# b2 ?0 V' n! m1 Z3 {+ m                  64 active+clean
1 w+ a) ^& ]  Z0 [' ]显示 HEALTH_WARN too few PGs per OSD (21 < min 30)

通过下面的命令可以看到默认创建一个pool rbd,pg_num 为 64

[root@ceph-node1 ~]# ceph osd pool ls detail, I' w$ b8 ]; ^# r
5 w9 L+ q/ O: T/ I5 o" g3 V  g
pool 0 'rbd' replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 flags hashpspool stripe_width 0
. Z' Y! c4 s$ R+ g7 D" i- l6 d8 A& P( x

8 F, D6 U; m# `! j

再创建几个pool,为后面对接OpenStack做准备,pg数量就能上来了

ceph osd pool create cinder-volumes 128% r2 W4 K7 j: E, }
) |/ p) d" h% P) z) w1 r  B
ceph osd pool set cinder-volumes size 2) b1 ?8 _5 e+ E' z' ^
ceph osd pool create nova-vms 128! b1 ]6 J6 p' W% O  F: V8 A. N

4 {7 }  Y" g6 @6 Oceph osd pool set nova-vms size 2, e7 q4 R$ j2 U# _" q1 Q
ceph osd pool create glance-images 64. T! [2 Z6 a; K, U3 h
ceph osd pool set glance-images size 2* X" s' H6 v0 ?5 ?( B7 K5 j% k, d
ceph osd pool create cinder-backups 64
* f3 Y8 Y, v! d, Iceph osd pool set cinder-backups size 2! F9 }# b% _% ^7 C0 }
0 C# W" P, I" l% e: R1 W

又显示 HEALTH_WARN Monitor clock skew detected

[root@ceph-node1 ~]# ceph -s' x8 f* V# L. ^
    cluster 2ba8f88a-1513-445b-93d0-4ec7717c67773 f( P: Q/ g. ]
     health HEALTH_WARN, B! p0 g5 V3 m6 g3 {  P
            clock skew detected on mon.ceph-node2, mon.ceph-node3
3 h3 u) W! J: X+ d0 h& z9 N% M            Monitor clock skew detected ; {' Q0 r: ?1 {2 i+ u3 d
     monmap e1: 3 mons at {ceph-node1=192.168.128.111:6789/0,ceph-node2=192.168.128.112:6789/0,ceph-node3=192.168.128.113:6789/0}% [( ~8 }7 g  q* B. w, N! V5 x
            election epoch 6, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3
& S7 L6 o8 }5 j: S     osdmap e42: 6 osds: 6 up, 6 in' F5 t: n5 }5 D8 s. `9 v
            flags sortbitwise,require_jewel_osds
6 j( Y0 i! B7 K1 Z. u      pgmap v123: 448 pgs, 5 pools, 0 bytes data, 0 objects( b& T) h; w+ I
            209 MB used, 299 GB / 299 GB avail
! \$ r) e2 _* c$ G, d$ [  i                 448 active+clean$ u* J( C3 J* W& Y* x' X

+ D9 ?) S. M7 Z' R& N  p: \

时间同步有问题,经检查 ceph-node1节点的ntp服务没起来


# y: z  B% s. A2 ?1 ~3 ]" ]9 G

[root@ceph-node1 ~]# systemctl status ntpd
2 a9 C& x; s8 F, r3 c" N6 k; A
! Q, e& C: @8 p9 b● ntpd.service - Network Time Service   # [. g5 H  g/ U6 R# j
          Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)   
! }$ Q5 I7 T1 g* _6 V1 Q$ x# j+ Q          Active: inactive (dead)
& }0 _( A, f; Z: J! z, t[root@ceph-node1 ~]# systemctl start ntpd" k. c4 ]# Z, M" u4 _, D8 i9 E

+ m# z$ l; m: G* k

再次查看集群正常了

[root@ceph-node1 ~]# ceph -s   
, p  l# ?0 O7 ?- e% [2 O! `7 @/ o            cluster 2ba8f88a-1513-445b-93d0-4ec7717c6777     ' h+ }* g( X* C9 z
             health HEALTH_OK     
8 w" c0 {# z" m3 y! }, r              monmap e1: 3 mons at {ceph-node1=192.168.128.111:6789/0,ceph-node2=192.168.128.112:6789/0,ceph-node3=192.168.128.113:6789/0}           
  f( u/ f' p- Q2 k                            election epoch 10, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3     
9 |% X7 G* \" _; }9 ]             osdmap e42: 6 osds: 6 up, 6 in            
  a! |$ M' _" s6 |7 c/ l$ m                         flags sortbitwise,require_jewel_osds      * {, I; h2 l& \2 ~& l6 ?
             pgmap v123: 448 pgs, 5 pools, 0 bytes data, 0 objects            8 t9 P4 o+ D# l, D: F# A# S
                           209 MB used, 299 GB / 299 GB avail                 
( x+ F9 K4 O1 W( g  o  I) P3 S                                 448 active+clean4 @" v( r, Q2 C& L* h
五、Ceph client测试# E. I- P+ N5 q  e- K* C

1.准备client节点 " j, @0 f( g# H. n  X1 l8 |
通过ceph-deploy节点执行命令:

ceph-deploy  install  --no-adjust-repos ceph-client
. c. I6 z3 w0 X. b; p8 J
, n9 V! p' u5 K8 Cceph-deploy  admin  ceph-client. Y$ g2 ]' g* H( {
" l) m9 ^! w- y, U

2.创建一个1G大小的块设备

rbd create  --pool rbd --size 1024 test_image
2 f0 q; A# Z$ Q& n, u

查看创建的块设备

rbd list
1 g2 m2 o" D5 H0 Q) _rbd info test_image
  k  ~! z/ r6 {; {
9 S, X, u6 L* S7 u" L2 H

3.将ceph提供的块设备映射到ceph-client

rbd map  --pool rbd  test_image
' l4 ?2 E% w" o' R! c& x! j) ?, r

4.查看系统中已经映射的块设备
+ t" Z  V  T. q; S8 v+ R( _2 N4 \6 Srbd showmapped

[root@ceph-client ~]# rbd showmapped
4 h3 N* P( \& O0 h* u, H# zid pool image      snap device    & S% i+ W6 P3 p0 G0 i' l
0  rbd  test_image -    /dev/rbd0
2 w1 |8 D% L* S2 e( S4 Z% [% ~9 f; k* W, p  F4 g

5.取消块设备映射
7 }6 w# I5 K9 `2 Z; \' @9 S7 v, urbd unmap /dev/rbd0

此次安装配置参考了网上的多个文档,在此表示非常感谢!

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-9-25 23:54:19 | 显示全部楼层
[root@ceph1 ~]# ceph osd tree7 n" L! v' g( f
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
. |  {' l1 W1 A4 D-1 0.58557 root default                                    
9 \6 }8 _1 x& F-2 0.19519     host ceph1                                   : b3 K# ?7 z  Q9 Z, K& O! N4 J
0 0.09760         osd.0       up  1.00000          1.00000
- v" z1 j$ [9 o 1 0.09760         osd.1       up  1.00000          1.00000
' E/ M0 |! a$ T' J1 f, ~* Z-3 0.19519     host ceph2                                   
# T8 B0 Y* ^% X, X2 n 2 0.09760         osd.2       up  1.00000          1.00000 " V, `! d" h7 ]# k3 b% P3 e' d- z
3 0.09760         osd.3       up  1.00000          1.00000
+ |& h' y' @  G+ T# K) i7 D" J-4 0.19519     host ceph3                                   3 \$ M4 z; \- O
4 0.09760         osd.4       up  1.00000          1.00000
' W& {! m1 \" K, z5 ? 5 0.09760         osd.5       up  1.00000          1.00000 - Z2 H/ E7 F& E: `+ i# y
[root@ceph1 ~]# ceph mds stat
# v: t  D2 s* g) p1 ~* \2 ?8 m  Ke1:
% z# n) f3 ]$ h2 l" ], `6 t- q/ t9 A) a1 C1 C8 i6 a: H+ d9 f
[root@ceph1 ~]# ceph -s
7 L) Y. ^( a0 T+ x0 Y3 V7 \" n4 }    cluster fbe2dad5-5566-4e95-9fed-f8edbdcfeeb6
" D4 Z" k2 J& B' e+ U8 v. j     health HEALTH_OK  z6 k1 L( x% d
     monmap e1: 3 mons at {ceph1=192.168.90.86:6789/0,ceph2=192.168.90.87:6789/0,ceph3=192.168.90.88:6789/0}
. }" l! K1 T# j            election epoch 6, quorum 0,1,2 ceph1,ceph2,ceph3
9 _* X, D; r- o% o     osdmap e44: 6 osds: 6 up, 6 in
5 s' h4 `9 I! Y5 {- R            flags sortbitwise,require_jewel_osds
% w8 G% Y  F4 R* o  E1 e      pgmap v176: 448 pgs, 5 pools, 16 bytes data, 3 objects
3 y) D$ o8 b, N7 J            651 MB used, 599 GB / 599 GB avail
' F9 s2 a" f/ r( X' p2 k4 C                 448 active+clean
7 i; j* V, v, D) k# N7 N' E/ W. U" ]" G- z
在这过程中,失败和反复是难免的,在任何时候,可以使用如下的命令将已有的配置擦除然后从头安装:8 m3 q( p0 L# Q) W7 N. h7 u1 d

' T1 R: i- ]6 oceph-deploy purge ceph{1,2,3}+ G  Z3 [0 f9 a
ceph-deploy purgedata ceph{1,2,3}1 Y# V* a. i( d4 d( T
ceph-deploy forgetkeys

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-9-26 09:01:34 | 显示全部楼层
Ceph 分布式存储集群有三大组件组成,分为:Ceph Monitor、Ceph OSD、Ceph MDS,后边使用对象存储和块存储时,MDS 非必须安装,只有当使用 Cephfs 文件存储时,才需要安装。这里我们暂时不安装 MDS。. v% K4 v- o) |6 D1 X; i7 F
3、Ceph 预检
/ ^; l2 d- Z) V% E; n4 p, x3.1 配置节点Host( s. {* r1 m  g" V- {
为了方便后边安装,以及 ssh 方式连接各个节点,我们先修改一下各个节点的 Hostname 以及配置 Hosts 如下:
# N  \( r: {  C9 {0 Fadmin-node (10.222.77.213)4 j" h+ {' e5 E6 N; D5 o

8 u7 A: m2 H3 t0 Y- u0 J$ cat /etc/hostname
0 B4 C- Q5 u( n8 e  P2 ?admin8 r# _9 }4 @& [+ B
) i' a! o4 \  u, v+ j4 j, f+ c/ Y. u
$ cat /etc/hosts
' ?3 ^2 J' Z; n6 i" ?- A1 g127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
+ Y& _% _8 n, f7 o6 o1 N4 h::1         localhost localhost.localdomain localhost6 localhost6.localdomain6; X' V  A) V+ D# {0 J# s9 ^6 T( B
10.222.77.213 admin9 f9 I* R. m" D
10.222.77.242 node0
- A# x% @( x! |7 n10.222.77.253 node1
. `0 J) a1 g9 z$ V$ |( g
5 G: ^  t. {" ^3 ]: V" g8 M. x-----------------------------8 H8 p7 w# P: N  i' `- P1 M' R
node0(10.222.77.242) , x% ^" l( {" E
$ cat /etc/hostname # S+ l" N# d6 w
admin
, i; \; t! G& ?
, \4 p# n( g( n9 t, t$ \# K$ cat /etc/hosts1 l: I4 v) o5 G
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4! {/ L' n3 t$ I" S: _( E) I) |
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6( b& m( ~3 |8 P5 V! \. K( g$ p
10.222.77.242 node0: Q8 d  C5 y9 u0 d% @  i
10.222.77.213 admin
* ]9 E) _4 B" a" {10.222.77.253 node1
6 {9 N# A% x2 u7 Y8 w( K; ^1 [* R, l7 s% t9 y8 b  p
-----------------------------' _$ L7 {1 V% H3 I0 M
node1(10.222.77.253) / w: {- M: A& k9 O. g
$ cat /etc/hostname 7 u# |1 ?3 T* }' R* j
admin* B# m: v/ V' {. ]& i

) @% O1 B) n& ^+ N; N$ cat /etc/hosts; v# ^  g; r- ^. `6 X
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
/ ?; F6 S2 e. w6 q" `::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
+ I6 D$ s5 D) l: l0 }7 J& B% |10.222.77.253 node1& e$ _& G* u$ W# W. W, \
10.222.77.213 admin
) H' b' G# c5 M0 s10.222.77.242 node0: W' L1 H8 ]# \/ o1 }
3.2 安装部署工具 ceph-deploy( J: g& U; T2 r
Ceph 提供了部署工具 ceph-deploy 来方便安装 Ceph 集群,我们只需要在 ceph-deploy 节点上安装即可,这里对应的就是 admin-node 节点。把 Ceph 仓库添加到 ceph-deploy 管理节点,然后安装 ceph-deploy。因为系统是 Centos7 版本,所以配置如下:  ?- U6 r, R3 @* E0 M: U
# ceph-deploy (admin-node) 上执行  C( ]4 @. R6 |  {3 V+ X3 p
4 t( t- I0 H. P* c
# yum 配置其他依赖包1 x$ z" z" d! o3 l8 h
$ sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
: B( q8 ~" i- Q# }( G4 Z
/ M3 T  A/ F2 E& D: w# 添加 Ceph 源8 K4 F! `& ]6 G5 j8 `4 Y/ d0 O  [
$ sudo vim /etc/yum.repos.d/ceph.repo( C  y$ b. c# t, M0 E6 u; A. W
[Ceph-noarch]5 l) y/ N1 x# s
name=Ceph noarch packages
# `+ D' V5 Y: [baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
) R0 k1 D  n7 H2 ]9 wenabled=1
3 B, W4 m5 G) \4 Lgpgcheck=1
0 L: e7 Z) c+ [: n1 M, U" B5 Qtype=rpm-md
% T4 e# p* G- ^$ y2 fgpgkey=https://download.ceph.com/keys/release.asc
; J( b8 {7 O; T7 f4 [# ~priority=1: w1 H: _$ \& g0 u

$ I' U  d- e# R+ S6 c: g# 安装 ceph-deploy
, n7 q, D: M" Z! x. [! b+ A( s$ sudo yum update && sudo yum install ceph-deploy
: ?+ t5 W6 [$ E9 Z/ e. `, {3.3 安装 NTP 和 Openssh
; y9 s, i- p# s2 g官方建议在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),以免因时钟漂移导致故障。% I( B3 d8 `+ Y: ^6 J, `
# yum 安装 ntp
6 n. y( e9 w2 `% e; {sudo yum install ntp ntpdate ntp-doc; R3 |# t! _$ m. W3 s) ?

* F; }3 ]! e; U0 q) F/ Y+ X9 q# 校对系统时钟
; T+ V& g- k5 x# ?ntpdate 0.cn.pool.ntp.org# u3 o. R2 h! [, j/ j/ F6 h
后续操作,ceph-deploy 节点需要使用 ssh 方式登录各个节点完成 ceph 安装配置工作,所以要确保各个节点上有可用 SSH 服务。! S% Q) O; H9 f! w
# yum 安装 openssh
9 X& L/ D5 N; o, z" O# X$ sudo yum install openssh-server% j; u! {  B, b2 U, a

4 a5 v  R) K! u. c# 查看 ssh 版本
4 p1 G. W0 J2 J( j& h$ b$ ssh -V4 u, d' n+ v3 N, O
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017. a! @! D" e) h" P8 g
3.4 创建 Ceph 部署用户
: b/ l! \0 x6 ~2 Yceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。官方建议所有 Ceph 节点上给 ceph-deploy 创建一个特定的用户,而且不要使用 ceph 这个名字。这里为了方便,我们使用 cephd 这个账户作为特定的用户,而且每个节点上(admin-node、node0、node1)上都需要创建该账户,并且拥有 sudo 权限。) ~+ |9 o9 T  k' {! Z' L4 q9 L
# 在 Ceph 集群各节点进行如下操作' W& c8 Y, y$ c  Y- z$ G* J

' P+ ^* O# `( K4 H# 创建 ceph 特定用户& P, ?+ D$ L* P0 @. e
$ sudo useradd -d /home/cephd -m cephd4 o$ U3 J8 ~6 y1 ?9 |3 f
$ sudo passwd cephd
3 _4 {$ z9 V$ l+ G3 y# O
, n, {5 _5 K2 Z9 E" `" v# 添加 sudo 权限
; @  O' }) }0 f- U  t) I! H$ echo "cephd ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephd3 A0 S. [9 Y3 Z/ o6 ^3 N9 o
$ sudo chmod 0440 /etc/sudoers.d/cephd
0 E( T2 y0 [; d" w% |/ R接下来在 ceph-deploy 节点(admin-node)上,切换到 cephd 用户,生成 SSH 密钥并把其公钥分发到各 Ceph 节点上,注意使用 cephd 账户生成,且提示输入密码时,直接回车,因为它需要免密码登录到各个节点。4 z6 e" `: N1 {+ Z4 z$ u) N
# ceph-deploy (admin-node) 上执行) k% i( f* T* \; J

& e9 D; t. Y3 {# 生成 ssh 密钥
: m" X; P+ F7 W% b8 J$ ssh-keygen
1 W7 Y( T3 l! D. D" J3 }; L" Q9 e, \Generating public/private rsa key pair.$ q0 r$ S( C" C7 h2 F. P
Enter file in which to save the key (/home/cephd/.ssh/id_rsa):
9 G7 C* S, J0 V, u9 t( z$ DCreated directory '/home/cephd/.ssh'., `6 Y3 c* B" F$ l: }5 |7 {
Enter passphrase (empty for no passphrase): 4 [; N& T! d* L) K# j( Y
Enter same passphrase again:
6 |6 S  g  h1 R9 |% y% |Your identification has been saved in /home/cephd/.ssh/id_rsa.
  _0 w# I" C1 D, p& ]Your public key has been saved in /home/cephd/.ssh/id_rsa.pub.1 f  D) N# u7 h: w5 p& e
The key fingerprint is:1 a/ }4 h8 e' L
...0 f5 o7 H) u2 y: y; G" r

9 E2 Z7 f! `: n5 `& w4 D, J# 将公钥复制到 node0 节点
2 p& [, m+ N& p. z& `1 ?$ ssh-copy-id cephd@node0
4 m' ~5 ~- @3 F# W9 D4 ^3 `' o/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cephd/.ssh/id_rsa.pub"& m2 }5 b0 \7 h1 ^5 H+ j
The authenticity of host 'node0 (10.222.77.242)' can't be established.
5 h/ R' a  {9 D, ^3 N* ]  SECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6., i1 ?0 {; j/ |- K  n/ Q- X$ x! ~5 `
Are you sure you want to continue connecting (yes/no)? yes
. j8 D& Z9 y* g7 }: _( _/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed7 \) S4 `$ n5 N7 c: Y. b
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys9 D) p8 g+ p' y; `- [
cephd@node0's password: - m/ g2 B4 d3 j/ @* C1 e# ]0 v

& E1 Y- W/ r& n* m- VNumber of key(s) added: 1' p3 |% h" o. c+ ~& Z7 O% L
/ k2 n0 J& g- H  v
Now try logging into the machine, with:   "ssh 'cephd@node0'"
; N) k0 O# N% u1 p' yand check to make sure that only the key(s) you wanted were added.+ V8 C  V1 [  m" B3 y! @  @
3 i1 L, r3 h( }/ b
# 将公钥复制到 node1 节点( a: _: v$ V. e% `. R4 ~. |+ p
$ ssh-copy-id cephd@node16 T$ A. }* Q% U9 e& f% w
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cephd/.ssh/id_rsa.pub"
: v! X% @% v$ t5 k4 s2 q- KThe authenticity of host 'node1 (10.222.77.253)' can't be established.
4 ^; a+ V/ ]! v* KECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.
& }! n6 n3 d: `5 i1 O7 P9 q) |Are you sure you want to continue connecting (yes/no)? yes! Y& w( \( p  K" B2 Z' ?
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed, M0 d% s4 D! ]
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys* e7 i' R  Z- N" O/ Z3 X
cephd@node1's password:
( K4 P, a; T4 y& C. S
8 m- |: n( @3 n* V  u4 ^Number of key(s) added: 11 `4 Y' P4 k: }+ h4 _$ }0 Y

* `$ n; j+ D! n& BNow try logging into the machine, with:   "ssh 'cephd@node1'"5 W( [5 ~5 Z0 K, ?* P
and check to make sure that only the key(s) you wanted were added.$ w$ E' `6 v7 g9 f) W9 s  B4 b
复制完毕,测试一下在 ceph-deploy 管理节点免密码登录各个节点。) |5 m$ j! Z8 ^1 s! c: F. ~1 o
$ ssh node0% h( @" T' i' `. Q
Last login: Fri Dec  8 15:50:08 2017 from admin
2 }/ c8 L# P. @7 R: p( }( X* r9 r* ]& P) T; u6 }3 @5 H, |
$ ssh node1
/ ^; u2 L+ @2 I( vLast login: Fri Dec  8 15:49:27 2017 from admin* |) h8 c- l# o# Q8 a5 U
测试没有问题,接下来,修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样无需每次执行 ceph-deploy 都要指定 –username cephd 。这样做同时也简化了 ssh 和 scp 的用法。, J9 o* j7 t2 d5 ?1 G! S; X
$ cat ~/.ssh/config
' y8 k; z; ~+ V% THost node0, c6 V8 c& w. l  g8 }
   Hostname node06 ~5 Z% _1 n. s
   User cephd' }" p- D" a: R8 D# p& a) e
Host node11 ^. ^% A6 {0 `1 H. I0 D6 [/ J
   Hostname node1
3 S1 P; D( h' v. n# m9 K( T; i) k8 \   User cephd. P& [2 V. {  X3 t
注意,此时再执行 ssh node0 会提示报错 Bad owner or permissions on /home/cephd/.ssh/config。原因是 config 文件权限问题,修改权限 sudo chmod 600 config 即可解决。
7 F; f& b$ m6 B2 f3.5 其他网络配置6 m7 L# D3 O: ~
官网文档中指定 Ceph 的各 OSD 进程通过网络互联并向 Monitors 上报自己的状态,所以要保证网络为开启状态,不过某些发行版(如 CentOS )默认关闭网络接口。所以我们需要保证集群各个节点系统网络接口是开启的。
+ a7 `6 o4 j( U: y  j8 A$ U# 在 Ceph 集群各节点进行如下操作6 t% D/ C% d4 @

) J# W: O. }# r1 k; t$ sudo cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
( a; B0 k9 L8 S. A& JTYPE="Ethernet") }( W7 ]+ {1 {# ]; g: m
BOOTPROTO="dhcp"0 V% E3 I$ u9 ]' `
DEFROUTE="yes"9 n9 O1 W. `0 L: H
PEERDNS="yes"
1 k! A, K/ P* H1 S- O: rPEERROUTES="yes": s- v, B7 Q3 z1 c; |: h, h% w" D
IPV4_FAILURE_FATAL="no"
  z0 ~6 U& N. X* V# C* tIPV6INIT="yes"
( c/ T4 N* N6 b, M& pIPV6_AUTOCONF="yes"- ]3 g) Q# B: O
IPV6_DEFROUTE="yes"
1 E1 S' f$ Q, W& ]7 B8 j3 LIPV6_PEERDNS="yes"
* H4 i3 r( ?  g) i. h2 @. V& SIPV6_PEERROUTES="yes"7 q2 f8 m# H& H$ W. _6 A
IPV6_FAILURE_FATAL="no"1 o1 A- M$ c; a
IPV6_ADDR_GEN_MODE="stable-privacy"
: j! G9 G' T9 ]% T, PNAME="enp0s3"
! u9 f# f( Y1 M: H6 Y* u9 YUUID="3e68d5a3-f9a6-4c83-9969-706f7e3b0bc2"
& m4 Y1 v; H6 yDEVICE="enp0s3"
( e* e+ {! w$ B& M7 u0 i/ FONBOOT="yes"  # 这里要设置为 yes
8 r% X) T4 `$ i0 ?4 c# x8 u- J6 x注意:这里因为在我安装的虚拟机集群中网卡为 enp0s3,所以需要修改 /etc/sysconfig/network-scripts/ifcfg-enp0s3 文件,请根据自己系统网卡名去修改对应配置文件。) q' j+ P2 @3 M$ ]3 H
SELINUX 设置,在 CentOS 系统上, SELinux 默认为 Enforcing 开启状态,为了方便安装,建议把 SELinux 设置为 Permissive 或者 disabled。. Z4 K0 C1 T. J3 l4 K4 x) }* F
# 在 Ceph 集群各节点进行如下操作) T, O' E; n8 m) o

! k- \+ ]( ~9 s- F* u# 临时生效设置: A, V/ G' S( p5 A( u: o) o) L
$ sudo setenforce 0
( M, a& J. L+ J" m" Y" M: Y4 T7 O& |& g& ~
# 永久生效设置
) |5 ^) u! q1 e; \* t9 g+ g$ sudo cat /etc/selinux/config: y% L& D: N9 F0 T0 d9 e
SELINUX=disabled  # 这里设置为 Permissive | disabled
3 t1 b8 [" d, L) i' F% USELINUXTYPE=targeted & r5 z$ \5 o* o' d1 n
开放所需端口设置,Ceph Monitors 之间默认使用 6789 端口通信, OSD 之间默认用 6800:7300 这个范围内的端口通信,所以我们需要调整防火墙设置,开放所需端口,允许相应的入站请求。* X! J& ?- O4 M' H# ?
# 防火墙设置" h8 o& E5 B& z, f/ ?% f& y1 a
$ sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent8 X, g7 S" n+ r6 {/ m

2 ]+ i+ Z* x1 J# M; n# 当然我们也可以关闭防火墙
% T" ?+ _) ~$ ~& s2 m$ sudo systemctl stop firewalld.service  #停止 firewall, B: I6 M0 M5 `8 E
$ sudo systemctl disable firewalld.service  #禁止 firewall 开机启动2 y( Y0 }/ W3 M% n) ~  F
4、Ceph 存储集群搭建
& U9 Q6 q7 q* v( k. P好了,经过上边一系列的预检设置后,我们就可以开始 Ceph 存储集群搭建了,集群结构为 admin-node (ceph-deploy、Monitor)、node0(osd.0)、node1(osd.1)。首先要提一下的是,如果我们在安装过程中出现了问题,需要重新操作的时候,例如想清理我搭建的这个集群的话,可以使用以下命令。
6 P4 ^7 r( ~6 R" @4 l# ceph-deploy (admin-node) 上执行
1 P1 F) A% D1 g: _# @4 ^5 n+ r0 m% t* \6 ]2 R5 w$ p. N% I: c
# 清理配置
" T" R8 j# v; u% Y% Lceph-deploy purgedata admin node0 node1) ?" R( d8 y9 o, i5 H
ceph-deploy forgetkeys# p" R( O! }4 n. G. s6 U

8 H! j& o, p* ?# W, P# 清理 Ceph 安装包
( U; T% w* B. J+ Fceph-deploy purge admin node0 node13 t8 _4 U; n0 k- \
好了,现在开始搭建。首先 Cephd 用户创建一个目录 ceph-cluster 并进入到该目录执行一系列操作。因为我们设计的 monitor 节点在 admin-node 节点上,所以,执行如下命令。1 N+ ]" N! }4 Z3 X
# 创建执行目录6 m- c6 n* v% \% d4 @
$ mkdir ~/ceph-cluster && cd ~/ceph-cluster
5 \, Q4 [6 e- T& {* Y( ~. ^7 X, v. k) ~. G
# 创建集群0 J& M# N- @# h/ b# x$ a
$ ceph-deploy new admin
( O6 o$ w3 `1 r$ E/ E" b' y' Y2 K7 r[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf) Z; D" q1 d! w1 @" ^- {
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy new admin
  r  \& J: m8 y* B6 a[ceph_deploy.cli][INFO  ] ceph-deploy options:, h) b: g1 c( j& B' P- Y& e: l
[ceph_deploy.cli][INFO  ]  username                      : None
" o6 b4 i+ p0 P- u( E[ceph_deploy.cli][INFO  ]  func                          : <function new at 0xf24938>: Q2 _' E/ y7 a/ t
[ceph_deploy.cli][INFO  ]  verbose                       : False
; R7 V1 _% }1 w. R[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
% N: a  }4 T7 f[ceph_deploy.cli][INFO  ]  quiet                         : False/ x( o4 h# m. [8 q5 l; N$ M. S7 j
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xf1f6c8>7 e, `) C  b% @& O
[ceph_deploy.cli][INFO  ]  cluster                       : ceph9 x- a& C) ?- x( {+ |2 ~
[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
% R4 J, x7 O- V, g[ceph_deploy.cli][INFO  ]  mon                           : ['admin']
4 J+ c( |8 t! y6 a[ceph_deploy.cli][INFO  ]  public_network                : None
( H7 g2 A' U- {  Q2 ?7 B# A[ceph_deploy.cli][INFO  ]  ceph_conf                     : None; d0 \+ Z" N+ Y/ H; c
[ceph_deploy.cli][INFO  ]  cluster_network               : None1 }3 h) q1 w. N$ m8 i( y
[ceph_deploy.cli][INFO  ]  default_release               : False
+ V% v1 l7 Q" D0 p7 U0 N& \. S[ceph_deploy.cli][INFO  ]  fsid                          : None
9 o3 Q5 b: m; y+ L" ~[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
+ }# {- X, h! B* p[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds9 `- J& `/ q- O8 |3 o
.... G  ^. ^/ q# V' @
[ceph_deploy.new][DEBUG ] Resolving host admin1 E3 d# d* E7 e* Z" R1 Y
[ceph_deploy.new][DEBUG ] Monitor admin at 10.222.77.2136 n* q: ^) s  S/ y3 T/ ?
[ceph_deploy.new][DEBUG ] Monitor initial members are ['admin']
* t' U3 j9 u& `# H! b[ceph_deploy.new][DEBUG ] Monitor addrs are ['10.222.77.213']
1 C; {9 q1 @5 Q  z4 `3 i' t[ceph_deploy.new][DEBUG ] Creating a random mon key...
2 \  X( {( f+ z1 f[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring..., ]4 f  g& u3 l5 Y8 d
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...
' E. A/ u. E& M' n8 i# E此时,我们会发现 ceph-deploy 会在 ceph-cluster 目录下生成几个文件,ceph.conf 为 ceph 配置文件,ceph-deploy-ceph.log 为 ceph-deploy 日志文件,ceph.mon.keyring 为 ceph monitor 的密钥环。
, w" P' B/ m" e& T" y  K$ ll ceph-cluster  `- `, h  [- z) w
-rw-rw-r--. 1 cephd cephd  196 12月  7 14:46 ceph.conf' t+ W& Q$ p  D# {$ E
-rw-rw-r--. 1 cephd cephd 3694 12月  7 14:46 ceph-deploy-ceph.log
- k) o1 {( k7 F+ r-rw-------. 1 cephd cephd   73 12月  7 14:46 ceph.mon.keyring! B0 X4 S! _$ v1 Y
& v. e" M1 \8 F& i! ?0 \
$ cat ceph.conf
$ H- E4 d. ?7 j6 C[global]
, t, m3 \/ V3 f) R& d6 dfsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26) b, R  Q+ Q. }" e& u
mon_initial_members = admin3 z, n1 @+ L. n* F$ o# U: V
mon_host = 10.222.77.213
8 [1 J& {& g$ f" lauth_cluster_required = cephx
* k* b6 b% ?: ]+ b( kauth_service_required = cephx
. j! X1 _' H: qauth_client_required = cephx
! c  n7 i3 j6 Q" H# e接下来,我们需要修改下 ceph.conf 配置文件,增加副本数为 2,因为我们有两个 osd 节点。* D: S" @- D) D- V
$ cat ceph.conf
7 E% `' _  r1 N: o[global]- q/ b1 m% K+ H1 L) P! N
fsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26$ m6 V1 g1 ]$ j# e, }+ E
mon_initial_members = admin0 d* p0 F+ V# }" A" c' U/ F% W- L: r
mon_host = 10.222.77.213
8 ]) s  ^0 N. M$ m* [1 I6 x* uauth_cluster_required = cephx- f/ `  |% y; u& n
auth_service_required = cephx; R4 T* S( K# o$ J* I$ k
auth_client_required = cephx1 v6 q6 c0 n9 U- K
osd pool default size = 2  #增加默认副本数为 2
. i3 n, A! s( V5 j然后,我们需要通过 ceph-deploy 在各个节点安装 ceph。
. j6 `" C% v4 E* Z; v0 C$ ceph-deploy install admin node0 node1
" v7 V: b/ N7 ~3 @' u[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf( M+ {! I, d8 h  H# ]$ {3 S
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy install admin node0 node1: q, Q! o8 ?! _: Z
[ceph_deploy.cli][INFO  ] ceph-deploy options:4 n& S: y: u! C8 {( x
[ceph_deploy.cli][INFO  ]  verbose                       : False' l' N0 _. }5 [. \, H6 I
[ceph_deploy.cli][INFO  ]  testing                       : None: P6 ?! l, ?- `1 [# J( A1 ~/ |: O
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xde1c68>! g8 u7 f. k! S6 {
[ceph_deploy.cli][INFO  ]  cluster                       : ceph! E& n& X% D# N. k" t  E
[ceph_deploy.cli][INFO  ]  dev_commit                    : None) ~( S6 Z  W( C1 Z$ r8 I
[ceph_deploy.cli][INFO  ]  install_mds                   : False6 m- f4 n: @' m! I7 s/ y& W
[ceph_deploy.cli][INFO  ]  stable                        : None  [9 f1 _$ @1 ?* ~% x9 i
[ceph_deploy.cli][INFO  ]  default_release               : False( P" M( L* d+ Z% g
[ceph_deploy.cli][INFO  ]  username                      : None
4 x% X4 c' p' i( |, q% k3 r' @( f, `[ceph_deploy.cli][INFO  ]  adjust_repos                  : True
8 q; f5 F/ t& X8 m; Z- l- R1 E[ceph_deploy.cli][INFO  ]  func                          : <function install at 0xd5b140>! E1 U5 N! ~& W0 U& e, e
[ceph_deploy.cli][INFO  ]  install_mgr                   : False
4 {1 W- N6 @( C/ a+ C2 V[ceph_deploy.cli][INFO  ]  install_all                   : False
' S5 E9 _( w- i% X1 f[ceph_deploy.cli][INFO  ]  repo                          : False4 O: P4 u) [" \
[ceph_deploy.cli][INFO  ]  host                          : ['admin', 'node0', 'node1']$ {8 Z/ H  d; Z) ?$ a% u5 P
[ceph_deploy.cli][INFO  ]  install_rgw                   : False  L% Y5 K- [+ `- O; b# k2 G; Y+ z
[ceph_deploy.cli][INFO  ]  install_tests                 : False
# w! w4 o% j$ `5 {6 e9 g  h" r3 b4 h[ceph_deploy.cli][INFO  ]  repo_url                      : None
1 @. s) s, v. k1 v3 @[ceph_deploy.cli][INFO  ]  ceph_conf                     : None" {$ B9 a, o3 \8 ^( g/ Y' B
[ceph_deploy.cli][INFO  ]  install_osd                   : False
5 e7 R% M; q* M" E! `6 \[ceph_deploy.cli][INFO  ]  version_kind                  : stable
  f# `4 C) s/ H; w, q[ceph_deploy.cli][INFO  ]  install_common                : False
( P# N3 Q% i, z[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
6 g5 R& [) ^" o; ~+ E% T[ceph_deploy.cli][INFO  ]  quiet                         : False& k* u" {0 b# \. q
[ceph_deploy.cli][INFO  ]  dev                           : master
2 U% Z! q/ H4 J' f) J[ceph_deploy.cli][INFO  ]  nogpgcheck                    : False% [, T  l) [3 @0 T$ |. Y* P
[ceph_deploy.cli][INFO  ]  local_mirror                  : None
: P5 m. t$ m& G* ]# m[ceph_deploy.cli][INFO  ]  release                       : None
4 Y8 u& n+ R6 w6 w' L; Q[ceph_deploy.cli][INFO  ]  install_mon                   : False
: n& p" [7 K& H" g" I) v[ceph_deploy.cli][INFO  ]  gpg_url                       : None( j0 [( W$ r* S* r( [6 n* `# F7 F
[ceph_deploy.install][DEBUG ] Installing stable version jewel on cluster ceph hosts admin node0 node1
8 b  H4 I7 A+ N5 d3 p* z  o5 w) Z[ceph_deploy.install][DEBUG ] Detecting platform for host admin .../ t" V6 T& l7 g. Z
...
6 e+ z8 R% c0 k! Z: u此过程需要等待一段时间,因为 ceph-deploy 会 SSH 登录到各 node 上去,依次执行安装 ceph 依赖的组件包。3 f8 c+ X* Z  }# S% L% \* t; ?
漫长的等待安装完毕之后,接下来需要初始化 monitor 节点并收集所有密钥。
' }- i8 s4 A" F$ ceph-deploy mon create-initial
6 H8 T$ c0 v) S4 T+ @...1 o9 _! z% l% S; P" q
ceph_deploy.mon][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite
; z3 Z6 R8 R" i& k[ceph_deploy][ERROR ] GenericError: Failed to create 1 monitors0 \" c3 z, {; z! U. e6 B
...6 C0 C! |0 M% _4 Y
不过很遗憾,执行过程中报错了。查看原因应该是已经存在了 /etc/ceph/ceph.conf 配置文件了,解决方案就是加上 --overwrite-conf 参数,覆盖已存在的配置。
' r7 W$ p0 m/ a) m7 _3 d$ ceph-deploy --overwrite-conf mon create-initial
6 [: [! P) p5 Z+ z. G[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf) `, d/ r6 h$ u0 r9 p% A
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy --overwrite-conf mon create-initial( V1 Q6 B& c+ {! Y
[ceph_deploy.cli][INFO  ] ceph-deploy options:, ~* w; e7 V, P" s( _1 S
[ceph_deploy.cli][INFO  ]  username                      : None$ }( d) H' R6 |( J
[ceph_deploy.cli][INFO  ]  verbose                       : False. e# i1 x7 m2 j0 A, ?
[ceph_deploy.cli][INFO  ]  overwrite_conf                : True1 r! }) L3 N  n+ j% O
[ceph_deploy.cli][INFO  ]  subcommand                    : create-initial
% o3 T" s, x) g! Q[ceph_deploy.cli][INFO  ]  quiet                         : False
" t7 a/ Z1 X, j8 N( L. f. B[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x1d9e758>
# l0 i+ i8 Z: `% l: C[ceph_deploy.cli][INFO  ]  cluster                       : ceph
9 X  H) B0 @# H' N! A) n: t[ceph_deploy.cli][INFO  ]  func                          : <function mon at 0x1d8ea28>
; F1 E" L) j2 `: e' V8 }[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
+ e' a8 `" [& d% I# g7 t6 {[ceph_deploy.cli][INFO  ]  default_release               : False3 [, V* n7 t4 [9 x
[ceph_deploy.cli][INFO  ]  keyrings                      : None# U/ ?7 d- r/ ~" B3 B
[ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts admin1 x0 o% f! K0 |1 Z- f
[ceph_deploy.mon][DEBUG ] detecting platform for host admin ...
' \( g# M6 Z% r...6 p4 B! F0 x3 R# \5 m) p, P
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.admin.asok mon_status7 O( j- A9 A1 a& w8 X! {- f
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.admin1 ^8 M3 t! ?6 r1 S
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-mds
3 h- E' D' ?4 j[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-mgr
* U' o% C0 M) _" |$ L' E[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get-or-create client.bootstrap-mgr mon allow profile bootstrap-mgr7 Z6 n" Y/ ]4 [, y
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-osd) z5 t, |/ }# U! X3 S3 S
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-rgw- X$ N* ?/ E5 I! Z5 F
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.client.admin.keyring
9 F& V, M& S3 r5 \[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mds.keyring* T) y7 N9 o  ^+ z
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mgr.keyring
- a# B& M% F1 ?% d: |[ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.mon.keyring' already exists
# Z7 h1 F, P7 j9 X! E+ c4 Q[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-osd.keyring
% ^+ N) @% V, u7 v" |[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-rgw.keyring
7 s- V) [" r. {* k4 Q( h; z[ceph_deploy.gatherkeys][INFO  ] Destroy temp directory /tmp/tmpLv4mug' l! C2 p; ^- Q( f! V
执行完毕后,会在当前目录下生成一系列的密钥环,应该是各组件之间访问所需要的认证信息吧。3 s# Z' v' U6 Q# c8 J
$ ll ~/ceph-cluster( q4 L8 g, c4 u# b  a/ f3 t$ e
-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-mds.keyring* i. E; p' X3 j3 P5 b' G+ ~4 t; }
-rw-------. 1 cephd cephd     71 12月  7 15:13 ceph.bootstrap-mgr.keyring
6 |. c3 t( e8 R# \9 m-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-osd.keyring
3 i+ [+ @( N# I5 D; m-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-rgw.keyring
4 \9 a) N0 ]6 h& Q8 x+ z6 `8 a-rw-------. 1 cephd cephd    129 12月  7 15:13 ceph.client.admin.keyring
! @& V/ A2 [" ?' ^7 M- n0 ?-rw-rw-r--. 1 cephd cephd    222 12月  7 14:47 ceph.conf* K0 T/ x' S# K  Y+ Y) f# w
-rw-rw-r--. 1 cephd cephd 120207 12月  7 15:13 ceph-deploy-ceph.log% C8 F3 `- |2 x# v  v0 e. o
-rw-------. 1 cephd cephd     73 12月  7 14:46 ceph.mon.keyring
0 y1 N# ]7 Z; ~- A到此,ceph monitor 已经成功启动了。接下来需要创建 OSD 了,OSD 是最终数据存储的地方,这里我们准备了两个 OSD 节点,分别为 osd.0 和 osd.1。官方建议为 OSD 及其日志使用独立硬盘或分区作为存储空间,不过本机虚拟机上不具备条件,但是我们可以在虚拟机本地磁盘上创建目录,来作为 OSD 的存储空间。4 _3 _# @1 c9 L
# ceph-deploy (admin-node) 上执行
" p: C6 ]8 q3 u/ e' p% N/ Z& r
$ ssh node0
1 h# q6 ]! B' k/ i$ sudo mkdir /var/local/osd0
/ }0 J0 m0 g9 c( n0 x$ X4 S& A. ?$ sudo chown -R ceph:ceph /var/local/osd0
% x- f' y) E8 t! v$ exit& c2 Y' h$ e- p3 l

6 B3 Y0 f% p, N) l" n: V1 t1 s+ P$ ssh node1
$ x( S& n+ @% J+ J4 O5 w$ sudo mkdir /var/local/osd1/ T2 L7 A& c6 e/ i
$ sudo chown -R ceph:ceph /var/local/osd1
$ S. ^0 _3 Z, O; n0 U  x$ exit+ Y4 j! L5 }7 X3 }! k% [$ m
注意:这里执行了 chown -R ceph:ceph 操作,将 osd0 和 osd1 目录的权限赋予 ceph:ceph,否则,接下来执行 ceph-deploy osd activate ... 时会报权限错误。
4 d- x4 D3 o! n3 J接下来,我们需要 ceph-deploy 节点执行 prepare OSD 操作,目的是分别在各个 OSD 节点上创建一些后边激活 OSD 需要的信息。   b) Z  S, `$ Q) [# l0 e
$ ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1& @- Q$ y0 z( N. ~
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf( h- {" ]2 i. O- S) v7 ~
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1. V4 Q& ~+ @& r: r& \, l0 H
[ceph_deploy.cli][INFO  ] ceph-deploy options:
- U3 o: ^, _* P2 ^' r: N[ceph_deploy.cli][INFO  ]  username                      : None& {0 a$ T; j9 j! e) H3 Z
[ceph_deploy.cli][INFO  ]  block_db                      : None! x5 n( Y$ R, p! a
[ceph_deploy.cli][INFO  ]  disk                          : [('node0', '/var/local/osd0', None), ('node1', '/var/local/osd1', None)]2 }) o( i5 u* v$ L. j: j) C' L* G
[ceph_deploy.cli][INFO  ]  dmcrypt                       : False
3 s" V; V- ?+ T: I  W[ceph_deploy.cli][INFO  ]  verbose                       : False( a, T7 v' L# [3 B
[ceph_deploy.cli][INFO  ]  bluestore                     : None
$ ?* y) [( X8 `[ceph_deploy.cli][INFO  ]  block_wal                     : None0 p3 n. o; M  ^$ X* a
[ceph_deploy.cli][INFO  ]  overwrite_conf                : True
8 ~3 k9 I- C7 C$ k! L[ceph_deploy.cli][INFO  ]  subcommand                    : prepare
6 E: ?7 X( i) z% e6 Q. B- Z0 ^[ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               : /etc/ceph/dmcrypt-keys
0 d8 _2 O( t  a+ ^[ceph_deploy.cli][INFO  ]  quiet                         : False% r& q; l  q$ ^. H4 L& A! ]
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x117d950>
* q' z9 D# C; _; ]! Q[ceph_deploy.cli][INFO  ]  cluster                       : ceph
7 I9 G0 Y% X8 ~2 O[ceph_deploy.cli][INFO  ]  fs_type                       : xfs9 L- L. B# z8 _7 @8 ^6 ~9 l; \0 @
[ceph_deploy.cli][INFO  ]  filestore                     : None3 S- b4 e3 M2 p
[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x116a320>. l0 S( i& u8 s: h* B
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
( J5 w! o; m$ \; Q9 i[ceph_deploy.cli][INFO  ]  default_release               : False4 E8 s) \  N- ?2 H& d' a, B; S
[ceph_deploy.cli][INFO  ]  zap_disk                      : False
! W! I! c: W% ]# T! w# [) P2 p2 G[ceph_deploy.osd][DEBUG ] Preparing cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:, w, W" q2 h: [) k; c
[node0][DEBUG ] connection detected need for sudo: x) @2 R% @" x# `
[node0][DEBUG ] connected to host: node0 ! S9 Y: \- I# _7 c
[node0][DEBUG ] detect platform information from remote host7 {  V& L$ n: ~9 d7 ^6 v1 |/ u
[node0][DEBUG ] detect machine type
7 J% \2 [4 p2 B2 J, Q[node0][DEBUG ] find the location of an executable
9 I4 h! \  i% ][ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
, l! W8 T) m8 i, V, A8 g[ceph_deploy.osd][DEBUG ] Deploying osd to node06 e; y/ \0 k! f* x3 m9 N
...* W0 d) b6 a0 f- v
[node0][INFO  ] checking OSD status...
2 g" J3 Z% K8 L8 W) I/ C! Q: X[node0][DEBUG ] find the location of an executable
4 z1 n7 j' l, F/ x& J[node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json7 K. I& f- [1 O5 l
[ceph_deploy.osd][DEBUG ] Host node0 is now ready for osd use." l. d) L+ _  y9 ^& W. C
[node1][DEBUG ] connection detected need for sudo# V  c3 |; X9 Q, ]
[node1][DEBUG ] connected to host: node1 ( j, a/ {; a1 Y) v' {- o8 L
[node1][DEBUG ] detect platform information from remote host# B- k1 ]1 h3 L- \; L2 u
[node1][DEBUG ] detect machine type( m- h$ X! d+ N: M- x3 b
[node1][DEBUG ] find the location of an executable- h: [+ v$ O- ?" t2 o6 G4 o
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
- j1 _- X( n9 w- O1 `6 \[ceph_deploy.osd][DEBUG ] Deploying osd to node1: k6 C( M1 b( a4 F; Q+ Y* \& E% w
...4 n. ^# A. P' s8 b3 ^
[node1][INFO  ] checking OSD status...
2 N; ^" W9 h7 U( `0 G[node1][DEBUG ] find the location of an executable
6 T- ?8 z2 Q8 M6 ^6 _; x: Z' X[node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json' Q% m" ]9 k9 J/ L4 ^$ p" N: z( ]
[ceph_deploy.osd][DEBUG ] Host node1 is now ready for osd use.
' j1 [+ X3 R4 ROK 接下来,我们需要激活 activate OSD。# P& A+ l" u# f
$ ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd1& q0 ?% ^" g8 i; D) W3 G" ^
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf. k! f, @- b3 Y5 V' V- {& `& s. R
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd1/ a4 b+ g9 N2 h1 q! \3 {" f
[ceph_deploy.cli][INFO  ] ceph-deploy options:
  P! M1 f0 h# U( x+ |- Y# M+ h0 d[ceph_deploy.cli][INFO  ]  username                      : None* j& [7 M  S  h0 A( Y/ s
[ceph_deploy.cli][INFO  ]  verbose                       : False+ w! n, L, x4 S6 i" H* R; x, B
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
, Q* y( M3 Y; ]* [4 S3 q4 z[ceph_deploy.cli][INFO  ]  subcommand                    : activate
0 {( Y6 M$ i8 [& t3 x' v- y: o" K[ceph_deploy.cli][INFO  ]  quiet                         : False) c( i( O3 C# X* F
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x2045950>8 L$ y% c: y/ {% H
[ceph_deploy.cli][INFO  ]  cluster                       : ceph2 C8 K/ `% \- |+ G# y
[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x2032320>; U8 B! n+ F! a
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
4 Q0 S* W/ R  I& q/ Z[ceph_deploy.cli][INFO  ]  default_release               : False3 j6 d6 R: {' W& s6 T) x7 d. i4 w- G7 U
[ceph_deploy.cli][INFO  ]  disk                          : [('node0', '/var/local/osd0', None), ('node1', '/var/local/osd1', None)]
* c& b+ u/ d$ J! g% Z+ [+ d/ Q- t[ceph_deploy.osd][DEBUG ] Activating cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:
" L; m0 W5 c4 B[node0][DEBUG ] connection detected need for sudo4 l, _$ G# n4 e. q4 T
[node0][DEBUG ] connected to host: node0 4 U* i4 M9 j( v8 d0 U* X
[node0][DEBUG ] detect platform information from remote host
" f/ j7 v" F9 Z7 ?5 J[node0][DEBUG ] detect machine type
' F2 A$ [4 d2 |$ J4 b[node0][DEBUG ] find the location of an executable
6 `7 |" U$ t& O% X, @: y[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
* o! I: F5 [( e8 m7 a[ceph_deploy.osd][DEBUG ] activating host node0 disk /var/local/osd0
; [( x# S7 t+ ^' N[ceph_deploy.osd][DEBUG ] will use init type: systemd
& Q1 E2 G6 M. O; j2 s" C/ G4 Y...
/ z2 U% V" _9 V6 w1 S  K, v[node0][INFO  ] checking OSD status...
$ ?9 d& ]7 o$ y5 `[node0][DEBUG ] find the location of an executable1 U# ~# a5 o3 T- y4 I9 K2 c0 }1 V
[node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
7 G" I* s4 S' k( P$ u- `[node0][INFO  ] Running command: sudo systemctl enable ceph.target
+ T0 Z+ l' I8 {; K) T1 w[node1][DEBUG ] connection detected need for sudo) A' j( _; D$ k& S0 s1 g  `+ v2 I. I
[node1][DEBUG ] connected to host: node1 4 t6 ]' W/ `. T4 A
[node1][DEBUG ] detect platform information from remote host% ^0 A% a+ {. [( {2 m
[node1][DEBUG ] detect machine type
) Q/ s& V4 h0 V0 d* v[node1][DEBUG ] find the location of an executable% @0 U+ o' v8 Y2 s  h
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
' Z, X4 _' w: f3 J% ~: L# w[ceph_deploy.osd][DEBUG ] activating host node1 disk /var/local/osd1
* x1 i$ Q! s+ @9 O9 o[ceph_deploy.osd][DEBUG ] will use init type: systemd
; v8 h, \$ u# C( h4 ~, A6 I; N...
! V% @+ l; q' r2 c# h4 |[node1][INFO  ] checking OSD status...3 U7 J4 {0 W( s/ j0 x
[node1][DEBUG ] find the location of an executable. h3 j- Z& @6 C- z' _3 _3 P
[node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json% U1 P6 \3 Z# Y3 {( |
[node1][INFO  ] Running command: sudo systemctl enable ceph.target: j2 G" A0 _! j! i$ W/ e
看日志,激活也没有问题,最后一步,通过 ceph-deploy admin 将配置文件和 admin 密钥同步到各个节点,以便在各个 Node 上使用 ceph 命令时,无需指定 monitor 地址和 ceph.client.admin.keyring 密钥。
) U8 `* Y, |! A. D) C$ ceph-deploy admin admin node0 node1
4 A( e6 W9 D5 V" i[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
: \* |% M0 S7 v" i* G" j; s! C! ?[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy admin admin node0 node1; w1 p  l/ _2 u- d3 B# S
[ceph_deploy.cli][INFO  ] ceph-deploy options:
4 I) ^. v% i6 F  F3 ?[ceph_deploy.cli][INFO  ]  username                      : None& r  i% X0 @9 k( y; i3 P
[ceph_deploy.cli][INFO  ]  verbose                       : False
8 X- {+ z0 J9 j. R: U  R" f[ceph_deploy.cli][INFO  ]  overwrite_conf                : False. U6 L' Y# y, t
[ceph_deploy.cli][INFO  ]  quiet                         : False) D6 X! K: S5 s9 E8 y: s$ a
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x15a93b0>+ l$ x6 {; c' \) p
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
) I  v" l: K0 i6 c[ceph_deploy.cli][INFO  ]  client                        : ['admin', 'node0', 'node1']- p7 c. a! u  D/ e4 @2 M% o# M
[ceph_deploy.cli][INFO  ]  func                          : <function admin at 0x1500cf8>7 d- x4 {: G/ [: R
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
4 q2 W% b! ~) \4 I5 }[ceph_deploy.cli][INFO  ]  default_release               : False' |9 D+ r( ^' Q) H; M) D
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to admin) h, S+ r- k+ v
[admin][DEBUG ] connection detected need for sudo/ p8 S6 f& o; H" c% C0 t
[admin][DEBUG ] connected to host: admin
. K0 t# u/ C5 c7 L& Y/ F[admin][DEBUG ] detect platform information from remote host# V- E: {4 ^& ~0 y- F* N: Q
[admin][DEBUG ] detect machine type
3 ]; v, K3 S1 ?% ^2 p$ ][admin][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf7 n; q0 F! ^: g/ T; @, o
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node0! Q; \" Y' t9 P/ c4 R/ y
[node0][DEBUG ] connection detected need for sudo
# T) h9 K3 O: x4 W( ~% x1 i[node0][DEBUG ] connected to host: node0
2 [: y$ G% R+ p$ L/ n7 R4 z0 L[node0][DEBUG ] detect platform information from remote host
, [, C; H' b0 _. t! F2 B+ I[node0][DEBUG ] detect machine type9 |5 s& ?2 v2 d0 ~2 X
[node0][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
, w0 r0 t; ^& |# x! {' ^0 J2 z[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node1
) Z2 b, q* P+ g/ ]) ?/ [  \2 ?[node1][DEBUG ] connection detected need for sudo
/ F9 R( ~, n; r3 [3 ^1 u[node1][DEBUG ] connected to host: node1 9 h' ?+ Y. J, G5 e; ^
[node1][DEBUG ] detect platform information from remote host9 \+ `& X2 N# U  \( ?! P5 d  I
[node1][DEBUG ] detect machine type/ o. K, @/ j: `  n3 b! V& V
[node1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf) E+ ?( l+ e5 z  j1 e
同时为了确保对 ceph.client.admin.keyring 有正确的操作权限,所以还需要增加权限设置。
- w( \1 E; q% `  `$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring- O% g( P- M0 L
至此,Ceph 存储集群已经搭建完毕了,我们可以查看那一下集群是否启动成功!9 I3 r) y6 m' k% w" z  U
# 查看集群状态/ B8 T" H1 j6 L! n% O
$ ceph -s
! W7 \0 s) p7 A* b; |4 i) Gcluster 363c3cf4-dba4-4f13-8ec5-ed93416f4e268 V. ]! r- q; @0 P* T" E
     health HEALTH_OK6 {* s: e4 }+ \9 _
     monmap e1: 1 mons at {admin=10.222.77.213:6789/0}4 a7 C: W( p' z% k' z2 t
            election epoch 6, quorum 0 admin
6 h0 @' Z8 f: k# `     osdmap e15: 2 osds: 2 up, 2 in1 E  w1 a& \1 n0 \' Z7 G8 D& m+ L
            flags sortbitwise,require_jewel_osds
2 b/ w/ @9 y, {$ c1 c& v2 G      pgmap v9276: 64 pgs, 1 pools, 863 MB data, 226 objects
1 f  D0 z8 I6 V# u            33440 MB used, 33574 MB / 67015 MB avail
& P4 y$ T: P$ [' y8 C' Q  F                  64 active+clean
& Y3 B$ x" q4 ~+ r& }  Z
# z' q7 }4 w( W% W! e# 或者查看集群健康状况
5 |4 ]+ w" v3 y5 I$ ceph health3 J, `% s+ x/ e+ F" x! S9 r' ~* |& @
HEALTH_OK5 t! r* f0 @3 L" c

5 y- F8 j. l7 C: W- g* M) X6 s# 查看集群 OSD 信息
9 y! c2 F3 ^4 r$ ceph osd tree
' ^% e( N% Y5 r9 N- y1 X& TID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY / s  E8 [# S: y- {8 u
-1 0.06400 root default                                    
: ?) F+ i" o" J9 X! \  h: K-2 0.03200     host node0                                   
% i; @# [2 N8 h7 s8 p% s7 W 0 0.03200         osd.0       up  1.00000          1.00000
) P* N2 f" g! I, E-3 0.03200     host node1                                   
1 t; K8 I: J+ L: G6 {' U 1 0.03200         osd.1       up  1.00000          1.00000 9 z/ I- a$ z  H9 N* }* {
好了,通过参考官方文档中的 Ceph 安装和集群搭建说明,一步一步的完成整个存储集群的搭建,文档写的很详细,非常容易上手操作。本次就先记录到这,下一篇我们继续研究学习 Ceph 存储体系中的对象存储、块设备和文件系统。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:01 , Processed in 0.023434 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表