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

CentOS7环境下ceph安装部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

安装环境为VMWare Workstation虚拟机

1.准备5台虚拟机

ceph-deploy:作为管理节点,后续的ceph-deploy工具都在该节点上进行操作。
0 F( T, K$ U/ cceph-node1、ceph-node2 、ceph-node3 :即做mon节点又做osd节点,都有3块磁盘,前2块磁盘部署2个osd,第3块磁盘建立2个相等大小分区作为2个osd盘的日志分区。这样,集群共有6个osd进程,3个monitor进程。 & x  R4 i- u' Y6 G# `3 S; M' U9 F+ Z
ceph-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
: Z, r' q/ M% M: k: i192.168.128.111 ceph-node1 0 U; j1 B0 @4 Y
192.168.128.112 ceph-node2 * _8 _, y2 m, H- u
192.168.128.113 ceph-node3 / a8 n% I! C) o" x& u+ M
192.168.128.114 ceph-client

4.关闭firewalld

systemctl stop firewalld
% ~7 {. x, t4 a7 A6 Ksystemctl disable firewalld

5.关闭Selinux

vi /etc/sysconfig/selinux 6 w$ b% \/ w, a+ O" Q: O8 V6 o
SELINUX=disabled

6.安装ntp

yum install ntp ntpdate ntp-doc

systemctl enable ntpd
$ u7 t! V1 H+ Lsystemctl start ntpd

将系统时区改为上海时间
5 `  B1 c6 M- I$ f0 Cln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

查看时间是否准确 ( u% K* v8 i  B- p4 h/ H3 P3 |3 I% M; L
date

/etc/ntp.conf # deploy节点 - O& Y+ t5 K+ r
1 p7 C( X0 m) l0 @
restrict 192.168.128.0 mask 255.255.255.0 nomodify notrap
5 N9 c/ g7 t3 j' w7 z5 `server 127.127.1.0 iburst 5 `/ t6 L6 a/ a
fudge 127.127.1.0 stratum 10 1 g+ x& L3 Z6 |/ N5 j

/etc/ntp.conf # ceph其他节点 + x6 h: U3 l6 j$ c
+ S/ y+ w0 H1 }4 ^' |( A
server ceph-deploy iburst . c4 ~- g6 t/ z& k

systemctl restart ntpd

其他节点查看 , m5 F" A% K. H1 n
watch ntpq -p $ B! {* l# f6 n0 L6 N1 @

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

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

cd /etc/yum.repos.d $ a, V1 s: C6 t; S5 w. K* ?
vi ceph.repo

[ceph]
% O8 R- U3 [6 vname=Ceph packages$ d# Z& O8 G! b  ~
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/" j6 M3 T% `9 O# w9 v
enabled=1" e! W) B3 C8 N! |
gpgcheck=18 @- q% {/ B7 W
priority=2type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc" j% x5 P/ g# _% c% n9 T' |9 S
[ceph-noarch]
1 `$ P9 B- N: j8 {9 {: C  X$ D7 Rbaseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/" `3 M$ S' h6 o: F$ N3 O" d
enabled=1
* z( Q8 ?/ S* \7 ]gpgcheck=1/ u: F% t/ C0 `
priority=2type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc6 s: p" R/ [% a
/ m$ @. j3 K  E# ]; E

vi epel.repo

[epel]9 m, d# d1 p+ w3 P! s. `# k, o
name=Extra Packages for Enterprise Linux 7 - $basearch
0 U, |: \/ V, n$ _1 ~baseurl=http://mirrors.aliyun.com/epel/7/$basearch
; ^% z- ^( T$ x0 {  ]4 H        http://mirrors.aliyuncs.com/epel/7/$basearch
6 x4 L- }; K8 M' l. Q+ G#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch7 t9 K0 n- Z+ s, _& ?* a  w* S
failovermethod=priority' B+ `( I; K# A+ G
enabled=1$ Q  t' {+ N# ^' F# O" z
gpgcheck=0: f) I/ o( E7 a
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

: ?2 I; b# d# @8 c" X


4 ~+ y# U3 R5 q: H

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

yum install -y yum-utils snappy leveldb gdisk python-argparse gperftools-libs
8 M& w  z4 S  `+ Q* y) k三、安装ceph-deploy工具

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

yum install -y ceph-deploy
# d* I7 `1 Q+ X7 a

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

mkdir -p /data/ceph/deploy
: X0 }& R. w& j4 Q7 \  X6 @% B2 ~

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

ssh-keygen
8 A8 ?+ k1 d5 }2 D" }8 v" J# yssh-copy-id ceph-node1
, O" j( b* Q/ K3 d# hssh-copy-id ceph-node2 3 k& w9 \. V% ]  d4 H+ n! }
ssh-copy-id ceph-node3
; U1 v1 h- Y1 e# [ssh-copy-id ceph-client

四、安装ceph集群

1.ceph软件包安装

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

cd /data/ceph/deploy  Z4 H: n) A7 c7 E: [! _  Y; }4 w
* E# x5 R6 Z, g9 I6 [1 h: O
ceph-deploy install --no-adjust-repos ceph-node1 ceph-node2 ceph-node3
1 M3 b$ u" |+ I3 H4 X6 J4 N5 n7 p5 N4 B0 q; E" R0 d

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

ceph-deploy new  ceph-node1 ceph-node2 ceph-node3
/ Q6 A1 I/ Z* C; E/ T( m  Y7 C) R
4 a! Z0 j0 O3 o$ g

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

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

ceph-deploy --cluster {cluster-name} new {host [host], ...}
# \( a/ T& f7 b; j

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
& `+ n- w7 S# H3 x6 G# L! sosd_pool_default_size = 2
9 V3 Z3 ^0 e7 q/ Dosd_pool_default_pg_num = 512' |( l6 c& B) F3 ?% u( }, X/ R
osd_pool_default_pgp_num = 512. _1 J; j+ i5 b1 L: m0 L6 d- {7 @
rbd_default_features = 3) Q* f. q% h1 z! v% [

1 }  K+ F. t, J6 a2 e) N% H) ]  @

4.添加mons

我们这里创建三个Monitor

ceph-deploy mon create  ceph-node1 ceph-node2 ceph-node3/ t% R1 Q0 c6 x
! X# i4 P- ?  b! {' B

上面命令效果如下 ! O0 n# i$ X7 ^4 v8 A
a.write cluster configuration to /etc/ceph/{cluster}.conf
3 [8 c% D5 n2 p0 ^0 O% {- S. D- f, @b.生成/var/lib/ceph/mon/ceph-node1/keyring
! h$ ^- ~3 P; a5 f9 n2 Xc.systemctl enable ceph-mon@ceph-node1
$ F# X1 x$ s, {  x; H& X+ \6 Td.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# d( S9 a% a# V% ^* W

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

ceph-deploy forgetkeys
3 k2 g3 B. O$ s. ]& ^1 G; J' V0 c5 K

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/sdd6 Z2 w5 C; u7 R4 y' Q

可以prepare多个osd
* a! g! l8 _- h: L# Yceph-node1:sdb:/dev/sdd 意思是在node1上创建一个osd,使用磁盘sdb作为数据盘,osd journal分区从sdd磁盘上划分
# w6 h6 {$ T; l# R每个节点上2个osd磁盘sd{b,c},使用同一个日志盘/dev/sdd,prepare过程中ceph会自动在/dev/sdd上创建2个日志分区供2个osd使用,日志分区的大小由上步骤osd_journal_size = 10000(10G)指定,你应当修改这个值 : [/ t7 z2 L' r
prepare 命令只准备 OSD。在大多数操作系统中,硬盘分区创建后,不用 activate 命令也会自动执行 activate 阶段(通过 Ceph 的 udev 规则)

激活osd


  l& C. w8 Q! C/ t9 s/ wceph-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/sdd24 V. x& d, r7 q% ^% Q+ ]: a  _7 o
5 h( I+ q+ s8 _. B; C5 B! r: x

! X" l/ B6 x- s; v$ z( F  X. N  O

sdd1,sdd2 为ceph自动创建的2个日志分区 " K5 y& j; C: _+ A  S9 J
activate 命令会让 OSD 进入 up 且 in 状态,此命令所用路径和 prepare 相同。在一个节点运行多个OSD 守护进程、且多个 OSD 守护进程共享一个日志分区时,你应该考虑整个节点的最小 CRUSH 故障域,因为如果这个 SSD 坏了,所有用其做日志的 OSD 守护进程也会失效


4 T5 ^1 `, q- X

7.验证安装成功

在mon节点执行 ceph -s[root@ceph-node1 ~]# ceph -s
: V+ O! B  v4 i- F& I2 N" N    cluster 2ba8f88a-1513-445b-93d0-4ec7717c6777" U9 K2 u, f' s% {* i
     health HEALTH_WARN+ k) P. g/ f% ]. W  }
            clock skew detected on mon.ceph-node2, mon.ceph-node3- U3 P8 t3 o6 K8 X
            too few PGs per OSD (21 < min 30)% t4 m& m( t4 B  P1 ^3 K! n/ r
            Monitor clock skew detected
0 r" L5 c9 i. f  l7 l- g$ X     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}+ i0 W0 n7 w  a; K4 b8 |
            election epoch 6, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3
4 A6 V8 G/ {" w: X+ b4 X2 F0 W     osdmap e30: 6 osds: 6 up, 6 in
; t( O8 I$ T) t: t: p/ K: U% F            flags sortbitwise,require_jewel_osds
/ a  k% C1 ~1 G9 a3 X      pgmap v63: 64 pgs, 1 pools, 0 bytes data, 0 objects% w. {$ V) Y, G, a; ?
            201 MB used, 299 GB / 299 GB avail2 _2 @. |6 X+ Y0 F9 D
                  64 active+clean
/ V' b" m# c$ I) K5 ]) i显示 HEALTH_WARN too few PGs per OSD (21 < min 30)

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

[root@ceph-node1 ~]# ceph osd pool ls detail/ W* J2 j, j% ^4 C4 R& D8 @

% \" i2 |' D1 s7 Apool 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% Y: E) v9 O( o; e
4 L2 V. D, O' D: J' t0 O: O9 y


# t0 }- `0 E1 ?2 |( R! A

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

ceph osd pool create cinder-volumes 128# E* H7 v% @. }/ Z9 K  `% f
$ d% s/ q% e' U% N+ t  S
ceph osd pool set cinder-volumes size 2
5 w% G3 P7 X3 s: \ceph osd pool create nova-vms 128
' B8 @. o5 Q3 d. |) C' `9 @2 p& t3 O! P! s* K. y
ceph osd pool set nova-vms size 2
# s* u$ t2 `- c# W1 s. Q5 z2 y9 qceph osd pool create glance-images 64
3 S* \7 L( m/ B7 ]$ S8 yceph osd pool set glance-images size 2/ B  L  \- q7 c: c/ x+ P* `4 ?
ceph osd pool create cinder-backups 64
; e* C& r6 U: j5 lceph osd pool set cinder-backups size 2) V! X' \  w5 Y+ l7 i# J0 N5 n

. f4 K" V2 g0 P% j  O6 O+ Z

又显示 HEALTH_WARN Monitor clock skew detected

[root@ceph-node1 ~]# ceph -s: |# ^9 Y3 L$ R
    cluster 2ba8f88a-1513-445b-93d0-4ec7717c6777
' p' e0 h) J. N     health HEALTH_WARN
9 w( V9 E/ f! U4 j& E            clock skew detected on mon.ceph-node2, mon.ceph-node3
) G; h% |: n$ i" h# H3 J% D            Monitor clock skew detected 3 ]" _5 }; J7 I) g8 @
     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& K8 q  M6 Z6 J" H- g9 L            election epoch 6, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node38 t# ^, \7 Y) D& ~% n
     osdmap e42: 6 osds: 6 up, 6 in, K' `3 G/ S: ?! v
            flags sortbitwise,require_jewel_osds0 C9 S& r1 N8 V: {) Y
      pgmap v123: 448 pgs, 5 pools, 0 bytes data, 0 objects: M/ N; R- x! x% _9 Z2 w
            209 MB used, 299 GB / 299 GB avail
# d/ g) A" m" [' c6 h  ^, \                 448 active+clean% J8 R& A4 z& f( X  @
8 j) M! Q. v' }% M# i

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


. Z$ E% }2 c% ~  T3 d: f8 F

[root@ceph-node1 ~]# systemctl status ntpd0 L, s: b" J& J. U: P

" g8 M' v1 R& q' p● ntpd.service - Network Time Service   . j8 e9 L  M( V, V1 g' {
          Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)   
" \. e, ~5 z2 t2 O3 h          Active: inactive (dead)
( f7 i, z( V# W- p! Y$ n[root@ceph-node1 ~]# systemctl start ntpd( t- I2 p) {8 c
$ _) ^6 W+ D9 e1 W7 T" {% ^$ z9 l- v/ G

再次查看集群正常了

[root@ceph-node1 ~]# ceph -s    ) O' I$ j& U! a$ x( a. O( B/ n% j! o
            cluster 2ba8f88a-1513-445b-93d0-4ec7717c6777     
6 A/ J7 F, N" G* B) m% `             health HEALTH_OK     
0 b2 _+ i9 y3 J5 U7 H2 d( C  p              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}           
$ }: Z: _* y- V* J% {  X                            election epoch 10, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3     3 P% d. u1 S1 |- H7 Z8 k. f+ P
             osdmap e42: 6 osds: 6 up, 6 in            6 v- r8 i3 e, h# P+ m" O0 C( l0 F
                         flags sortbitwise,require_jewel_osds      ' d- b$ A. E& v, P
             pgmap v123: 448 pgs, 5 pools, 0 bytes data, 0 objects            
. C" {5 y" c- D1 f6 Y3 K6 U" D. l( Y                           209 MB used, 299 GB / 299 GB avail                 2 {" J  V3 Z! @, ~
                                 448 active+clean
& T3 J$ d& U( t( E/ d' k4 ~$ O% ?0 ?4 N五、Ceph client测试5 U" P- W5 ?5 I/ ^, L

1.准备client节点
  U2 t. U7 y" N通过ceph-deploy节点执行命令:

ceph-deploy  install  --no-adjust-repos ceph-client
4 V. ~# }1 l& \; M- H* |+ Z) K! ?& R( Z8 ~6 }
ceph-deploy  admin  ceph-client( o1 F  S" B" B* V8 @$ G- x
- B7 X0 A+ Q: ]  N3 Q

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

rbd create  --pool rbd --size 1024 test_image0 t3 S4 W1 f  B6 f

查看创建的块设备

rbd list
  C% J9 V3 p8 W! g/ z% H+ Wrbd info test_image& ]1 W6 R- Z/ R" Y

: z1 |% S- M( _' l$ H7 P- S8 x) j6 M1 ?4 q

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

rbd map  --pool rbd  test_image0 B# ?) c% X: i& W! C# c" }

4.查看系统中已经映射的块设备 * [* J" I; C. o" V- t- \/ R) B
rbd showmapped

[root@ceph-client ~]# rbd showmapped1 w5 G# l, V: N% }( c
id pool image      snap device    0 H$ L1 k  B$ l+ [1 C8 z: q  i
0  rbd  test_image -    /dev/rbd0/ H+ X! d9 E' v. w8 b" R& R4 a

) ^6 r$ }1 v  a9 c

5.取消块设备映射
7 A5 O+ l, ?1 {2 X; B9 krbd unmap /dev/rbd0

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

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-9-25 23:54:19 | 显示全部楼层
[root@ceph1 ~]# ceph osd tree, H& d  f1 S4 H6 n
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
$ u5 n: J) d/ q0 |* Z- {$ H-1 0.58557 root default                                     " {( J1 C6 [2 C9 g* c- v5 H5 A$ _, x
-2 0.19519     host ceph1                                   
, E0 Z. Q' G5 R8 L& L$ t' Q 0 0.09760         osd.0       up  1.00000          1.00000
' m+ O6 V1 \' F0 r9 P5 w1 ` 1 0.09760         osd.1       up  1.00000          1.00000
+ h# ]' c5 `# N* H) Q$ h2 n-3 0.19519     host ceph2                                   8 K( s- H- ^& _8 b9 c
2 0.09760         osd.2       up  1.00000          1.00000 - A7 e0 ^( a7 n. {- L% f0 ~* Q
3 0.09760         osd.3       up  1.00000          1.00000 7 U$ Z  G8 R0 h
-4 0.19519     host ceph3                                   ' K! [+ A  i0 P8 m, w$ D% T( i
4 0.09760         osd.4       up  1.00000          1.00000
/ n, ?+ N/ r8 L6 u 5 0.09760         osd.5       up  1.00000          1.00000 9 B! L( J/ w- k
[root@ceph1 ~]# ceph mds stat
9 e/ c; }3 V3 te1:
9 o: ^0 O4 j: e
; o5 D% ~* \. V[root@ceph1 ~]# ceph -s1 J4 \5 Y- N, Q2 X; I9 z! C, W! @
    cluster fbe2dad5-5566-4e95-9fed-f8edbdcfeeb6
( i" @2 ]; C5 b0 R  r3 J+ ^( ?9 Q     health HEALTH_OK
0 |+ B9 b" v; a. `# z     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}0 w. w0 p9 C% q( a) U' |: ?) d1 I4 U
            election epoch 6, quorum 0,1,2 ceph1,ceph2,ceph3" _* X0 s  U- q* u
     osdmap e44: 6 osds: 6 up, 6 in
: v( ]/ D) U- x- t# Z            flags sortbitwise,require_jewel_osds
0 K- |3 E- S; W; d' `      pgmap v176: 448 pgs, 5 pools, 16 bytes data, 3 objects
( a- S% I+ n' I: {6 {$ T            651 MB used, 599 GB / 599 GB avail
# T( a4 M( D7 e# K  u" J2 [2 n                 448 active+clean
7 o6 A, [$ c& s/ g" ?
! {  x6 [* f0 I9 s' T. e, a" w. v在这过程中,失败和反复是难免的,在任何时候,可以使用如下的命令将已有的配置擦除然后从头安装:3 X) a+ t2 m: g
+ d0 Y5 X4 O3 }; r6 K5 R
ceph-deploy purge ceph{1,2,3}
% F' N, J% w& g! v, ^+ ]ceph-deploy purgedata ceph{1,2,3}
6 @/ O* q+ V% d4 E* Mceph-deploy forgetkeys

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-9-26 09:01:34 | 显示全部楼层
Ceph 分布式存储集群有三大组件组成,分为:Ceph Monitor、Ceph OSD、Ceph MDS,后边使用对象存储和块存储时,MDS 非必须安装,只有当使用 Cephfs 文件存储时,才需要安装。这里我们暂时不安装 MDS。1 I$ Q; @. u  w6 U: q; A: K
3、Ceph 预检9 |) P# p' X. a. q' H- k
3.1 配置节点Host
5 B' J# {' D, Z% @( _: M为了方便后边安装,以及 ssh 方式连接各个节点,我们先修改一下各个节点的 Hostname 以及配置 Hosts 如下:
, q5 t  k) G! O9 gadmin-node (10.222.77.213)
- t# e! N/ |$ q% Y& T* N
8 e! ]4 Z( k8 t4 S$ cat /etc/hostname
0 U% c! {' ~2 M' R+ eadmin
* y  E7 X2 x3 Z6 j$ q! c! D
; ?6 Y% d1 ?7 @$ cat /etc/hosts
$ ^5 K; Z! _, W5 @" Y- ~$ ^" `127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain41 W# L, L: o; F4 p
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
" \$ {( k- q9 {5 @: h10.222.77.213 admin$ [& |, K0 Z3 c7 X
10.222.77.242 node0- B1 F  y1 F& ?  B/ n0 x2 s
10.222.77.253 node1  H$ i8 T0 P" [% G& `  m' |/ x
' R1 p) T# A" j! F8 N# ^
-----------------------------1 M; g$ l, ?0 s4 N  C$ X9 W
node0(10.222.77.242) 2 t8 b% v! r1 Q' Z
$ cat /etc/hostname
5 z9 K$ s4 m4 u: V3 xadmin! }: w6 q; |0 W/ V/ `7 }) t

3 u, M$ x- O5 l# q( U$ cat /etc/hosts
- v* L5 Y/ p; s+ U1 V! ~127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  D( G9 W' y! P  _$ E
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
; m* |. T; H  M) t1 \( [- ^10.222.77.242 node03 u; B1 ~& S; J1 ]" g  ]
10.222.77.213 admin9 M5 b, V# @" w1 h/ t8 X% g% r  E1 G% Z
10.222.77.253 node13 C) C, y' b2 k( P9 u1 k
7 u( C9 b/ B* u: Y
-----------------------------. c4 H" f# p9 Q( Q$ Y3 Q
node1(10.222.77.253)
2 h- q! I' W6 q/ e2 T$ cat /etc/hostname
, l4 c/ ~- X+ X6 ~admin# _. r; S  D9 w+ L
9 j3 R1 G- L" h
$ cat /etc/hosts
2 Y8 o0 Z% a& S9 O% n( h) O127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  `6 \/ D+ f# E  y0 O9 p% q::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
% \; J5 C# [& e# D/ p* I' @10.222.77.253 node1$ g6 @" Q* _9 v- W' J- g+ S
10.222.77.213 admin
# F9 W' [- i4 D/ A! R10.222.77.242 node0! y- ^; z/ }- X- D
3.2 安装部署工具 ceph-deploy
' A) f2 D3 H6 v! pCeph 提供了部署工具 ceph-deploy 来方便安装 Ceph 集群,我们只需要在 ceph-deploy 节点上安装即可,这里对应的就是 admin-node 节点。把 Ceph 仓库添加到 ceph-deploy 管理节点,然后安装 ceph-deploy。因为系统是 Centos7 版本,所以配置如下:. \& a- Y) v; i, r7 D# D* O4 K( ^/ i
# ceph-deploy (admin-node) 上执行
% a$ }. L1 \3 p8 C7 Z/ ]  y* V5 ?; Q+ {' z6 }, Y
# yum 配置其他依赖包
: X, ?9 v" k* k% p, v$ Q; f' E$ 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*, r+ a" A6 }0 S% d2 B
2 @$ m; {9 i! c: ~/ _
# 添加 Ceph 源
6 x! s9 g4 ~: b# s- h0 A& a$ sudo vim /etc/yum.repos.d/ceph.repo- q: G5 i: f% [8 ]0 j
[Ceph-noarch]
% `" p4 O9 Y; U. r4 y8 @1 ~name=Ceph noarch packages
" x: _# G8 g( cbaseurl=http://download.ceph.com/rpm-jewel/el7/noarch
' V& z& h$ y, O4 C( Fenabled=1$ M$ f5 R5 [; b  f7 ]) g5 z
gpgcheck=10 a" |. s/ @8 q& f" x7 M
type=rpm-md* W1 i9 u  V$ ^3 l1 J$ ~4 Y& B4 z
gpgkey=https://download.ceph.com/keys/release.asc
4 v# h% T, Y% e( C# _' |priority=1  k6 E$ U4 ^4 X1 R; ?

& |0 g; F* c# D8 Y0 z# 安装 ceph-deploy
/ J+ t* s+ a9 N- i$ sudo yum update && sudo yum install ceph-deploy
- z. B9 g' u7 w7 p3 y3.3 安装 NTP 和 Openssh* w* ]7 J( u5 i/ _4 y4 n5 `9 O5 L% k
官方建议在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),以免因时钟漂移导致故障。
) E8 u8 k4 l% s0 Q5 ?/ S+ [# yum 安装 ntp3 c: N$ Y" Z- u% }
sudo yum install ntp ntpdate ntp-doc4 w3 K/ @9 y1 k# q2 ~- p
1 c) ?  U$ @' Y) b  z' H% m  n& f
# 校对系统时钟
: \2 R7 r8 ]) D: R; ~$ g9 ?ntpdate 0.cn.pool.ntp.org/ A- o7 s' M4 O3 p/ `* _
后续操作,ceph-deploy 节点需要使用 ssh 方式登录各个节点完成 ceph 安装配置工作,所以要确保各个节点上有可用 SSH 服务。2 B  [& U! @* s
# yum 安装 openssh
/ q; J$ G5 y/ `2 ?  ~- Z/ n$ sudo yum install openssh-server5 N8 u: Z3 ^- J" Z5 R- B

. d5 H6 N* e3 j- P# 查看 ssh 版本. \0 Q- w5 L* X3 Z) ]3 G
$ ssh -V9 o% F$ h' @( H
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017  z/ y( D. ^4 A7 M: y
3.4 创建 Ceph 部署用户7 t2 T4 _+ z8 Y9 W: Q8 j. g7 b( X
ceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。官方建议所有 Ceph 节点上给 ceph-deploy 创建一个特定的用户,而且不要使用 ceph 这个名字。这里为了方便,我们使用 cephd 这个账户作为特定的用户,而且每个节点上(admin-node、node0、node1)上都需要创建该账户,并且拥有 sudo 权限。6 J$ i) {& o8 l0 }6 h, N' ~
# 在 Ceph 集群各节点进行如下操作) {  ~2 t. D9 m# K$ d0 J
' c0 z4 c: k) F" `& c
# 创建 ceph 特定用户2 Z/ V  T$ O8 ~: i
$ sudo useradd -d /home/cephd -m cephd
( z! g6 ?) W$ S% ~( {$ sudo passwd cephd
: t2 g3 m/ I4 r! i$ G
' }. l, b+ ~: D- w# 添加 sudo 权限* v' Z2 J$ F5 p2 [9 c& f4 a
$ echo "cephd ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephd  j4 O2 e! w& j- m
$ sudo chmod 0440 /etc/sudoers.d/cephd
6 {8 b6 s* R# S  ?  B5 l接下来在 ceph-deploy 节点(admin-node)上,切换到 cephd 用户,生成 SSH 密钥并把其公钥分发到各 Ceph 节点上,注意使用 cephd 账户生成,且提示输入密码时,直接回车,因为它需要免密码登录到各个节点。
6 r" S( n* X- V+ U1 ^# ceph-deploy (admin-node) 上执行) z! R% w' i, E- T5 r2 S

! H& T/ v# d# Z9 f4 F7 N! u# 生成 ssh 密钥3 {3 n& h$ X  ?. R( c
$ ssh-keygen
! A7 j: T( P' lGenerating public/private rsa key pair.2 q4 v8 L* Q0 ]- g
Enter file in which to save the key (/home/cephd/.ssh/id_rsa):
& b; J; g- d0 s) l- H  vCreated directory '/home/cephd/.ssh'.6 c, P: h' ]- |# u) j- e
Enter passphrase (empty for no passphrase):
) Y# X7 X: h! f* m+ }' Q5 I% u3 dEnter same passphrase again:
  j; o) w+ m3 c8 o0 P$ TYour identification has been saved in /home/cephd/.ssh/id_rsa.
/ L1 t% u( r" K1 h! r8 r& QYour public key has been saved in /home/cephd/.ssh/id_rsa.pub.8 E! `& P8 Y+ z
The key fingerprint is:5 e7 x# X, P, ^# G& n4 t
...+ i0 \, G8 S* W+ F
% D6 ~) q7 ^& c$ r+ W; i( Y
# 将公钥复制到 node0 节点5 q' i$ l5 U8 I4 G
$ ssh-copy-id cephd@node09 v% y* I4 r, D" J' G$ X5 Z7 e
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cephd/.ssh/id_rsa.pub". K0 D; [+ ^* `# E+ [
The authenticity of host 'node0 (10.222.77.242)' can't be established.
: N0 l9 P  y) `& q+ V. o5 DECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.5 s% A- o6 ~# I2 Z# v! l
Are you sure you want to continue connecting (yes/no)? yes
1 o, |$ `6 ^; o5 A3 C/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
$ k7 C6 H2 r  H" _# k' B) c' o- Y/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
% G  [* B2 c) p3 _3 c# Acephd@node0's password: 3 s, _2 `% U" r3 H* A3 d

$ _; R1 i' d: ?" R" vNumber of key(s) added: 1
- \8 a/ l9 n4 w1 e3 p  n2 |6 O, ^9 ]8 C7 D  b' c' q
Now try logging into the machine, with:   "ssh 'cephd@node0'"- a2 s' B' ~: |# b9 T* \" I7 w% j: ^
and check to make sure that only the key(s) you wanted were added.
: U! [. Y8 o- }+ ?( O: _2 m
3 N* f( A: k! P3 E7 H6 `# 将公钥复制到 node1 节点
5 c8 \) b2 r7 `$ a. B6 ?$ ssh-copy-id cephd@node1
/ a* o4 L4 T. x0 [4 R( x2 t5 U, Q/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cephd/.ssh/id_rsa.pub"1 B. T  Q" ~3 T$ b& }7 n
The authenticity of host 'node1 (10.222.77.253)' can't be established./ W: V5 `: H; j4 U
ECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.: X3 M& m; J% l
Are you sure you want to continue connecting (yes/no)? yes& s; j+ {9 {# L, B; k4 c
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed5 L5 F% [; |  o  ~  q5 z4 C' Y' z8 P
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
, K3 {5 P- B0 V5 Ucephd@node1's password:
: p! Q( j, D8 J5 |' T0 p/ H% B# c: L. U, y# E) ^; z8 p$ `3 T
Number of key(s) added: 1
4 o" C# D$ X7 o* ?
- s8 t" E+ U2 x3 Z0 d/ z4 F" }- \4 FNow try logging into the machine, with:   "ssh 'cephd@node1'"2 }* c7 b; t* O% k7 v- T2 v
and check to make sure that only the key(s) you wanted were added.
7 }* g7 }' W  K4 R& Z: E0 b复制完毕,测试一下在 ceph-deploy 管理节点免密码登录各个节点。
7 r4 p' a' i" @% X7 B$ ssh node09 A+ `0 |3 R- S9 I
Last login: Fri Dec  8 15:50:08 2017 from admin
$ H. T1 m8 v1 u
  l( v/ H# b* q+ K  `) \. Q$ ssh node1
1 @" d2 m* h" @Last login: Fri Dec  8 15:49:27 2017 from admin
- [  [/ e% w2 t/ W$ o/ E( S测试没有问题,接下来,修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样无需每次执行 ceph-deploy 都要指定 –username cephd 。这样做同时也简化了 ssh 和 scp 的用法。
  {5 T' C- s1 ]1 r* d9 P$ cat ~/.ssh/config; N& q) W( C4 z+ Z  S# m; ~
Host node01 |/ [* X& h3 ^3 n6 Z: N
   Hostname node02 S# f* d% U5 m+ e6 X& |, [" L
   User cephd
  }7 ^$ R8 n' R" F$ oHost node15 z5 q6 z5 ~: B: ^- o( D3 q
   Hostname node1
7 ^4 u. T. w) _$ ^+ T0 F, y   User cephd
; ?% D2 t# }' Z* J) T' o$ w注意,此时再执行 ssh node0 会提示报错 Bad owner or permissions on /home/cephd/.ssh/config。原因是 config 文件权限问题,修改权限 sudo chmod 600 config 即可解决。
) H3 S$ ?" H) E& l9 K4 z, r3.5 其他网络配置/ ?) ]2 k+ N+ x  q" N. r9 [
官网文档中指定 Ceph 的各 OSD 进程通过网络互联并向 Monitors 上报自己的状态,所以要保证网络为开启状态,不过某些发行版(如 CentOS )默认关闭网络接口。所以我们需要保证集群各个节点系统网络接口是开启的。* A2 ]0 g: |) f! g( R
# 在 Ceph 集群各节点进行如下操作
+ C& f" P2 k! C, q3 P+ ~
- Y& h& w8 v" K# Q- @$ sudo cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
8 x0 `1 r& L& H' |: _8 O- i9 RTYPE="Ethernet"
: n* A+ g  ^9 T# u  z2 m- KBOOTPROTO="dhcp"
" ^9 k1 @; V/ t) j" q2 KDEFROUTE="yes"
+ r4 w0 Z) u. N2 V4 `- V+ EPEERDNS="yes"; V  r5 W2 F. \0 h: d, C
PEERROUTES="yes"& v. A* b0 D6 q5 W9 ]) C; \* x
IPV4_FAILURE_FATAL="no"4 X3 I1 R+ t4 j7 G; E0 @: [
IPV6INIT="yes"3 W. A0 L  K7 W9 c: l4 n
IPV6_AUTOCONF="yes"1 d4 }3 e+ a2 t  j) z, b
IPV6_DEFROUTE="yes"
  Z: K6 S1 N6 q) @* S- CIPV6_PEERDNS="yes"
# m# D1 @& M# y3 P. B' KIPV6_PEERROUTES="yes"2 F. O5 I  }) o9 m
IPV6_FAILURE_FATAL="no") V# U# N! J7 ]+ L3 P% e% S/ {
IPV6_ADDR_GEN_MODE="stable-privacy", @4 |7 `# T) B5 [
NAME="enp0s3"
  e: t8 B" K# T' h& m) Z! ]0 K$ OUUID="3e68d5a3-f9a6-4c83-9969-706f7e3b0bc2"# A9 u  V9 H# R
DEVICE="enp0s3"
* C) X- [% Z. X$ z% @ONBOOT="yes"  # 这里要设置为 yes# i: s6 p5 M& X" J
注意:这里因为在我安装的虚拟机集群中网卡为 enp0s3,所以需要修改 /etc/sysconfig/network-scripts/ifcfg-enp0s3 文件,请根据自己系统网卡名去修改对应配置文件。
3 _( j, H8 x" Z: JSELINUX 设置,在 CentOS 系统上, SELinux 默认为 Enforcing 开启状态,为了方便安装,建议把 SELinux 设置为 Permissive 或者 disabled。
( W4 r1 c5 U! _" T; H7 q# 在 Ceph 集群各节点进行如下操作
$ u  a: E: N0 z* K
* H; k9 d& g5 [# 临时生效设置
9 t8 F' b6 z6 A7 ?$ z0 X$ sudo setenforce 0& x& Q' J4 v, ]+ I& V4 s( ]
, J1 w+ w4 `% {$ r7 [) D, n
# 永久生效设置% T& {+ b5 }/ Z2 ]
$ sudo cat /etc/selinux/config& X, Z# l, k/ ~7 s3 C
SELINUX=disabled  # 这里设置为 Permissive | disabled
9 i& i6 w% l! B1 G3 |6 b: ?SELINUXTYPE=targeted 7 G; V5 F4 M' o4 L* g9 q
开放所需端口设置,Ceph Monitors 之间默认使用 6789 端口通信, OSD 之间默认用 6800:7300 这个范围内的端口通信,所以我们需要调整防火墙设置,开放所需端口,允许相应的入站请求。
+ G0 N6 z* @- O2 u3 O# 防火墙设置
$ |; U; y. s2 J$ L2 ~5 K$ sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent) x# ~2 |% h# v6 b2 B" T7 C4 O' K

2 g0 C5 U& R9 j* Q0 }0 f# 当然我们也可以关闭防火墙9 f6 i, M3 K3 A
$ sudo systemctl stop firewalld.service  #停止 firewall
7 D: z: m1 a, n$ sudo systemctl disable firewalld.service  #禁止 firewall 开机启动
  I0 @( g* K  `! L1 A# ?% z) O4、Ceph 存储集群搭建0 w7 P3 u9 l2 a- C
好了,经过上边一系列的预检设置后,我们就可以开始 Ceph 存储集群搭建了,集群结构为 admin-node (ceph-deploy、Monitor)、node0(osd.0)、node1(osd.1)。首先要提一下的是,如果我们在安装过程中出现了问题,需要重新操作的时候,例如想清理我搭建的这个集群的话,可以使用以下命令。7 `1 R# E/ ~$ x) U2 o- w
# ceph-deploy (admin-node) 上执行
/ j- }# d. j; E. I
0 I5 \7 I6 U& e% g' B# 清理配置
  H9 M# N' U- z# m  S+ l9 w) eceph-deploy purgedata admin node0 node1
6 r( |. j; N$ T% ]* v0 vceph-deploy forgetkeys4 [# N. c$ }0 |

) A" ]( {: G4 g  S# W# 清理 Ceph 安装包7 U0 ^% ?; B1 K1 i& I; E0 M7 w
ceph-deploy purge admin node0 node1% r0 v5 S* G6 e
好了,现在开始搭建。首先 Cephd 用户创建一个目录 ceph-cluster 并进入到该目录执行一系列操作。因为我们设计的 monitor 节点在 admin-node 节点上,所以,执行如下命令。
0 u- l/ z; V! X# ?$ i* w) d# 创建执行目录
' L3 K, l' c) L8 {' @  `" V5 {$ mkdir ~/ceph-cluster && cd ~/ceph-cluster' I' Y5 f) m& M* S( b

* W3 _+ b8 X9 E7 B# v# 创建集群
9 ?) p! |& I0 L) U$ ceph-deploy new admin0 d1 b6 @$ u4 P0 y1 K) s* J) q, ^
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf" g% w/ H% h& \8 e% W3 N3 \0 @, u
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy new admin* d1 ^7 B$ X; [; q8 K
[ceph_deploy.cli][INFO  ] ceph-deploy options:: A, O3 S( S5 U- P9 @
[ceph_deploy.cli][INFO  ]  username                      : None' }3 u+ S! g- U$ s& e: [2 C
[ceph_deploy.cli][INFO  ]  func                          : <function new at 0xf24938>
' j2 j, R- L9 i[ceph_deploy.cli][INFO  ]  verbose                       : False
6 r( ]! @$ V! h; v[ceph_deploy.cli][INFO  ]  overwrite_conf                : False$ a" x1 r1 x  r6 O0 W) V7 Q
[ceph_deploy.cli][INFO  ]  quiet                         : False# z  D. S7 |& `0 n; G
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xf1f6c8>
+ R2 H7 o0 N5 f# @8 r[ceph_deploy.cli][INFO  ]  cluster                       : ceph( {" s* V" ~# \) G; v
[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
. s" Z  i5 c/ x[ceph_deploy.cli][INFO  ]  mon                           : ['admin']# X2 i, Y/ A0 `, Y0 x3 H/ j
[ceph_deploy.cli][INFO  ]  public_network                : None0 w* G1 Y" u/ ?
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
+ k0 Y8 H' Z1 e- w3 B) s[ceph_deploy.cli][INFO  ]  cluster_network               : None
9 `* A. T! N, W[ceph_deploy.cli][INFO  ]  default_release               : False
2 B! u7 x- }+ c[ceph_deploy.cli][INFO  ]  fsid                          : None$ ]% n# P* K( e- t
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph/ y; G4 C- H9 d. Q
[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
/ ^* w1 t* u* a: z) W9 u.../ Q$ v0 m" F7 K6 B9 \9 A
[ceph_deploy.new][DEBUG ] Resolving host admin( e- i. [" S) Y0 i$ Y- C7 z
[ceph_deploy.new][DEBUG ] Monitor admin at 10.222.77.213; Z: f: T% L; o; w1 x
[ceph_deploy.new][DEBUG ] Monitor initial members are ['admin']
5 M& L4 S* W8 C+ f4 S% Z* O5 n[ceph_deploy.new][DEBUG ] Monitor addrs are ['10.222.77.213']# e# W3 E) B7 V- y  j6 k
[ceph_deploy.new][DEBUG ] Creating a random mon key...
2 b8 v1 f8 v# E' w[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...# s/ d' i# y; N- K) h9 ?. o
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...) F* [" \3 h" o. c; J
此时,我们会发现 ceph-deploy 会在 ceph-cluster 目录下生成几个文件,ceph.conf 为 ceph 配置文件,ceph-deploy-ceph.log 为 ceph-deploy 日志文件,ceph.mon.keyring 为 ceph monitor 的密钥环。) b# U" _/ ]3 f, p
$ ll ceph-cluster
  i3 t$ M4 N6 \9 Q( y-rw-rw-r--. 1 cephd cephd  196 12月  7 14:46 ceph.conf% s. O) G- M. S  M6 d5 T
-rw-rw-r--. 1 cephd cephd 3694 12月  7 14:46 ceph-deploy-ceph.log
) ~5 c1 f! i1 c$ v7 y# b) ?" `: o; S$ e-rw-------. 1 cephd cephd   73 12月  7 14:46 ceph.mon.keyring
7 K! B2 o2 z2 X! W* R5 c  b4 R# e0 m" a) k# h6 ^9 Z! u$ {" p
$ cat ceph.conf & N4 y9 S- f; w# G% W- {
[global]+ \3 x2 A$ S# u: K9 g, f
fsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
/ |" v2 U) F% g) f9 x4 Zmon_initial_members = admin* N+ N! w' s* u7 L( f& W
mon_host = 10.222.77.213$ R' _# m8 ?# W/ B! o/ _
auth_cluster_required = cephx8 A1 I6 Z8 C- J! m
auth_service_required = cephx
/ Z$ F. A% ?: x' a+ j+ K6 V# oauth_client_required = cephx$ h4 w$ B3 `7 X
接下来,我们需要修改下 ceph.conf 配置文件,增加副本数为 2,因为我们有两个 osd 节点。
4 u/ e# s2 F% n/ L  W% }: N  }: b$ cat ceph.conf
- K9 T3 i) m5 d% i" v[global]6 J% q6 I* m* d% l4 ]( E1 w7 S
fsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26, g- f4 V: y! x! }/ g6 r+ g
mon_initial_members = admin
. t* o# @: E" h- _mon_host = 10.222.77.213
" i0 e6 c1 r$ r) Z* G0 I% cauth_cluster_required = cephx
4 A3 v) J( p2 ^3 K8 w7 Xauth_service_required = cephx' Z9 M7 }/ g4 w5 K1 Q
auth_client_required = cephx6 ]0 k8 @: X. H
osd pool default size = 2  #增加默认副本数为 2
3 J3 e% {: {, m7 @8 Y4 m: H) B2 m9 T然后,我们需要通过 ceph-deploy 在各个节点安装 ceph。
7 F2 |+ }6 H7 @  J$ ceph-deploy install admin node0 node1; t: h! K: ^6 e+ {% F+ x
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
8 X1 R# H5 c3 G. v, I. r. ~2 x[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy install admin node0 node1; J7 K# K0 ~  X/ C7 @5 v' Y
[ceph_deploy.cli][INFO  ] ceph-deploy options:+ U# N4 M/ O* D7 s/ U
[ceph_deploy.cli][INFO  ]  verbose                       : False' T- f' A& V$ K1 Y" Z
[ceph_deploy.cli][INFO  ]  testing                       : None+ B* ~" ^6 ?+ N3 D
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xde1c68>
0 B4 ^3 s" a4 z: R8 u9 z% v+ r[ceph_deploy.cli][INFO  ]  cluster                       : ceph% ^8 q! g, ?. O$ Z+ Y% m/ `- [) q  ^
[ceph_deploy.cli][INFO  ]  dev_commit                    : None
  u9 ]1 |8 e/ {/ _& o! z* ^[ceph_deploy.cli][INFO  ]  install_mds                   : False
1 ^; S# P. q: Z. R  N+ q[ceph_deploy.cli][INFO  ]  stable                        : None
" p, Z( Z% o- n3 u+ ][ceph_deploy.cli][INFO  ]  default_release               : False  N+ l. K  R. g  x% q0 |
[ceph_deploy.cli][INFO  ]  username                      : None
- ^, p# d; Q" w3 G9 Q2 R9 ][ceph_deploy.cli][INFO  ]  adjust_repos                  : True5 A* {) T9 r; I6 w
[ceph_deploy.cli][INFO  ]  func                          : <function install at 0xd5b140>& D: c6 n! {' _8 E( W
[ceph_deploy.cli][INFO  ]  install_mgr                   : False- n0 v4 R: w( ^1 D0 W1 P
[ceph_deploy.cli][INFO  ]  install_all                   : False2 ~  X( U1 I/ l$ l- R
[ceph_deploy.cli][INFO  ]  repo                          : False( s+ I- L" T6 d& ]
[ceph_deploy.cli][INFO  ]  host                          : ['admin', 'node0', 'node1']- K* @8 Y; ^1 S+ B9 R; w4 w7 a
[ceph_deploy.cli][INFO  ]  install_rgw                   : False
9 m' B  N3 b" z( A+ q[ceph_deploy.cli][INFO  ]  install_tests                 : False$ k$ l$ e, T4 j. D3 ]
[ceph_deploy.cli][INFO  ]  repo_url                      : None% k  y# u3 o( g' o. T
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
9 f% z: _& m2 B[ceph_deploy.cli][INFO  ]  install_osd                   : False
  [2 q, W: Q( s2 N[ceph_deploy.cli][INFO  ]  version_kind                  : stable: Z: U2 V3 W* B/ F, p# j
[ceph_deploy.cli][INFO  ]  install_common                : False
1 L4 R+ L+ M* ~# y3 q& g[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
( ?! j) j/ ?" i; L* ~- n  a2 J' t[ceph_deploy.cli][INFO  ]  quiet                         : False
8 I8 f: q0 y( `3 ~( F0 K" [[ceph_deploy.cli][INFO  ]  dev                           : master
1 H/ n+ ^' b# l$ X" r5 u[ceph_deploy.cli][INFO  ]  nogpgcheck                    : False6 v, n! z, D- ~' |/ x4 {$ Y( i
[ceph_deploy.cli][INFO  ]  local_mirror                  : None# S6 H7 F/ m5 }% [* {! Y, A
[ceph_deploy.cli][INFO  ]  release                       : None
% [3 x  L" v- F/ l3 W9 e+ t[ceph_deploy.cli][INFO  ]  install_mon                   : False
5 X* D" {' i0 _9 j[ceph_deploy.cli][INFO  ]  gpg_url                       : None, B" U6 D  X$ f, ^
[ceph_deploy.install][DEBUG ] Installing stable version jewel on cluster ceph hosts admin node0 node15 w: s3 G( t6 ?
[ceph_deploy.install][DEBUG ] Detecting platform for host admin ...
* g; b, X6 Y6 Z. y+ z+ f2 F...* ^3 F& G- `5 m
此过程需要等待一段时间,因为 ceph-deploy 会 SSH 登录到各 node 上去,依次执行安装 ceph 依赖的组件包。8 U% }7 Q+ G2 N- I. m" c! {
漫长的等待安装完毕之后,接下来需要初始化 monitor 节点并收集所有密钥。2 |% Z" P* g. c2 a) X9 T9 F
$ ceph-deploy mon create-initial
  K+ j' h: ]( L, o$ G. q+ `...6 x+ b9 _7 L8 ?3 _5 Z
ceph_deploy.mon][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite
4 r% c/ D" y' r[ceph_deploy][ERROR ] GenericError: Failed to create 1 monitors: s5 ?; [+ R! U7 |# R
...) B6 O) M3 Q: U
不过很遗憾,执行过程中报错了。查看原因应该是已经存在了 /etc/ceph/ceph.conf 配置文件了,解决方案就是加上 --overwrite-conf 参数,覆盖已存在的配置。
" z9 q3 O/ Z) f7 {1 d* b$ ceph-deploy --overwrite-conf mon create-initial* {. N& _; Q0 v  e2 e( z
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
/ t! E' S# j; ?7 S" X: l9 K* J# z+ H+ b[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy --overwrite-conf mon create-initial4 I* O; Z) l5 }# @5 N9 |6 O
[ceph_deploy.cli][INFO  ] ceph-deploy options:
. }% ?4 V7 k9 h4 e8 C. r9 M4 O[ceph_deploy.cli][INFO  ]  username                      : None
# X1 h. ~+ ~7 ][ceph_deploy.cli][INFO  ]  verbose                       : False
+ ?8 J; G) I- T( `' x$ {- d[ceph_deploy.cli][INFO  ]  overwrite_conf                : True
5 a/ _7 C" k% U& _$ H1 a[ceph_deploy.cli][INFO  ]  subcommand                    : create-initial
: {- s* |% U4 H! X3 \' H( y[ceph_deploy.cli][INFO  ]  quiet                         : False8 r/ R/ b  V9 v5 q+ s7 X" H
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x1d9e758>+ q8 k  b$ R8 g2 x
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
! D0 O+ {" c( D) A" A1 b; J; V[ceph_deploy.cli][INFO  ]  func                          : <function mon at 0x1d8ea28>- n/ G! q. Q( _. g- u4 |
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
, |3 K# [" u5 Q) C$ _[ceph_deploy.cli][INFO  ]  default_release               : False
( d+ t# s) `! r" I4 ?" L" t- D[ceph_deploy.cli][INFO  ]  keyrings                      : None
7 c$ B" I5 G! ~8 I[ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts admin
; M% d3 h* }8 m  `5 ~[ceph_deploy.mon][DEBUG ] detecting platform for host admin ...
, V+ {) R$ G2 h3 L+ U...# s6 Q3 ?% N! D% O, w
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.admin.asok mon_status
1 U# }2 T* s2 u[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.admin
! U, ]' E8 T! i$ Y; a[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$ Z6 o3 D9 R4 v# Y& u; @4 i7 O/ 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-mgr( s. {: s: N& }5 U" I2 [/ }5 ?% `( R( 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-or-create client.bootstrap-mgr mon allow profile bootstrap-mgr5 c. H9 o( Y3 E/ c: W
[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
; j1 b1 ^! Y, 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 client.bootstrap-rgw
! H" ~$ v) b$ \' E; E/ y% m! L5 p[ceph_deploy.gatherkeys][INFO  ] Storing ceph.client.admin.keyring) j% X. U4 P' @' a% A
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mds.keyring
1 c0 B! N0 k) G% h[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mgr.keyring5 |5 M" o8 N" f6 U- g
[ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.mon.keyring' already exists
9 c. P% M2 q/ }5 k% Q' H$ b/ O[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-osd.keyring7 m# |" O) w/ y6 _$ T5 |
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-rgw.keyring
: j2 x. Q* W6 A3 }[ceph_deploy.gatherkeys][INFO  ] Destroy temp directory /tmp/tmpLv4mug
2 j3 X6 s# s" N+ {! u: O执行完毕后,会在当前目录下生成一系列的密钥环,应该是各组件之间访问所需要的认证信息吧。: ^  V) U' J7 f& Y" a3 G
$ ll ~/ceph-cluster
  F8 O, M) w7 R/ H9 C; V5 p-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-mds.keyring
% b5 S9 l, s9 O  U5 B8 F% A" g5 }3 ]-rw-------. 1 cephd cephd     71 12月  7 15:13 ceph.bootstrap-mgr.keyring
* C; X( ]! R. [: D+ x( `8 y+ S-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-osd.keyring
& b" Y8 |. w! X$ P+ |# y( u* [6 B-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-rgw.keyring$ o/ k' f. e2 C6 r
-rw-------. 1 cephd cephd    129 12月  7 15:13 ceph.client.admin.keyring
0 D# e* P$ c, V. [) t: \-rw-rw-r--. 1 cephd cephd    222 12月  7 14:47 ceph.conf  I9 V. b' q- O. J# o
-rw-rw-r--. 1 cephd cephd 120207 12月  7 15:13 ceph-deploy-ceph.log( a7 D) X) t& w6 Y  f0 d- v
-rw-------. 1 cephd cephd     73 12月  7 14:46 ceph.mon.keyring) f$ k& U/ u5 T. t! |* [
到此,ceph monitor 已经成功启动了。接下来需要创建 OSD 了,OSD 是最终数据存储的地方,这里我们准备了两个 OSD 节点,分别为 osd.0 和 osd.1。官方建议为 OSD 及其日志使用独立硬盘或分区作为存储空间,不过本机虚拟机上不具备条件,但是我们可以在虚拟机本地磁盘上创建目录,来作为 OSD 的存储空间。
! C: _( U" X1 ^7 U# ceph-deploy (admin-node) 上执行8 y2 ]/ a0 @: W
" ?+ F0 {: N1 }/ ?3 `
$ ssh node0
  R! e9 j: R; Z  ]# Y/ f  g$ sudo mkdir /var/local/osd0, |1 `& C- d2 `  A
$ sudo chown -R ceph:ceph /var/local/osd0$ ~% A: g. b4 _+ Q
$ exit1 q) R& G, V! O- b2 Y( u  ]4 C
0 r2 w+ v2 w( d
$ ssh node19 G: J: ?5 b: m2 d. [1 q9 C
$ sudo mkdir /var/local/osd1
% D$ Z( V' L9 {  }. L$ sudo chown -R ceph:ceph /var/local/osd1- _; k5 q- _: _5 d* s6 c
$ exit
3 W, ?4 T5 l/ x, m  B1 x& R/ J+ Z注意:这里执行了 chown -R ceph:ceph 操作,将 osd0 和 osd1 目录的权限赋予 ceph:ceph,否则,接下来执行 ceph-deploy osd activate ... 时会报权限错误。
2 {6 p  {+ @5 w5 j$ j' N  G. ^接下来,我们需要 ceph-deploy 节点执行 prepare OSD 操作,目的是分别在各个 OSD 节点上创建一些后边激活 OSD 需要的信息。
7 c* [% E$ V. o$ ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1
4 I* o4 |1 Q7 j$ o0 {[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
6 y: ~+ B% _* p2 d[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd13 P* H& ?" {9 Y  |. y3 W! B9 ^
[ceph_deploy.cli][INFO  ] ceph-deploy options:* e2 N1 I8 g8 a7 n' `: ^
[ceph_deploy.cli][INFO  ]  username                      : None
( L& [) g, j) p[ceph_deploy.cli][INFO  ]  block_db                      : None7 R0 R7 ^7 Q. R1 u# x5 c/ w
[ceph_deploy.cli][INFO  ]  disk                          : [('node0', '/var/local/osd0', None), ('node1', '/var/local/osd1', None)]
- t  A7 C  E- g/ P+ t/ T[ceph_deploy.cli][INFO  ]  dmcrypt                       : False  L" F: F3 t/ H
[ceph_deploy.cli][INFO  ]  verbose                       : False
7 B9 [1 \) j1 t  \[ceph_deploy.cli][INFO  ]  bluestore                     : None! l2 j2 E9 l' Z5 R: c/ N
[ceph_deploy.cli][INFO  ]  block_wal                     : None& b/ J- }! t1 t
[ceph_deploy.cli][INFO  ]  overwrite_conf                : True5 G+ l) J6 K) I$ n! G: R8 C( l) l3 _
[ceph_deploy.cli][INFO  ]  subcommand                    : prepare
# m& O4 Z4 j! g& P$ W2 T[ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               : /etc/ceph/dmcrypt-keys( M# v" ]# B% U/ O" y7 B: `$ M  u+ p
[ceph_deploy.cli][INFO  ]  quiet                         : False: Q  k/ D  j( A2 @1 m
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x117d950>5 @' {% N; T" ~+ V/ U! z2 \3 L
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
" k. U( P* s7 W* k[ceph_deploy.cli][INFO  ]  fs_type                       : xfs
. A0 p' X# a6 {% \9 [% Q( `) B[ceph_deploy.cli][INFO  ]  filestore                     : None
. Y* l5 F* W7 v* j[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x116a320>0 u- _+ e) {8 @8 a* r) [
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
. ^4 X9 e- l: \# M4 H- g3 _8 z0 ?[ceph_deploy.cli][INFO  ]  default_release               : False
! d7 v$ M4 z: N, \# S* Y8 z[ceph_deploy.cli][INFO  ]  zap_disk                      : False
/ @: }  D7 \2 [; A[ceph_deploy.osd][DEBUG ] Preparing cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:
" M. b) r& Z; f( U0 G1 T: k* m  D[node0][DEBUG ] connection detected need for sudo; X. T. |- r2 p, h& m" v; N
[node0][DEBUG ] connected to host: node0
  y5 G/ ]" V  ~[node0][DEBUG ] detect platform information from remote host
! ?, K1 O7 j& |6 P[node0][DEBUG ] detect machine type
: l- B7 J! n  @1 O[node0][DEBUG ] find the location of an executable7 a3 K. H1 ?) [8 D+ Y
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core6 h/ Z. e% ?% H, v  }/ J
[ceph_deploy.osd][DEBUG ] Deploying osd to node0& T, |" ~) |  f& e: S: c  U
...) x1 v# v7 F/ Q* T+ Z5 u; u
[node0][INFO  ] checking OSD status...+ R0 Y, h3 R* |4 `( ~# H9 [: y
[node0][DEBUG ] find the location of an executable- b0 g, @8 p$ w# @& r9 v" m9 }
[node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
. D1 _2 [+ I3 x: y# b/ \# ^+ }[ceph_deploy.osd][DEBUG ] Host node0 is now ready for osd use.
# I6 L; r7 G! C) l, F6 G6 G- J[node1][DEBUG ] connection detected need for sudo2 @& ]' D, l0 E- ]1 e+ B* t
[node1][DEBUG ] connected to host: node1 " Y8 t; W* Y5 {
[node1][DEBUG ] detect platform information from remote host% c; Z' k3 M' Q! r- K5 x9 X" j! F& y5 F
[node1][DEBUG ] detect machine type
/ r. g% p0 s$ L! R) Y: U6 n( Y[node1][DEBUG ] find the location of an executable5 f0 G4 y) T; n* r6 s
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
$ i5 n0 m9 ]3 I* \* m: I1 {( R[ceph_deploy.osd][DEBUG ] Deploying osd to node1$ \" x% [4 N2 k3 Q1 B7 N
...# R. k" D8 Q/ U
[node1][INFO  ] checking OSD status...1 J& `! J1 g  V- p
[node1][DEBUG ] find the location of an executable
$ o1 K7 p/ ]. F) p: W# f9 b[node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
' K! Z" O0 ^2 `2 B$ H% H[ceph_deploy.osd][DEBUG ] Host node1 is now ready for osd use.  Q/ i5 r' e( S* q, P% e* e
OK 接下来,我们需要激活 activate OSD。5 w0 T  {5 f/ A8 l) G
$ ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd19 m2 {+ L. s3 g8 v" Y
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf1 e" }2 A9 w6 r  k
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd19 Q( s5 U+ r7 {
[ceph_deploy.cli][INFO  ] ceph-deploy options:1 v1 C% C% c6 t& ?% N* ^7 {2 m
[ceph_deploy.cli][INFO  ]  username                      : None$ ^7 N9 p. }$ T# K8 O4 W
[ceph_deploy.cli][INFO  ]  verbose                       : False6 y; l; {6 \3 p1 d( ]& ^; n
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
; F, B) x; P- Y# J+ `) X& I2 I[ceph_deploy.cli][INFO  ]  subcommand                    : activate- s9 G* J4 }9 z- K0 \7 z
[ceph_deploy.cli][INFO  ]  quiet                         : False( W  ~/ w4 U3 }, l" s
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x2045950>
& L0 F  l2 Z/ u! _9 L" s+ \[ceph_deploy.cli][INFO  ]  cluster                       : ceph# S% e5 y/ ?  X5 \, r& J, E8 y
[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x2032320>
9 L" V: ~% k9 ^* ^[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
6 N2 G* S1 \9 p" L. U[ceph_deploy.cli][INFO  ]  default_release               : False
3 g. A: L! P3 F* e. i+ G) ~7 E[ceph_deploy.cli][INFO  ]  disk                          : [('node0', '/var/local/osd0', None), ('node1', '/var/local/osd1', None)]
: P$ D) \8 {+ Z( C% T! T) E[ceph_deploy.osd][DEBUG ] Activating cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:
' d& L, t1 U# o0 e0 d5 O[node0][DEBUG ] connection detected need for sudo4 C, j8 x$ F, ~- D! D
[node0][DEBUG ] connected to host: node0
& `, o4 f: X  X[node0][DEBUG ] detect platform information from remote host
- L: K/ r, \/ v6 i& i9 ?* ^* |[node0][DEBUG ] detect machine type
! K6 s/ `: U0 y' T. ]- ]+ h! t! u[node0][DEBUG ] find the location of an executable6 x1 S' I% m5 Y+ r
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
0 f! m, u' D1 n" h, k3 J[ceph_deploy.osd][DEBUG ] activating host node0 disk /var/local/osd00 h2 }! C: C4 u
[ceph_deploy.osd][DEBUG ] will use init type: systemd
3 w! X: a1 D: ~...4 F9 B, k; Q& ]9 `% v4 ]6 u
[node0][INFO  ] checking OSD status...
5 [$ C2 ~" r' N8 U! S; n9 p. Y[node0][DEBUG ] find the location of an executable
# G" v+ N2 ~0 J. K. D/ j/ s[node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
8 Z/ O3 B( U% y1 V5 G[node0][INFO  ] Running command: sudo systemctl enable ceph.target8 ?$ d" ^* O8 |8 {, g( l) k! c
[node1][DEBUG ] connection detected need for sudo
; C! ?( R" [6 r0 a" g! L( L[node1][DEBUG ] connected to host: node1 / A! G# N; e% v3 T7 w& e% W" O
[node1][DEBUG ] detect platform information from remote host+ I8 u$ h6 Q5 Q
[node1][DEBUG ] detect machine type
& q$ |; H& ?# m' Y[node1][DEBUG ] find the location of an executable2 ]& ^; c4 L6 }/ y1 {4 I
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
3 D7 n, Z0 [5 B6 f, W' S[ceph_deploy.osd][DEBUG ] activating host node1 disk /var/local/osd10 B( I- }. x; M! m3 @
[ceph_deploy.osd][DEBUG ] will use init type: systemd
. S' \9 G3 @+ h. }; i# t...9 f. f9 i" n! t' F
[node1][INFO  ] checking OSD status...
+ v. N; n. o9 p) J+ e. A[node1][DEBUG ] find the location of an executable
9 _: ~9 t/ x/ R( n1 t3 M; B7 w[node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
" P  Y0 a; v4 T; ?[node1][INFO  ] Running command: sudo systemctl enable ceph.target
' h# j" O- q5 l) f' A9 h看日志,激活也没有问题,最后一步,通过 ceph-deploy admin 将配置文件和 admin 密钥同步到各个节点,以便在各个 Node 上使用 ceph 命令时,无需指定 monitor 地址和 ceph.client.admin.keyring 密钥。0 {! e; h" ]3 A  N  N
$ ceph-deploy admin admin node0 node10 v2 B+ Y: h) O8 o; B/ M# C" T$ O, w
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf) m. {! E: K5 k5 [; e+ l
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy admin admin node0 node1( H& j  T; q7 A3 i" z% m% y9 k7 P$ r- Y
[ceph_deploy.cli][INFO  ] ceph-deploy options:6 Q3 A; U* e! A1 M# F
[ceph_deploy.cli][INFO  ]  username                      : None
6 A* H8 F2 s( F$ `' f* ^) @+ Q[ceph_deploy.cli][INFO  ]  verbose                       : False
& e$ g1 u$ r/ c! q6 Q1 ]& \[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
6 S, k, I5 T+ x) V& l0 s6 w[ceph_deploy.cli][INFO  ]  quiet                         : False) s/ P" j1 I4 B! ?0 w  }; [
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x15a93b0>
, V! i1 n( y" Y  {% V[ceph_deploy.cli][INFO  ]  cluster                       : ceph7 n$ y7 P) M2 |
[ceph_deploy.cli][INFO  ]  client                        : ['admin', 'node0', 'node1']# y/ O* k. n$ ?3 ^& P3 I# K; Q0 x1 [
[ceph_deploy.cli][INFO  ]  func                          : <function admin at 0x1500cf8>
' S! [+ J# L) v( `' C% r[ceph_deploy.cli][INFO  ]  ceph_conf                     : None& `* G1 Q% H7 C4 a
[ceph_deploy.cli][INFO  ]  default_release               : False/ t- v7 Y4 M7 U2 |
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to admin) `& _* I$ o" U* j4 A4 g" H7 [
[admin][DEBUG ] connection detected need for sudo, C+ E( a* E) l( J
[admin][DEBUG ] connected to host: admin 3 a! m2 X  s) I4 q+ S- n, C! D
[admin][DEBUG ] detect platform information from remote host% ^) J: T; i3 d' m8 L
[admin][DEBUG ] detect machine type4 U. {  H3 B8 E* e' s" H
[admin][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
& ]$ e2 x, F6 ?% P( Z$ b) W" I[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node0* t0 }1 `$ f3 E/ ^" r9 i
[node0][DEBUG ] connection detected need for sudo
6 X' G0 r4 f$ ?0 t; n, @[node0][DEBUG ] connected to host: node0
& U+ |) g% h7 l% `0 \3 v[node0][DEBUG ] detect platform information from remote host
* Y! {8 \) t0 g8 C. I  o! r! B7 G+ x[node0][DEBUG ] detect machine type
# U8 l/ ^! z" p" t/ L  I[node0][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf  e) o+ p( B7 N3 r
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node19 ?9 V3 T, D3 w! ~" A  n
[node1][DEBUG ] connection detected need for sudo; W0 D6 l% s+ x. \9 u' r- F
[node1][DEBUG ] connected to host: node1
. m, P  v- T* ^[node1][DEBUG ] detect platform information from remote host" B" x( s8 K" `6 W' g/ I
[node1][DEBUG ] detect machine type3 |4 m+ ^6 K- D7 q2 J* o- Z- l
[node1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
5 L4 F! a7 j* i( [同时为了确保对 ceph.client.admin.keyring 有正确的操作权限,所以还需要增加权限设置。( b" e( g) Y4 E- m! z! t
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
) F. }  z# i8 L9 j至此,Ceph 存储集群已经搭建完毕了,我们可以查看那一下集群是否启动成功!. ?; \: }0 `2 E- f7 l) z1 `
# 查看集群状态, F  t0 Q( N7 w' L/ w/ Q( u
$ ceph -s' N5 i) |) C3 k3 B$ L  ]+ G" ~
cluster 363c3cf4-dba4-4f13-8ec5-ed93416f4e26' T  e; K8 k( e  u
     health HEALTH_OK
6 @$ u3 g5 n1 n5 q, b; P5 z# K     monmap e1: 1 mons at {admin=10.222.77.213:6789/0}
% X8 ^- u/ [  h7 k            election epoch 6, quorum 0 admin9 {# X; ~+ v  _: E
     osdmap e15: 2 osds: 2 up, 2 in
$ E' c0 g/ \% T            flags sortbitwise,require_jewel_osds
; z3 w4 c+ s3 @* `2 n      pgmap v9276: 64 pgs, 1 pools, 863 MB data, 226 objects
8 J9 ^  ^8 U: W  t2 ?            33440 MB used, 33574 MB / 67015 MB avail
& k$ j( f$ A- f# E* s6 m+ V                  64 active+clean5 c& z; S# |/ o- i- D" d) j; }

+ ^) |+ q& `# M# L# 或者查看集群健康状况
7 l" c3 f* {( k- f8 Z$ ceph health9 A4 V" o. E4 H5 m1 E2 q% h/ R
HEALTH_OK' }; g; v: m9 k* e; k$ Y

! m, A! c3 L: o' {# Q6 ^# F) g7 m# 查看集群 OSD 信息5 q. w3 n% s0 G# X7 H& S
$ ceph osd tree
8 ]* l) X8 U( `# I' BID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
+ i- Q% ]6 J3 [2 Q# H& A3 R4 c-1 0.06400 root default                                    
& d4 q# }4 g! }-2 0.03200     host node0                                   
" {7 y( w" u0 |) l- [5 y2 u 0 0.03200         osd.0       up  1.00000          1.00000 6 y) p' x/ b& v) T
-3 0.03200     host node1                                   & }# W. b& a2 U  a; R
1 0.03200         osd.1       up  1.00000          1.00000 ! i/ G0 y% r; z: c
好了,通过参考官方文档中的 Ceph 安装和集群搭建说明,一步一步的完成整个存储集群的搭建,文档写的很详细,非常容易上手操作。本次就先记录到这,下一篇我们继续研究学习 Ceph 存储体系中的对象存储、块设备和文件系统。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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