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

CentOS7环境下ceph安装部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

安装环境为VMWare Workstation虚拟机

1.准备5台虚拟机

ceph-deploy:作为管理节点,后续的ceph-deploy工具都在该节点上进行操作。 : o! w/ X! q( p
ceph-node1、ceph-node2 、ceph-node3 :即做mon节点又做osd节点,都有3块磁盘,前2块磁盘部署2个osd,第3块磁盘建立2个相等大小分区作为2个osd盘的日志分区。这样,集群共有6个osd进程,3个monitor进程。
( j- S! O, a1 o+ s4 c' `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
, _0 ?$ M! X( }192.168.128.111 ceph-node1 3 L3 e* c: I) ?7 q1 D
192.168.128.112 ceph-node2
" N/ \. B! e3 T! g4 |8 |. b192.168.128.113 ceph-node3
0 y, [6 W! s0 N/ Z  R192.168.128.114 ceph-client

4.关闭firewalld

systemctl stop firewalld
% x& w; d5 L/ y% C& Tsystemctl disable firewalld

5.关闭Selinux

vi /etc/sysconfig/selinux 3 h6 N. z: t/ r1 B2 m4 m
SELINUX=disabled

6.安装ntp

yum install ntp ntpdate ntp-doc

systemctl enable ntpd 0 c' q$ N. M1 o
systemctl start ntpd

将系统时区改为上海时间
1 n6 z9 q. D, i9 b) L$ v4 z- tln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

查看时间是否准确 ' y5 @; }9 i- I  Q: a
date

/etc/ntp.conf # deploy节点 3 f$ \; Y; @4 {' E
! \( U, T: M; |1 G: C) A( G' u
restrict 192.168.128.0 mask 255.255.255.0 nomodify notrap
" ^7 w) c0 U$ f: E" _* ^server 127.127.1.0 iburst 3 x' Y2 b" N) @+ ^( `6 S4 \4 S
fudge 127.127.1.0 stratum 10
. {7 v* t- Y, v" G: o; k6 [

/etc/ntp.conf # ceph其他节点   K: V% u2 n1 a
1 E) H! b2 _% G9 S$ y
server ceph-deploy iburst
( Z6 `& o( v. ~! s# V! v9 I6 m3 b8 a

systemctl restart ntpd

其他节点查看
' @9 M, D* ?. I( z8 N- x% [watch ntpq -p ! x6 E$ d3 U/ Y, F. s  v

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

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

cd /etc/yum.repos.d - `, m( u! z( W6 [2 ]5 m
vi ceph.repo

[ceph]
8 G- E- e3 r1 k& y: M) `( p% G% |& Yname=Ceph packages! a7 k! A% o, v$ N7 p
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
" p# i' s2 z& |+ u$ Q) J, denabled=1: q- q" `8 \! X3 N( ^& [, u
gpgcheck=1
% K, W/ b3 s% mpriority=2type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
( r2 k3 @6 {4 d# ^[ceph-noarch]) u, z4 G1 R2 o0 |
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
/ P4 N& {1 \( [  m; V9 `; C$ lenabled=1
" j1 m! \% L6 l; e% ]gpgcheck=1' N6 I' x$ O/ q" I. {
priority=2type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
2 Z6 S9 S- v4 i, G
) X6 A- V, h' g! t6 C4 U

vi epel.repo

[epel]
- }) c; y, d6 v" a4 h( `name=Extra Packages for Enterprise Linux 7 - $basearch5 e. G5 J% d& }8 J
baseurl=http://mirrors.aliyun.com/epel/7/$basearch" _" ^# P' z# ~
        http://mirrors.aliyuncs.com/epel/7/$basearch+ O/ N- l6 T7 l# r  [
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch- w3 n9 [$ V/ @0 M; M7 b) U, |
failovermethod=priority7 |4 N# x) f8 G
enabled=1" E5 u0 f/ z. s: l2 m
gpgcheck=0
. z5 B  T; c- r+ Ogpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

4 j0 ~/ C4 z5 }" Q

3 ?: N- S0 Q8 J% g2 a" }

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

yum install -y yum-utils snappy leveldb gdisk python-argparse gperftools-libs
! @" ~2 s( B+ E5 I6 J6 h/ J6 Y. w" ^" o三、安装ceph-deploy工具

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

yum install -y ceph-deploy5 s0 |) d* v1 Q- P: D7 e

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

mkdir -p /data/ceph/deploy/ n# a- u! n- P+ l, |6 R, `) \

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

ssh-keygen $ k1 H9 j1 g% t) k; J" [6 v
ssh-copy-id ceph-node1
7 e; W6 {& K  _ssh-copy-id ceph-node2
- o9 R( q/ q  {/ sssh-copy-id ceph-node3 $ {0 `' z  P6 h  Y" k1 n* w
ssh-copy-id ceph-client

四、安装ceph集群

1.ceph软件包安装

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

cd /data/ceph/deploy' E# q# d3 m, K; _3 _. f( _) k2 T
7 Y. d+ }5 t6 m+ e4 w
ceph-deploy install --no-adjust-repos ceph-node1 ceph-node2 ceph-node3
7 D. k1 Z9 n, t+ R1 k+ X$ e* j1 X1 ?. J- [

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

ceph-deploy new  ceph-node1 ceph-node2 ceph-node3
; ]9 `) j. ^2 c% F$ c6 ?3 G6 J4 w# N0 o* b

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

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

ceph-deploy --cluster {cluster-name} new {host [host], ...}
* j# O5 O$ ~" |

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
0 `1 ~- N3 O; v9 c3 {1 kosd_pool_default_size = 2
# t4 L/ L: T  v) r0 U# k4 Yosd_pool_default_pg_num = 5127 \" p1 j( I- r& B* N4 v0 _
osd_pool_default_pgp_num = 512
; y& _( O1 t" z4 L: Prbd_default_features = 3
3 j5 d/ {. X4 ?% H% g; L& S8 g: u
; T9 U+ V' U! p% h9 w; _, F$ P

4.添加mons

我们这里创建三个Monitor

ceph-deploy mon create  ceph-node1 ceph-node2 ceph-node3
% ]+ }- I  Q4 j! K, A  Q/ Y' b- `% J5 v: o

上面命令效果如下
* H0 b5 C, q6 S5 Y; j: Aa.write cluster configuration to /etc/ceph/{cluster}.conf 8 G. }7 |$ B0 J- F+ F1 p! c
b.生成/var/lib/ceph/mon/ceph-node1/keyring
$ [/ w& y8 h( J9 S2 q0 g1 @c.systemctl enable ceph-mon@ceph-node1
$ a: }( h- D$ b, z: Q2 wd.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
6 n3 O) {5 C" f# W4 b

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

ceph-deploy forgetkeys! n& y0 w8 x5 d5 W% Q' L

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- j) g- }. x5 _; Q. F9 w  G9 u

可以prepare多个osd
+ m" z. s, D, ~) R( `ceph-node1:sdb:/dev/sdd 意思是在node1上创建一个osd,使用磁盘sdb作为数据盘,osd journal分区从sdd磁盘上划分 " [) M% v2 @7 d4 R. o* E4 ?* x/ i4 u
每个节点上2个osd磁盘sd{b,c},使用同一个日志盘/dev/sdd,prepare过程中ceph会自动在/dev/sdd上创建2个日志分区供2个osd使用,日志分区的大小由上步骤osd_journal_size = 10000(10G)指定,你应当修改这个值
" p4 p/ j4 i8 y$ Y' w8 [4 zprepare 命令只准备 OSD。在大多数操作系统中,硬盘分区创建后,不用 activate 命令也会自动执行 activate 阶段(通过 Ceph 的 udev 规则)

激活osd

# U9 R6 c1 N8 j# A* ]7 ~/ I0 V
ceph-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- G4 Q- l6 g+ Q% s6 G

) B9 R8 m. G/ B2 b9 J$ H6 ~


: {; R: f$ C/ X: i# h2 E

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

  L/ Y9 b1 U6 ^7 q& s

7.验证安装成功

在mon节点执行 ceph -s[root@ceph-node1 ~]# ceph -s% y/ w5 J2 c2 w
    cluster 2ba8f88a-1513-445b-93d0-4ec7717c6777
# w- P5 z8 C% ^/ M( ]     health HEALTH_WARN
# g& E# J( {7 @  Z4 P! }- Y2 W            clock skew detected on mon.ceph-node2, mon.ceph-node3
1 W5 C9 A+ ?1 n! j            too few PGs per OSD (21 < min 30); f) b- z! I/ }5 o
            Monitor clock skew detected 7 p- Q6 Q! t$ `( f* |1 ~
     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}
% M" c% x$ p' F+ I            election epoch 6, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node39 |/ J# S- _% y* e
     osdmap e30: 6 osds: 6 up, 6 in
- x% t* e6 [2 K2 Z, C% d2 a            flags sortbitwise,require_jewel_osds
0 j& i3 l; T/ ?" n# f* G; @      pgmap v63: 64 pgs, 1 pools, 0 bytes data, 0 objects0 s. N2 m& u  D
            201 MB used, 299 GB / 299 GB avail  O& Z; l" c6 K4 b  t0 U
                  64 active+clean
9 |8 W1 d" `2 J1 I' M$ i# D% |显示 HEALTH_WARN too few PGs per OSD (21 < min 30)

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

[root@ceph-node1 ~]# ceph osd pool ls detail
3 i4 t  s* u! r/ y5 v
1 _- N( {4 z  j/ v$ ]: E* V+ Upool 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
, r% q/ l! r& Q9 \0 S5 {% L- O& i7 h  ?- w
9 g- K9 ]7 Z0 T4 O; V


( d* o1 H. w' p8 B/ v4 n! p' Y

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

ceph osd pool create cinder-volumes 128
$ i& i6 E$ k& \  C) r& ]3 I! D
2 }7 T  D+ _& c: M# L7 g; Kceph osd pool set cinder-volumes size 2
4 ?/ E( w6 z3 T: aceph osd pool create nova-vms 128
# L2 X* ?2 t4 D5 ~! i" R' m# ^) A8 y5 h
ceph osd pool set nova-vms size 2
, p, h+ r( f4 A5 {( |0 v1 X6 U7 Uceph osd pool create glance-images 64: `9 v& G# l# J5 a
ceph osd pool set glance-images size 2
$ o+ @- ~& M8 A; o. x/ S4 O. p; lceph osd pool create cinder-backups 64
1 J& @" s2 o7 Y. U9 k4 }, Z% \( Cceph osd pool set cinder-backups size 23 I" d) ~1 i4 `+ w9 q  ?! f5 j, L: V

' b$ U3 R2 }! M+ g2 g3 y' x: S) A

又显示 HEALTH_WARN Monitor clock skew detected

[root@ceph-node1 ~]# ceph -s
3 q9 K' x  B% y    cluster 2ba8f88a-1513-445b-93d0-4ec7717c6777) n  i. o% e- R* Z
     health HEALTH_WARN
- W; r8 u& V9 A) y4 B* f* x9 f            clock skew detected on mon.ceph-node2, mon.ceph-node3
% I! {# w& R2 A. o# o2 [            Monitor clock skew detected
+ e9 e  h1 m* G" R9 @* 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}/ e' V, k" y0 h0 [  y! o
            election epoch 6, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node31 J) a- G0 l& \# O
     osdmap e42: 6 osds: 6 up, 6 in/ Y0 ~. s/ j8 J' c( e0 F# j! O: q
            flags sortbitwise,require_jewel_osds1 c) I% W. ]0 I' r5 c
      pgmap v123: 448 pgs, 5 pools, 0 bytes data, 0 objects- @; s- [# D: ?3 _. X
            209 MB used, 299 GB / 299 GB avail3 K# `+ G9 ~! H3 B4 Y/ v+ ]  P# g
                 448 active+clean. R, j! j# }4 F6 C' Q3 E* l
7 V6 e6 E! w2 m: c& N2 ~

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


" @5 U5 I9 ?& Y2 z( c( H

[root@ceph-node1 ~]# systemctl status ntpd4 E! X& z+ M$ Q- g  B, r0 R3 B

6 R. Q: n& S5 j7 a● ntpd.service - Network Time Service   * d  ]7 W. z5 V' L3 j/ E
          Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)   8 N2 {0 F: k) l  w9 k
          Active: inactive (dead)
8 e/ W) x5 H: n) J8 V4 z1 T- X9 X[root@ceph-node1 ~]# systemctl start ntpd
; @- Y/ N8 Z. V* n: e. I5 o# }/ f6 t/ O# K+ ^7 G" B7 G' B

再次查看集群正常了

[root@ceph-node1 ~]# ceph -s   
: r9 i) [' V' p: y  O7 B% A; h            cluster 2ba8f88a-1513-445b-93d0-4ec7717c6777     1 P3 _3 M" ]" x- [! a# @+ d3 U
             health HEALTH_OK     / J# a' S' v7 K- 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}           7 f' x; `5 Q8 m" _6 O0 v
                            election epoch 10, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3     
9 v5 F1 g& f- n; H, T8 d1 G             osdmap e42: 6 osds: 6 up, 6 in            
, p2 [! V9 f2 q7 a5 c/ U+ I                         flags sortbitwise,require_jewel_osds      5 F; G- C: y; l7 [$ h0 m' }
             pgmap v123: 448 pgs, 5 pools, 0 bytes data, 0 objects            
, p& x2 g. Q6 Z9 W& I5 Q  H                           209 MB used, 299 GB / 299 GB avail                 2 c2 v9 |8 U) G! _
                                 448 active+clean
! ]$ Y2 w* D9 h0 T" l4 A五、Ceph client测试
( S# i0 Z  E2 ~+ X- ]& p4 [

1.准备client节点 5 F9 A6 ^9 w) f( L4 {
通过ceph-deploy节点执行命令:

ceph-deploy  install  --no-adjust-repos ceph-client
* S2 N0 |6 i/ t" @' j  {) R) e5 G! R) j$ I; B
ceph-deploy  admin  ceph-client
& c3 U& |. z; t; U( s
9 Q2 V- B3 m1 u# \$ u, Q% V6 f2 G

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

rbd create  --pool rbd --size 1024 test_image/ A  u2 R, L4 _6 @

查看创建的块设备

rbd list
& c+ C5 ]6 j* g1 ?8 Urbd info test_image( h: K+ I- P: Z) l! j

+ f$ j5 D/ W5 V" g1 L4 f, x, v; E- A8 l

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

rbd map  --pool rbd  test_image
9 ~  I" n3 V$ z& {/ Q! A% o) a

4.查看系统中已经映射的块设备
2 Y* l! \3 }4 N6 w) E* r3 Vrbd showmapped

[root@ceph-client ~]# rbd showmapped% }, Z" L. X# J5 i. A: h* N; k
id pool image      snap device   
2 d- d5 y" ^5 ?$ P& L# j0  rbd  test_image -    /dev/rbd0
% t0 O1 ^' S9 S' R, _  D
7 ?; }. T+ S, {7 ~+ l$ F

5.取消块设备映射
- L: |& p3 L, W" f# Brbd unmap /dev/rbd0

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

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-9-25 23:54:19 | 显示全部楼层
[root@ceph1 ~]# ceph osd tree
1 F0 K  h) |$ X% f" MID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
4 [3 Q6 J3 f- ~! d  z, r& `-1 0.58557 root default                                     1 p8 Z+ G0 ~  q  W
-2 0.19519     host ceph1                                   " ~: O, d- E& I$ y0 H+ d
0 0.09760         osd.0       up  1.00000          1.00000
* F9 u+ {, F% y7 a* A$ P' O 1 0.09760         osd.1       up  1.00000          1.00000
% p, A0 J: h: w7 j( g-3 0.19519     host ceph2                                   
" `5 B1 F5 }; z$ y$ `( t# ^2 h 2 0.09760         osd.2       up  1.00000          1.00000
7 c& z8 K1 I0 t( g% w& v+ O# V4 Q- M 3 0.09760         osd.3       up  1.00000          1.00000
4 |( P: x7 m! `$ h& W-4 0.19519     host ceph3                                   0 E: V, N! o" h* `# @8 r9 x
4 0.09760         osd.4       up  1.00000          1.00000
4 m; j4 t7 [8 w+ @/ Z9 T' t 5 0.09760         osd.5       up  1.00000          1.00000 8 U( r3 v% R* b6 i: f3 M
[root@ceph1 ~]# ceph mds stat/ T/ Z4 K- n7 q5 x. \! O$ V
e1:. D2 X; E  Y, l: G/ s

. b; ]7 l1 ]: [% i3 q[root@ceph1 ~]# ceph -s
% V) [0 I2 k2 c+ K! I) W. \" Q6 _    cluster fbe2dad5-5566-4e95-9fed-f8edbdcfeeb6- s$ j( U+ t3 `$ }+ \
     health HEALTH_OK
0 A7 C- B+ d: Z" U; h8 S     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}
- ^" @7 P. K3 v$ W8 E, v            election epoch 6, quorum 0,1,2 ceph1,ceph2,ceph33 K, d4 o: `* M1 A" J1 s8 ~* G+ `
     osdmap e44: 6 osds: 6 up, 6 in  a" G% A$ a5 B& Y
            flags sortbitwise,require_jewel_osds6 D3 x& _, _* m( v8 v! b6 P
      pgmap v176: 448 pgs, 5 pools, 16 bytes data, 3 objects
$ e  K- R$ v: N* a+ `            651 MB used, 599 GB / 599 GB avail
0 Q/ }) k2 O* a9 z                 448 active+clean
$ ~( s  i/ e# N+ A: i. }5 w' G9 F) h
在这过程中,失败和反复是难免的,在任何时候,可以使用如下的命令将已有的配置擦除然后从头安装:
( }$ I% Y& m! k! O% H  I2 Q
1 _' y1 Y2 h1 ^2 ^& m. F' ^, q& @6 h( ]ceph-deploy purge ceph{1,2,3}
. |: \, d& V7 Z1 R- }ceph-deploy purgedata ceph{1,2,3}
& ]% S( J2 B* Q/ aceph-deploy forgetkeys

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-9-26 09:01:34 | 显示全部楼层
Ceph 分布式存储集群有三大组件组成,分为:Ceph Monitor、Ceph OSD、Ceph MDS,后边使用对象存储和块存储时,MDS 非必须安装,只有当使用 Cephfs 文件存储时,才需要安装。这里我们暂时不安装 MDS。0 T3 J  H" J: J, w6 t0 N  V
3、Ceph 预检
0 k; `5 T( y& w' m; d3.1 配置节点Host) M8 g  K0 t; [# R+ p8 G
为了方便后边安装,以及 ssh 方式连接各个节点,我们先修改一下各个节点的 Hostname 以及配置 Hosts 如下:
" Z9 ~& U+ j2 dadmin-node (10.222.77.213)
  }3 O. G& k$ y6 J% r* A  A! X: G, j* K- A
+ V$ I/ f# c% f$ cat /etc/hostname . K4 {0 w' I, u: q( ~7 K# }
admin. k3 s, p6 ~4 f9 b& o

" l) z6 a! d  t1 r% B$ cat /etc/hosts$ K  p( |+ A. ?, z0 A
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4( Q% i$ P$ L+ T) D& X. F/ t& B% a
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6" i  n6 c% d0 c" Y; \& q0 r! ]
10.222.77.213 admin
  J9 S# D+ _$ u! _) u3 U10.222.77.242 node0
5 @4 Q. X: r' \3 Z: V! `10.222.77.253 node13 N; ]7 g; q' ~* G4 h0 [6 I
, w8 y2 ]% w6 t& N! A4 _, h
-----------------------------9 v0 j( X3 X& E1 O1 b
node0(10.222.77.242) . v1 c0 o' p% R
$ cat /etc/hostname 6 t! Q! c" q% r  L3 Z, f
admin: H5 F  e; ]: B( u& ], T  b
% t7 I' N4 A+ a# U
$ cat /etc/hosts1 W: [' }5 f( ?5 f$ l0 \  K6 Z
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
7 e  S6 M* _, I/ d. p7 N::1         localhost localhost.localdomain localhost6 localhost6.localdomain6, T; R4 j# V' _! E& O" W% W
10.222.77.242 node0; l" M' P! P$ ]7 u$ I
10.222.77.213 admin  I7 y: T" m7 E9 C9 h
10.222.77.253 node1
0 U$ T. |8 @2 {& c1 v4 A* p, p& [3 G
4 {! J9 \# q& a8 O-----------------------------" G" Q( g$ p$ Z+ l
node1(10.222.77.253)
$ Y$ e) n6 `" _  j7 s6 X1 ?( S$ cat /etc/hostname
0 N0 ]- @3 T* K$ Y! x1 D( Jadmin# ]  N) l1 \  R2 A. e' `
" ^5 o/ w( U" x: N2 N9 |
$ cat /etc/hosts
# m! E& _5 ]( s, Y127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
& r3 R' u6 f  {9 i0 s::1         localhost localhost.localdomain localhost6 localhost6.localdomain65 W3 ]0 e% Q) W
10.222.77.253 node15 K9 H/ |# @( Z1 p, q# y
10.222.77.213 admin
2 c- w! y+ c, Q" P8 a6 m4 N10.222.77.242 node08 X/ d4 g9 j3 v
3.2 安装部署工具 ceph-deploy
2 \0 D6 _. M' K6 P- o" mCeph 提供了部署工具 ceph-deploy 来方便安装 Ceph 集群,我们只需要在 ceph-deploy 节点上安装即可,这里对应的就是 admin-node 节点。把 Ceph 仓库添加到 ceph-deploy 管理节点,然后安装 ceph-deploy。因为系统是 Centos7 版本,所以配置如下:3 b, O% X9 p8 Z9 Y% R' A1 E( i' @
# ceph-deploy (admin-node) 上执行/ S8 t$ X, L: \) E7 N2 B
3 Z2 x$ N9 V) V- U6 \, V& g8 z
# yum 配置其他依赖包) c. H: i# X1 ?# S$ i
$ 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*4 }: s& [0 M: E' T. y

; X! w2 {4 m& p. b# {4 T7 y# 添加 Ceph 源. Z/ N# D4 @% q$ J% \+ }# y$ O" j
$ sudo vim /etc/yum.repos.d/ceph.repo
% u+ @8 f4 Q# t* p4 s! O5 Q- I8 t[Ceph-noarch]7 C1 Q; ~' g+ k" m: _( o; f
name=Ceph noarch packages
$ m) `  \% Q) g4 {4 f" Abaseurl=http://download.ceph.com/rpm-jewel/el7/noarch  e5 b! E  M7 }
enabled=1- T! x! G' s& [7 d% _' u: `! T! D
gpgcheck=11 F. h5 v$ p5 W0 x' b5 {- ]: t
type=rpm-md9 }7 u2 h. {: M3 s
gpgkey=https://download.ceph.com/keys/release.asc& l" @3 ~7 F- x, a6 M
priority=1" ?1 t, w' ]- x  c2 o% |' c
. p7 h# {3 y/ i/ V, o( q
# 安装 ceph-deploy$ l$ I0 }: I5 ]" C0 y
$ sudo yum update && sudo yum install ceph-deploy
! y/ ]: v, y* m3.3 安装 NTP 和 Openssh
% Y  S4 ^$ Y3 v2 B  d! p官方建议在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),以免因时钟漂移导致故障。
  F6 _6 a! @' C* C% i4 J0 g: M5 m# yum 安装 ntp3 W5 Z) W5 z# O8 o/ {
sudo yum install ntp ntpdate ntp-doc
' W" I- V3 H( g; y$ u: u1 K+ E
' O' D( d( t& W& V. }( k# 校对系统时钟- u2 K6 V5 N0 {
ntpdate 0.cn.pool.ntp.org
; h$ |# Q# g/ s: G5 D- G后续操作,ceph-deploy 节点需要使用 ssh 方式登录各个节点完成 ceph 安装配置工作,所以要确保各个节点上有可用 SSH 服务。
  m, W6 J/ u- o# z  \' x# yum 安装 openssh9 U) |7 b" a4 `8 B
$ sudo yum install openssh-server
* I, _2 a" q# w
; ?1 i3 W+ j1 X; C' J' p# 查看 ssh 版本
4 H! S! m$ P# P8 }$ ssh -V  q2 k# ~6 m1 ~% b7 u% w
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
' ?7 S" P5 M$ R4 S+ T3.4 创建 Ceph 部署用户
8 l( u* j* x5 Y; z2 p: [ceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。官方建议所有 Ceph 节点上给 ceph-deploy 创建一个特定的用户,而且不要使用 ceph 这个名字。这里为了方便,我们使用 cephd 这个账户作为特定的用户,而且每个节点上(admin-node、node0、node1)上都需要创建该账户,并且拥有 sudo 权限。6 Q% G% ?: _8 Y5 P/ g# c
# 在 Ceph 集群各节点进行如下操作8 b  [3 \- [0 K& Y  w: B5 Z
6 z, m/ v0 {" o1 [/ {0 R4 I4 J( E
# 创建 ceph 特定用户
8 f- C9 |6 H" m) m) ?$ sudo useradd -d /home/cephd -m cephd
- B& K6 L3 h. B" O$ sudo passwd cephd
" w  w$ \: _% [! b7 @% r' Q4 p" k  |. b# F5 E! U) J) ^  d
# 添加 sudo 权限3 {) H, j' \' y# l) `
$ echo "cephd ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephd5 ?5 R) u3 W2 D& o1 X$ [8 B9 B$ [
$ sudo chmod 0440 /etc/sudoers.d/cephd. h) ]& k, L* |% f4 x
接下来在 ceph-deploy 节点(admin-node)上,切换到 cephd 用户,生成 SSH 密钥并把其公钥分发到各 Ceph 节点上,注意使用 cephd 账户生成,且提示输入密码时,直接回车,因为它需要免密码登录到各个节点。
! y1 R; G# M7 T9 n# ceph-deploy (admin-node) 上执行
' q0 @5 p) _" n
+ I; |) {& \+ v* {6 f- H; _# 生成 ssh 密钥1 }; x( j6 }, @7 R9 J1 M' m
$ ssh-keygen, F$ Y4 L( t7 _8 [
Generating public/private rsa key pair.
( S9 G  J9 J) e4 dEnter file in which to save the key (/home/cephd/.ssh/id_rsa):
: T' r' G2 h7 w+ @0 QCreated directory '/home/cephd/.ssh'.; a- K6 j' m2 E0 c! W+ }
Enter passphrase (empty for no passphrase): . T& w$ p* n, l2 b5 o  ?6 K. N
Enter same passphrase again:
: x6 j* a, L* \( n! x5 g. hYour identification has been saved in /home/cephd/.ssh/id_rsa.1 a8 e$ |- M# ]3 w& W
Your public key has been saved in /home/cephd/.ssh/id_rsa.pub.
% w8 q, L; e% U# ]6 c1 i/ Z6 p& fThe key fingerprint is:
+ m) A7 J0 I- ^7 q; b...
6 ^9 J0 r0 H. L5 @( s2 h
6 W. H3 S$ O, ?8 t0 x# 将公钥复制到 node0 节点. D  v  P! G- ~! @1 f6 u
$ ssh-copy-id cephd@node04 b- b1 e; ], n: K6 G
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cephd/.ssh/id_rsa.pub"
8 ^0 R' n: ~7 R3 y" D# Q8 o- DThe authenticity of host 'node0 (10.222.77.242)' can't be established.# l9 l. M9 A- E
ECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.
2 c, \6 W  j1 a, XAre you sure you want to continue connecting (yes/no)? yes
1 G# b# \% x0 H: O2 v: \& p/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed5 v; G. W7 u0 k2 q! B- _
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys3 O9 x6 W- `9 K' p5 L5 d
cephd@node0's password:
% W5 c% E, |; o' N
8 [4 m7 q) F" T" \; G5 ]3 `Number of key(s) added: 1& i" I8 J, W# m% [

3 ]' m) _9 I' K3 Q) SNow try logging into the machine, with:   "ssh 'cephd@node0'"  j7 U  Z" c/ g* b' @- u" c
and check to make sure that only the key(s) you wanted were added./ {  N9 `* R. }( [; L  `

4 W  `) x% Y  x0 e6 M! @# 将公钥复制到 node1 节点. n9 {+ v7 |) V2 {4 C
$ ssh-copy-id cephd@node1
3 r2 H/ B9 \3 {' a1 [1 U5 h" [/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cephd/.ssh/id_rsa.pub"
) h& {6 a4 [' F/ LThe authenticity of host 'node1 (10.222.77.253)' can't be established.* r# I" v8 [# U; P
ECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.# e* C/ a  m, X
Are you sure you want to continue connecting (yes/no)? yes- g& q8 N4 \; r: N6 B$ _
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed" v' t$ g( S( U
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
1 Q  ^  L# v+ b0 _cephd@node1's password: ( y9 H& V+ b! e$ n% {+ c" s
1 x% @7 L- T; J9 E; M
Number of key(s) added: 1
, a  z3 m  I4 X$ N& b8 o* ]+ O6 ^
: I, d3 N! C) _0 T. v1 L5 NNow try logging into the machine, with:   "ssh 'cephd@node1'"  M) L3 [! R+ e  S7 l0 L: \; p' ~% N. K
and check to make sure that only the key(s) you wanted were added.! V7 h, B6 A% T$ S7 i/ x
复制完毕,测试一下在 ceph-deploy 管理节点免密码登录各个节点。3 J4 c5 Z5 B4 k* t2 F
$ ssh node0& F+ W* Z' Q9 r2 H( M# B9 r6 |
Last login: Fri Dec  8 15:50:08 2017 from admin9 B8 ?3 [/ U4 c& P9 \/ j9 i# }

. E3 N9 V8 L- d  p! P$ ssh node1' U  S" N+ Q$ `/ ?9 T& O% F
Last login: Fri Dec  8 15:49:27 2017 from admin
' }) M6 k7 r2 K$ D测试没有问题,接下来,修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样无需每次执行 ceph-deploy 都要指定 –username cephd 。这样做同时也简化了 ssh 和 scp 的用法。
9 x2 |, T/ g5 w$ I! \$ cat ~/.ssh/config
- I9 D- g2 k. vHost node01 k  w1 `0 ]' N/ t, h
   Hostname node0; w! _. ~6 V  ?3 c9 {' Q( R8 e
   User cephd
  `4 N; {1 B2 V7 j. WHost node1
5 Q, j  `+ X3 R9 C) z+ T   Hostname node1
5 F+ t# ^  x7 m; E9 X0 i& S   User cephd
0 }3 V2 g) y/ z$ D$ L% v! R; R注意,此时再执行 ssh node0 会提示报错 Bad owner or permissions on /home/cephd/.ssh/config。原因是 config 文件权限问题,修改权限 sudo chmod 600 config 即可解决。
7 n. w8 M% O0 Y+ S9 z# \3 a3.5 其他网络配置+ [, f8 |  N/ k/ D
官网文档中指定 Ceph 的各 OSD 进程通过网络互联并向 Monitors 上报自己的状态,所以要保证网络为开启状态,不过某些发行版(如 CentOS )默认关闭网络接口。所以我们需要保证集群各个节点系统网络接口是开启的。
/ ~. C4 D4 O& m+ U! Y2 {! k# 在 Ceph 集群各节点进行如下操作+ H* o5 ~( Z9 h/ h: x, \2 D
$ _4 e7 ]+ B$ D6 l
$ sudo cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
) G3 d1 V; E' P0 h( bTYPE="Ethernet"
$ D$ Q( e1 f6 ^BOOTPROTO="dhcp"# J  W. h0 @  |$ J- k
DEFROUTE="yes"
7 }3 O/ X/ ~; {% n/ xPEERDNS="yes"% A8 Z- H9 Z* R$ t9 J" G4 Z) e0 c9 C
PEERROUTES="yes"$ E, q8 }/ y* M6 |
IPV4_FAILURE_FATAL="no"
9 O" ?  o, F( b* N# C) o8 w, aIPV6INIT="yes"
# }8 Q0 l+ f: J- A7 `* c9 Q& ]8 LIPV6_AUTOCONF="yes"3 D8 Y1 @1 L% ?+ ?2 `; G. Q
IPV6_DEFROUTE="yes") R& o" R  b3 h1 V+ V
IPV6_PEERDNS="yes"
: J9 s- Z6 {3 [% ~) ]! p3 N7 ZIPV6_PEERROUTES="yes"
/ \* ]5 G3 G2 Y0 U6 |6 ~* e( GIPV6_FAILURE_FATAL="no"& p, A% i( z( ^: a
IPV6_ADDR_GEN_MODE="stable-privacy"4 C0 E6 W5 S; @: B. X0 ]
NAME="enp0s3"# j+ W( O* q7 A* K3 O9 U
UUID="3e68d5a3-f9a6-4c83-9969-706f7e3b0bc2"
& Q. p2 {1 M! [, NDEVICE="enp0s3"9 U1 }% }' W5 C/ S0 h- G
ONBOOT="yes"  # 这里要设置为 yes; l; E& c6 B9 Y$ q4 r5 O
注意:这里因为在我安装的虚拟机集群中网卡为 enp0s3,所以需要修改 /etc/sysconfig/network-scripts/ifcfg-enp0s3 文件,请根据自己系统网卡名去修改对应配置文件。) p6 I7 k: L& O1 O3 w. ]& G$ h7 G
SELINUX 设置,在 CentOS 系统上, SELinux 默认为 Enforcing 开启状态,为了方便安装,建议把 SELinux 设置为 Permissive 或者 disabled。
2 `! X( E4 O' f. C# 在 Ceph 集群各节点进行如下操作9 e# r9 w& O; M& H5 T2 H
, E" U$ n6 E4 ~
# 临时生效设置
' M) o9 A, c+ O; S$ sudo setenforce 0
, B/ S. W* r* o2 ?9 ]# k
* i* x) b& R5 f; }8 T# @# 永久生效设置. ~5 K) Q4 j1 k8 P2 ?
$ sudo cat /etc/selinux/config" t1 _) k5 q# \+ E
SELINUX=disabled  # 这里设置为 Permissive | disabled; C/ R0 U4 Y- u% F
SELINUXTYPE=targeted ) J9 I0 a7 i) G  s% ~  m7 L* n# {
开放所需端口设置,Ceph Monitors 之间默认使用 6789 端口通信, OSD 之间默认用 6800:7300 这个范围内的端口通信,所以我们需要调整防火墙设置,开放所需端口,允许相应的入站请求。
1 w) \( n2 P) B6 w4 {# 防火墙设置
* A$ v  G% F3 I1 Q4 \. T9 l$ sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent- {2 g9 x% z4 q$ G8 M& D
0 n5 J* t/ P8 v6 `) `# R, o
# 当然我们也可以关闭防火墙
+ g' I) l! J/ P" j, L$ sudo systemctl stop firewalld.service  #停止 firewall
0 P% c" p8 `4 l0 R5 m$ sudo systemctl disable firewalld.service  #禁止 firewall 开机启动$ x4 A% ^6 D2 m! }
4、Ceph 存储集群搭建
% p% {0 O0 Z, g好了,经过上边一系列的预检设置后,我们就可以开始 Ceph 存储集群搭建了,集群结构为 admin-node (ceph-deploy、Monitor)、node0(osd.0)、node1(osd.1)。首先要提一下的是,如果我们在安装过程中出现了问题,需要重新操作的时候,例如想清理我搭建的这个集群的话,可以使用以下命令。
. K0 b0 l4 g7 c/ e4 f" e; f# ceph-deploy (admin-node) 上执行7 Q) s$ @  d! G  E$ z
1 O' g$ r8 }3 ~+ W0 f2 u
# 清理配置& }$ V1 U' M6 ^" o! Z% e9 f
ceph-deploy purgedata admin node0 node1
$ P4 _* p# D0 h+ t* ~  G; W' dceph-deploy forgetkeys& r7 \3 R# ?2 V" J  L' L
) o5 o$ u$ P9 f9 X
# 清理 Ceph 安装包
( [. M" f1 a) r1 v! u5 H' }* Bceph-deploy purge admin node0 node1
- N4 _2 O# e7 i) k/ G好了,现在开始搭建。首先 Cephd 用户创建一个目录 ceph-cluster 并进入到该目录执行一系列操作。因为我们设计的 monitor 节点在 admin-node 节点上,所以,执行如下命令。' }: k3 d" {9 i8 C5 p
# 创建执行目录
, `) j$ J7 p) R0 V. Y9 x0 ?$ mkdir ~/ceph-cluster && cd ~/ceph-cluster
% E6 L1 }. _/ G, U7 V
. z+ b1 x/ o1 l# 创建集群9 k; q, V8 J: N- T
$ ceph-deploy new admin) K8 n: ?+ S2 O: q! l# [
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf: \' g: F  n9 h" j. `1 U
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy new admin3 A( _* k0 W  L6 O
[ceph_deploy.cli][INFO  ] ceph-deploy options:
: f2 v  E! ^8 t, p[ceph_deploy.cli][INFO  ]  username                      : None% w: A6 ^% ]0 E2 q
[ceph_deploy.cli][INFO  ]  func                          : <function new at 0xf24938>
5 [0 V6 \3 c; m% T+ k! U* {: y) S[ceph_deploy.cli][INFO  ]  verbose                       : False6 B) [6 X3 t$ p; `9 ~6 Q
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False; P( l, q5 ~; Z: O4 [$ B0 Q
[ceph_deploy.cli][INFO  ]  quiet                         : False1 K5 D" F$ r- K: M0 k! p
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xf1f6c8>
3 S1 C& g& t. Z7 ^% `0 ]! W[ceph_deploy.cli][INFO  ]  cluster                       : ceph* K4 e/ X3 B" ]; N
[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
( v* _, ^; S2 T# ]- c[ceph_deploy.cli][INFO  ]  mon                           : ['admin']
5 v( m% @, J) J3 E4 [$ k[ceph_deploy.cli][INFO  ]  public_network                : None+ H7 d/ h: M# p$ ^( Y4 u( x! W2 H
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
2 l+ J1 A+ ?3 G[ceph_deploy.cli][INFO  ]  cluster_network               : None1 M6 s& G$ n* p3 J/ x: A* x$ J
[ceph_deploy.cli][INFO  ]  default_release               : False
- O" Y$ M: @/ a# d0 n' E+ c3 r& i6 z[ceph_deploy.cli][INFO  ]  fsid                          : None
0 `- r" y5 `( a[ceph_deploy.new][DEBUG ] Creating new cluster named ceph$ O: _2 {# U4 b% f% Q
[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
! C, R  F* o$ `4 V...
% x" \7 u2 B$ I; _[ceph_deploy.new][DEBUG ] Resolving host admin
! ~+ `% U" J* z[ceph_deploy.new][DEBUG ] Monitor admin at 10.222.77.2136 h+ M: A  X5 z  \
[ceph_deploy.new][DEBUG ] Monitor initial members are ['admin']- n& n+ W8 j; V% f  ]3 J
[ceph_deploy.new][DEBUG ] Monitor addrs are ['10.222.77.213']3 }. y# ]) F8 S, W
[ceph_deploy.new][DEBUG ] Creating a random mon key...
4 M7 o; j6 S8 `& s[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...
( }! u/ f5 Z( z- s, O[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...) [# a) T% I1 g0 Q
此时,我们会发现 ceph-deploy 会在 ceph-cluster 目录下生成几个文件,ceph.conf 为 ceph 配置文件,ceph-deploy-ceph.log 为 ceph-deploy 日志文件,ceph.mon.keyring 为 ceph monitor 的密钥环。2 \9 s/ S) y+ j+ m) D  X$ D
$ ll ceph-cluster
) H5 G: @$ ]! X* C-rw-rw-r--. 1 cephd cephd  196 12月  7 14:46 ceph.conf  q6 w/ w, ^+ W9 I* N0 w6 e( Q
-rw-rw-r--. 1 cephd cephd 3694 12月  7 14:46 ceph-deploy-ceph.log' A: l6 ?0 Q* H# h! `3 p$ C
-rw-------. 1 cephd cephd   73 12月  7 14:46 ceph.mon.keyring
" b  |- W  G0 b% S" G: ^
  @4 ]1 ?  M: H0 e/ l$ cat ceph.conf $ s9 x+ _$ A: @! E7 D- {
[global]
* p0 |% m8 i) f7 L; p% a7 kfsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26/ |  @2 F! l( d0 P. ?9 ~6 p
mon_initial_members = admin2 b( y4 h: l  w. ?6 Z* C. ?
mon_host = 10.222.77.213
6 z% M0 f8 Y5 C  Sauth_cluster_required = cephx! z0 r% e6 K/ W% A7 k: N
auth_service_required = cephx
3 ~* P8 R) c& q" `8 Q3 yauth_client_required = cephx$ r( t( [' ^1 W9 S, O7 e
接下来,我们需要修改下 ceph.conf 配置文件,增加副本数为 2,因为我们有两个 osd 节点。
( M7 N( T6 o( u' z7 B( U. b3 G& k9 l$ cat ceph.conf ! `0 |0 ^: R$ J, I% z
[global]" R1 h5 W6 {5 [& u+ r6 C6 |* ^
fsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
9 m/ `  C. ~3 e& i! V7 n  _2 Q- wmon_initial_members = admin% T" ^) |& ]: I8 P( k5 I$ k0 ]4 W8 @
mon_host = 10.222.77.213
4 `, U, t' F, _; `% n" w3 ^! X3 hauth_cluster_required = cephx
( [6 z- |$ W; Eauth_service_required = cephx; K/ T% E+ ~1 f
auth_client_required = cephx( v2 O1 ~, B# P3 B; Y
osd pool default size = 2  #增加默认副本数为 2
' t3 S# D" M, o) T/ ]9 V! B+ A然后,我们需要通过 ceph-deploy 在各个节点安装 ceph。
$ a3 d6 P. {, T7 R) U$ ceph-deploy install admin node0 node1
6 G' L" V$ \) Q8 s; d: J[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
! Y( Q- ~" M  o, g, b8 n9 U[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy install admin node0 node1
. F  S4 A7 ^# f2 ]% v[ceph_deploy.cli][INFO  ] ceph-deploy options:
/ D# d: n( i% f: o2 ?3 u; X[ceph_deploy.cli][INFO  ]  verbose                       : False
$ R- I/ Z3 I7 m2 S$ G" k, w[ceph_deploy.cli][INFO  ]  testing                       : None' K/ m- \# l( i' }
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xde1c68>
% T5 Z* h5 y; I: o, W[ceph_deploy.cli][INFO  ]  cluster                       : ceph) j9 w  l- q) N3 ?/ ~3 {
[ceph_deploy.cli][INFO  ]  dev_commit                    : None
9 M) c; N3 @5 X, i[ceph_deploy.cli][INFO  ]  install_mds                   : False) s0 k; M$ i/ U
[ceph_deploy.cli][INFO  ]  stable                        : None* A. ?* y! I$ B; s+ k
[ceph_deploy.cli][INFO  ]  default_release               : False9 }  F" j5 U* y  }
[ceph_deploy.cli][INFO  ]  username                      : None
$ D1 Z0 j- {0 v- p; _4 f[ceph_deploy.cli][INFO  ]  adjust_repos                  : True& D3 G# a4 n8 B% I
[ceph_deploy.cli][INFO  ]  func                          : <function install at 0xd5b140>
) W) Q% b4 ~! W6 |0 D  C% z[ceph_deploy.cli][INFO  ]  install_mgr                   : False
' z( |, ^1 q! ^' H! J- n- O[ceph_deploy.cli][INFO  ]  install_all                   : False4 T9 }5 e) y6 K% b1 E" E+ n
[ceph_deploy.cli][INFO  ]  repo                          : False( {, L! D! {4 w& W9 e( b
[ceph_deploy.cli][INFO  ]  host                          : ['admin', 'node0', 'node1']
3 A2 {- Y+ r, A) k/ T6 N7 a. L[ceph_deploy.cli][INFO  ]  install_rgw                   : False
9 N) b+ V! d: c5 Z* c" ]) h$ D/ ~+ O[ceph_deploy.cli][INFO  ]  install_tests                 : False
7 P3 b/ {! a. e4 |4 Y2 C[ceph_deploy.cli][INFO  ]  repo_url                      : None
# u* P2 z4 m( D[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
! n8 ~3 w! F$ U3 J9 w' h[ceph_deploy.cli][INFO  ]  install_osd                   : False$ c, S7 d- ~9 h# b, l1 Y  B
[ceph_deploy.cli][INFO  ]  version_kind                  : stable* d7 u" ]1 D* O' U0 W
[ceph_deploy.cli][INFO  ]  install_common                : False- V$ a' p# k; Y
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False" \! f% n& a3 d
[ceph_deploy.cli][INFO  ]  quiet                         : False$ e4 E, J8 P8 A( I- u
[ceph_deploy.cli][INFO  ]  dev                           : master8 x. F# r) ]4 H
[ceph_deploy.cli][INFO  ]  nogpgcheck                    : False
( @: P9 U+ G. `. y/ w( M: z/ K0 G[ceph_deploy.cli][INFO  ]  local_mirror                  : None
* _% D8 E) S5 z  v- Y  U[ceph_deploy.cli][INFO  ]  release                       : None
+ C  s' U1 M/ V. m9 Y- x( c7 w[ceph_deploy.cli][INFO  ]  install_mon                   : False1 S" ~. ^7 H% ?6 {8 w3 Y
[ceph_deploy.cli][INFO  ]  gpg_url                       : None3 E" w8 V1 k6 R3 }* ^
[ceph_deploy.install][DEBUG ] Installing stable version jewel on cluster ceph hosts admin node0 node1! f( B6 a, z: D' C. X
[ceph_deploy.install][DEBUG ] Detecting platform for host admin ...
+ @2 g3 A& ]" ?: D...8 f& j$ D# N+ k9 v' w6 j
此过程需要等待一段时间,因为 ceph-deploy 会 SSH 登录到各 node 上去,依次执行安装 ceph 依赖的组件包。3 m& R# |/ ^. Z# J; h9 M- J
漫长的等待安装完毕之后,接下来需要初始化 monitor 节点并收集所有密钥。; y7 r! K% J& M. p+ {7 i/ M* b( m
$ ceph-deploy mon create-initial
0 l* b3 Z! l- B7 ~3 R+ _+ u...
. _  J7 D' ?1 x0 S7 bceph_deploy.mon][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite! o- b. N0 j& ?* X% `+ j- r+ A
[ceph_deploy][ERROR ] GenericError: Failed to create 1 monitors, s0 h9 f1 ?) G- ~% Y3 J6 m7 Z7 [" \
...
, d* v0 ]8 {2 K: i7 g不过很遗憾,执行过程中报错了。查看原因应该是已经存在了 /etc/ceph/ceph.conf 配置文件了,解决方案就是加上 --overwrite-conf 参数,覆盖已存在的配置。
' d4 ]7 B3 m" _; t6 P% k0 M# k$ ceph-deploy --overwrite-conf mon create-initial
: R. j/ T) Y* m# Z0 A[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf% O% Y, i/ h) ?2 ^: f
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy --overwrite-conf mon create-initial) c) p" M/ Q+ F% A* K8 g
[ceph_deploy.cli][INFO  ] ceph-deploy options:
4 R7 Q/ j4 J3 h3 A! W& o: O1 N[ceph_deploy.cli][INFO  ]  username                      : None+ {- O/ ]: L1 o0 l
[ceph_deploy.cli][INFO  ]  verbose                       : False6 ?6 \! C8 B# C% T
[ceph_deploy.cli][INFO  ]  overwrite_conf                : True
" h1 R' q8 z, p+ }/ t  r6 L% @[ceph_deploy.cli][INFO  ]  subcommand                    : create-initial7 O1 T# `8 T$ V0 T5 C% B6 s
[ceph_deploy.cli][INFO  ]  quiet                         : False2 S/ n" |# e  d) [6 ~
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x1d9e758>
& G6 P# ~; F4 S) A. i) j& Q0 p[ceph_deploy.cli][INFO  ]  cluster                       : ceph
  D' q$ V: ]( K* Z- r) X$ u& V$ Y[ceph_deploy.cli][INFO  ]  func                          : <function mon at 0x1d8ea28>
9 y  ^9 a8 |/ j' b! Y% j; ?& Q[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
1 I) H7 ?/ u3 F: \[ceph_deploy.cli][INFO  ]  default_release               : False
& c" a7 n" _6 E. M4 o[ceph_deploy.cli][INFO  ]  keyrings                      : None8 G# e* V% Q: j! U5 h; D3 n
[ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts admin* a% G) V9 F! v+ V1 X, T
[ceph_deploy.mon][DEBUG ] detecting platform for host admin ...5 N) {: q" z* M: h/ E% U% n
.... {. K: P, C; i
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.admin.asok mon_status
( D, N8 Z2 j) Y8 N, z2 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.admin/ D0 ?+ q- ?0 p  P; N
[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
- H' q- R$ h+ u# w0 ]2 m% ^4 _[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" M0 [2 S0 ?* l; u0 x5 ^
[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-mgr
6 O6 M/ ?* @: u( F; x6 W$ C% m[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) N, v2 j/ W( _  P
[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
5 c9 S' G0 h5 E4 \8 Q[ceph_deploy.gatherkeys][INFO  ] Storing ceph.client.admin.keyring: F* D1 u: Y* E! `( ?) N2 ~0 A
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mds.keyring
4 Z9 Q' ]* _- H6 |& C: Y[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mgr.keyring/ J* V/ I* _: p8 Y& Z- H- `8 V1 U
[ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.mon.keyring' already exists, k4 z7 P# B/ s* W
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-osd.keyring
/ D* F( ]8 m+ P5 c) V1 V) U9 w[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-rgw.keyring
6 s9 K: ^2 u! G2 G. h8 W/ O[ceph_deploy.gatherkeys][INFO  ] Destroy temp directory /tmp/tmpLv4mug8 R) J( |! |7 B" a9 Q# A, Y5 K
执行完毕后,会在当前目录下生成一系列的密钥环,应该是各组件之间访问所需要的认证信息吧。0 x& \6 N% K7 y5 A
$ ll ~/ceph-cluster: M% E3 [1 g0 ^" ]' S, {
-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-mds.keyring: B0 Z8 y" _/ ~- t$ K: Y
-rw-------. 1 cephd cephd     71 12月  7 15:13 ceph.bootstrap-mgr.keyring& y0 E- |' c  J* j/ ^
-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-osd.keyring4 t+ ?7 l/ A9 C9 r* Q8 U
-rw-------. 1 cephd cephd    113 12月  7 15:13 ceph.bootstrap-rgw.keyring& T6 R% t) {! r# Z2 U- d1 X
-rw-------. 1 cephd cephd    129 12月  7 15:13 ceph.client.admin.keyring
0 A* N6 U& ^, Q8 F-rw-rw-r--. 1 cephd cephd    222 12月  7 14:47 ceph.conf# B7 g- n! e# K6 ]. z. p& u
-rw-rw-r--. 1 cephd cephd 120207 12月  7 15:13 ceph-deploy-ceph.log
' P1 l( W7 _- K; R' g6 J+ s) l-rw-------. 1 cephd cephd     73 12月  7 14:46 ceph.mon.keyring
* \, ], y+ }: t) e% g到此,ceph monitor 已经成功启动了。接下来需要创建 OSD 了,OSD 是最终数据存储的地方,这里我们准备了两个 OSD 节点,分别为 osd.0 和 osd.1。官方建议为 OSD 及其日志使用独立硬盘或分区作为存储空间,不过本机虚拟机上不具备条件,但是我们可以在虚拟机本地磁盘上创建目录,来作为 OSD 的存储空间。
) _- `$ a( F/ z0 P# ceph-deploy (admin-node) 上执行: K/ }( k' t3 @( Z+ Y/ C; \5 Q
1 r5 {  T/ Z* T4 O7 k
$ ssh node0
. \- O8 x. U4 g1 _* N) @& y$ sudo mkdir /var/local/osd0. {; V, i/ ^& i  L0 h
$ sudo chown -R ceph:ceph /var/local/osd0+ K1 q1 [$ R: ~. y6 |3 ]( I' o9 W
$ exit
; k$ L3 t7 ~! a
# M- Q; F# Q% Q# f) `$ ssh node1
& q  _4 @% n2 q# f7 \% Z; `$ sudo mkdir /var/local/osd1! ^6 f( f9 S& o  T! p7 A" Y
$ sudo chown -R ceph:ceph /var/local/osd1
4 A% @  H* I7 f+ Y+ ^2 Q. x$ exit
" ^6 ?4 g2 \3 a  X1 x. I+ f注意:这里执行了 chown -R ceph:ceph 操作,将 osd0 和 osd1 目录的权限赋予 ceph:ceph,否则,接下来执行 ceph-deploy osd activate ... 时会报权限错误。' i5 ]& C6 j1 f# [3 N
接下来,我们需要 ceph-deploy 节点执行 prepare OSD 操作,目的是分别在各个 OSD 节点上创建一些后边激活 OSD 需要的信息。
: Y. t; e: g+ r$ ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1
  _5 C1 }% {, m% {[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
( d  P8 b) l% U& J[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1
, r# ^4 i% G! |3 X[ceph_deploy.cli][INFO  ] ceph-deploy options:
) @$ Q; z, M1 f; V1 q) v[ceph_deploy.cli][INFO  ]  username                      : None
  B/ [% ~$ l/ e1 E1 Z[ceph_deploy.cli][INFO  ]  block_db                      : None7 f  S8 F( M$ U: v1 e. n5 B/ A
[ceph_deploy.cli][INFO  ]  disk                          : [('node0', '/var/local/osd0', None), ('node1', '/var/local/osd1', None)]% A. g6 J' T0 w& `8 J* P3 ^
[ceph_deploy.cli][INFO  ]  dmcrypt                       : False
6 @( M" c- @4 n9 l) @: s$ A' P[ceph_deploy.cli][INFO  ]  verbose                       : False
8 l. |1 B7 ^( R  d% d9 c[ceph_deploy.cli][INFO  ]  bluestore                     : None
9 O- A1 R7 }/ u0 H" B5 d; |: U[ceph_deploy.cli][INFO  ]  block_wal                     : None# r, H: E0 t) I, x2 R7 p
[ceph_deploy.cli][INFO  ]  overwrite_conf                : True% |: x9 ^9 m4 {2 p9 v6 h0 c
[ceph_deploy.cli][INFO  ]  subcommand                    : prepare
* W8 N( Z5 I" `% U# }3 j* l* @[ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               : /etc/ceph/dmcrypt-keys
# d" _" D, M0 X8 N3 ?1 C, C. E2 ^[ceph_deploy.cli][INFO  ]  quiet                         : False& }9 O& W- q* s8 E
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x117d950>7 ^$ Y! R( V0 p( F+ @; ~
[ceph_deploy.cli][INFO  ]  cluster                       : ceph& H: W7 Y( P. [: L& \* Z2 M
[ceph_deploy.cli][INFO  ]  fs_type                       : xfs1 n5 p' P) V2 O  `* P! j
[ceph_deploy.cli][INFO  ]  filestore                     : None2 S8 Q; y! J1 \6 Q' @& ]) l
[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x116a320>7 S; K- N# D/ E0 I) w# Q  W5 s
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None' G) T- M% W8 ~4 X0 t4 r5 {
[ceph_deploy.cli][INFO  ]  default_release               : False
4 v& h9 P6 q* y" r[ceph_deploy.cli][INFO  ]  zap_disk                      : False; I% T  J" b! R' j6 R
[ceph_deploy.osd][DEBUG ] Preparing cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:
) M' w7 z7 p4 m& j7 _! w; D. ?& d9 d[node0][DEBUG ] connection detected need for sudo
# s, s4 l7 X1 m, `6 C[node0][DEBUG ] connected to host: node0 6 u( @2 f7 {+ C0 k/ [  g0 Z. `" K
[node0][DEBUG ] detect platform information from remote host
0 T6 ~8 V( e$ v7 [3 T[node0][DEBUG ] detect machine type
0 t% N1 W) I* O: Q$ u7 d[node0][DEBUG ] find the location of an executable
+ i4 ?, s' z( y9 U! [  o! J[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
+ m" x: f& ]& S% c" F' ~% D[ceph_deploy.osd][DEBUG ] Deploying osd to node09 B0 n( X4 ?  F. a6 b5 e
...
5 F! D0 H5 A5 E; L- r[node0][INFO  ] checking OSD status...
3 b: x7 ]/ c) @[node0][DEBUG ] find the location of an executable4 D/ @, ?2 f8 C
[node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json9 t  A3 R# V6 D+ C. s: S" y% Z
[ceph_deploy.osd][DEBUG ] Host node0 is now ready for osd use.
' K* d( D& f5 H6 W1 s. @7 ][node1][DEBUG ] connection detected need for sudo
7 }7 u% a" G6 ?6 y[node1][DEBUG ] connected to host: node1 6 b# w3 m0 N+ ~( u3 I2 k( U
[node1][DEBUG ] detect platform information from remote host- M% _: `' W8 t+ S
[node1][DEBUG ] detect machine type
; ~% D, O7 X* k0 w* n! b$ I[node1][DEBUG ] find the location of an executable0 v4 Z# Z% U5 q5 U3 s0 b+ H
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
4 v3 n$ i4 K9 n4 M[ceph_deploy.osd][DEBUG ] Deploying osd to node1
; f5 Q0 r+ W, ^, c9 S2 q...
3 Z! \: ^& n5 g[node1][INFO  ] checking OSD status...( L4 v8 J, ~, \* X& F& |
[node1][DEBUG ] find the location of an executable
; y2 x+ Q3 e% G) ]8 G0 P, Y2 v; s[node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
8 b. m: p1 D3 H, _9 [8 C[ceph_deploy.osd][DEBUG ] Host node1 is now ready for osd use.9 Z4 {" V& C" B' C" S; G4 q
OK 接下来,我们需要激活 activate OSD。/ ]3 V. l. {' ~4 ~4 Z- W/ Q
$ ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd1; y4 S2 C  f; j
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf) C3 x8 y& o+ ^- |  P; H, R
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd1
( b; ^/ C( V3 I( I3 v: S; u[ceph_deploy.cli][INFO  ] ceph-deploy options:
" n$ D. e3 s- ?! n" O[ceph_deploy.cli][INFO  ]  username                      : None7 W. _  Z3 _; C* i0 P# P
[ceph_deploy.cli][INFO  ]  verbose                       : False4 W8 \3 g( V2 e8 l) s9 @* U
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
: B7 H3 l( ?1 _[ceph_deploy.cli][INFO  ]  subcommand                    : activate  _2 K0 Q) D9 C9 x; `
[ceph_deploy.cli][INFO  ]  quiet                         : False6 F, H, j8 l( ^7 M2 T( r- U; X0 O) X
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x2045950>
3 ~7 e8 D, k, t- v& W[ceph_deploy.cli][INFO  ]  cluster                       : ceph
3 D7 R  m0 {; h+ P1 x4 m6 L0 D$ {[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x2032320>
, N9 H& N4 b$ B3 h[ceph_deploy.cli][INFO  ]  ceph_conf                     : None5 |7 H2 V; g7 @( ~) M3 Z$ w
[ceph_deploy.cli][INFO  ]  default_release               : False
0 o; o9 s' t4 {, r* l3 u[ceph_deploy.cli][INFO  ]  disk                          : [('node0', '/var/local/osd0', None), ('node1', '/var/local/osd1', None)]
7 _1 p& m9 M5 s' E+ L[ceph_deploy.osd][DEBUG ] Activating cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:
5 z+ J! |; l# q1 W, R[node0][DEBUG ] connection detected need for sudo
5 o7 d. K/ D) S  m& K+ |6 K% M. \[node0][DEBUG ] connected to host: node0
7 O$ l% o0 h' h6 v+ N" k[node0][DEBUG ] detect platform information from remote host
2 ~4 P- f3 m- R4 X3 b, [[node0][DEBUG ] detect machine type! K) \+ u+ K$ n4 \7 V/ T
[node0][DEBUG ] find the location of an executable
; s; }$ M1 ^7 J/ H[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core" u( s5 s- H% a7 W) v& b
[ceph_deploy.osd][DEBUG ] activating host node0 disk /var/local/osd0/ q6 u* l. q  y4 T0 Q  }7 y! y
[ceph_deploy.osd][DEBUG ] will use init type: systemd
) o' n8 O6 }* x& K...6 U. C8 _- U0 G9 s0 o& M
[node0][INFO  ] checking OSD status...* f8 g1 J: y) |& I- I$ ]
[node0][DEBUG ] find the location of an executable, p5 u8 Z; {% A. k9 G3 U
[node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
2 K) ]5 c& H) D[node0][INFO  ] Running command: sudo systemctl enable ceph.target: ?* K6 Q9 w. T
[node1][DEBUG ] connection detected need for sudo7 P; N$ M! F. q5 k. I1 g
[node1][DEBUG ] connected to host: node1
% O  g) D1 t$ ^[node1][DEBUG ] detect platform information from remote host
4 F0 u' P! v( C$ d+ \[node1][DEBUG ] detect machine type
% i5 J# M! e: L& J& B[node1][DEBUG ] find the location of an executable6 Q& i- N& V. C" v: f
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core+ ~) n0 U$ O' z; |9 U4 D8 m
[ceph_deploy.osd][DEBUG ] activating host node1 disk /var/local/osd1
) u' }: p- j1 M' t3 T! r[ceph_deploy.osd][DEBUG ] will use init type: systemd
1 B- e6 U2 j$ Y2 M; {8 W...
  f( ?2 H, I+ F! G% {0 @+ \[node1][INFO  ] checking OSD status...& l7 Y' t: C6 v% b% h3 |( u4 t- K
[node1][DEBUG ] find the location of an executable6 c) f, T1 @* B% U% C" f
[node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
3 \0 J4 h) a$ r( `/ P" E0 l# O* U6 u[node1][INFO  ] Running command: sudo systemctl enable ceph.target) y, R+ T$ Y5 G7 v
看日志,激活也没有问题,最后一步,通过 ceph-deploy admin 将配置文件和 admin 密钥同步到各个节点,以便在各个 Node 上使用 ceph 命令时,无需指定 monitor 地址和 ceph.client.admin.keyring 密钥。
2 Y  H9 I1 `; y/ c. O! Z$ ceph-deploy admin admin node0 node1
2 m* q# b0 r5 _[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf: L3 |9 p- M& h8 A
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy admin admin node0 node11 n$ ~# o9 ]7 Z0 a" u8 \  v3 X
[ceph_deploy.cli][INFO  ] ceph-deploy options:
+ k% z' i: z' {[ceph_deploy.cli][INFO  ]  username                      : None5 J3 F; N; Z* f% l) J9 Y
[ceph_deploy.cli][INFO  ]  verbose                       : False0 h4 u6 m. W8 a$ G0 s4 V
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False! y. ^) i) V! J$ W
[ceph_deploy.cli][INFO  ]  quiet                         : False5 \+ V: z/ v$ w+ d! w7 \
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x15a93b0>  J, Z1 U1 Q% _8 l1 K- v" a& n
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
" \+ @0 Y, I& v' n) K+ t' V[ceph_deploy.cli][INFO  ]  client                        : ['admin', 'node0', 'node1']
. ~6 |0 {9 s" `! T2 i* {2 V! i7 H[ceph_deploy.cli][INFO  ]  func                          : <function admin at 0x1500cf8>
6 o( ]8 m+ |  k! j[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
- r5 b0 S' a. z; f! k[ceph_deploy.cli][INFO  ]  default_release               : False
( G( I- b- @& V' K8 t- ]7 W2 b[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to admin
( ]' e( I% m/ v' Q9 ][admin][DEBUG ] connection detected need for sudo
# K! ]+ h6 }9 K9 H; A' R[admin][DEBUG ] connected to host: admin
0 a; e1 \% n9 R9 u[admin][DEBUG ] detect platform information from remote host8 C- P- u  ~& P8 C4 j8 D! `
[admin][DEBUG ] detect machine type
! p: N* G- a8 p' K% k[admin][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
$ {2 D1 h0 D, h7 |) W3 M+ L; i[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node0
/ g5 P& |4 C, B; Z: Q/ U, |& }8 o[node0][DEBUG ] connection detected need for sudo
& Y1 U1 i# J  J: L+ {+ m) \[node0][DEBUG ] connected to host: node0 7 h, Z% n$ n! l
[node0][DEBUG ] detect platform information from remote host
: p$ j$ K  l- _2 A  v[node0][DEBUG ] detect machine type
, C( w% {! T% Q4 a  S, I[node0][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf% r! {+ |1 r) }' p8 t3 I; N
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node1
$ H6 y! I5 v6 D6 ?: N9 R[node1][DEBUG ] connection detected need for sudo
7 m/ n5 @! f6 e2 ?7 e4 }, ~5 }[node1][DEBUG ] connected to host: node1 4 O9 o. N8 D8 p: w
[node1][DEBUG ] detect platform information from remote host/ ~, K2 T2 B" i7 F2 c& }- Y9 O! |
[node1][DEBUG ] detect machine type
* r# h9 s' L  ^+ `1 ^1 h[node1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf+ \; v" L- T5 R8 C, K( ~0 w
同时为了确保对 ceph.client.admin.keyring 有正确的操作权限,所以还需要增加权限设置。
4 U- a1 W0 Q6 a" q. O7 ~* g$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring) t5 v' ~1 f2 x! \9 z
至此,Ceph 存储集群已经搭建完毕了,我们可以查看那一下集群是否启动成功!
1 B7 _2 Q4 w. F7 L2 h# 查看集群状态. z& N/ T& B- W/ U* O8 x3 v
$ ceph -s
7 W2 x# |+ r0 j; @  B/ F$ g" Ucluster 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
, K2 V1 s9 c( K2 I     health HEALTH_OK
& Y5 }, Z4 V. |1 A1 u; ]9 Q     monmap e1: 1 mons at {admin=10.222.77.213:6789/0}8 m* z& }# ^& Z) g; u1 e; _
            election epoch 6, quorum 0 admin. u' O$ D  g- q! ]/ [+ m. k+ V
     osdmap e15: 2 osds: 2 up, 2 in5 v% j% t) \( P7 ]
            flags sortbitwise,require_jewel_osds
/ t5 b/ F1 S" M1 ~' F' Y      pgmap v9276: 64 pgs, 1 pools, 863 MB data, 226 objects
' m7 \" {& o, H: v  ~            33440 MB used, 33574 MB / 67015 MB avail
! y% M2 r' @/ A" G5 l                  64 active+clean
8 D+ q* \2 Z% O+ h# E% b
  M; {2 d6 S2 v! X8 |4 S. P# 或者查看集群健康状况
7 D) D- D5 M' i. K5 p0 g$ ceph health
& L% U& m4 X& |9 W# PHEALTH_OK' Q0 ~# F" e8 d+ Y7 T, h7 ~, Q$ s& g
: j2 o2 d" d; D, e6 x4 W" j
# 查看集群 OSD 信息( T) I3 J+ N7 h
$ ceph osd tree
9 K6 m5 v0 D" J( r" R$ FID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
# }: u% M* Q+ F8 J-1 0.06400 root default                                     ' @) x: ^9 v& l
-2 0.03200     host node0                                   & \- s$ o) k6 K( [! X0 @. A
0 0.03200         osd.0       up  1.00000          1.00000
8 N+ n8 q6 ~) u; g: M, ?- r-3 0.03200     host node1                                   + k5 C: a$ K4 ]  T$ A5 @6 t
1 0.03200         osd.1       up  1.00000          1.00000
- l, r2 x# P9 J5 M好了,通过参考官方文档中的 Ceph 安装和集群搭建说明,一步一步的完成整个存储集群的搭建,文档写的很详细,非常容易上手操作。本次就先记录到这,下一篇我们继续研究学习 Ceph 存储体系中的对象存储、块设备和文件系统。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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