|
|
#环境准备
3 g- w- r2 a5 a4 ?#升级内核* j' d) T/ n5 }5 \% F' {* c: s# `
#官网说明 http://docs.ceph.com/docs/master ... tions/#linux-kernel$ b! R. d1 e3 f$ t5 m9 C
#CentOS7 升级内核2 y5 R9 }1 Z1 o% e( X+ C
l; `" D( G/ I& B$ V9 s
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org. L0 B6 [0 }2 [& b! o( a
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm1 a& V3 l+ g% @
#安装kernel最新稳定版1 k0 B; j6 ?$ ?3 b9 J# Z
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y8 e( V: {% i: K) h+ d3 h
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg #查看启动项' W8 ?- ~8 g: C2 V" i7 n" v
grub2-set-default 0 #设置第一行为默认启动
* I2 `' K2 Y( P1 n! Brpm -e elrepo-release #删除源9 p) Z) `: N& \% q5 K0 ]5 M
reboot/ W( b2 ?5 T$ o" I7 ]9 Z# a4 [
#uname -r #重启后查看内核
" T( q6 X7 r! ^/ q#4.4.98-1.el7.elrepo.x86_64/ _" ?% W! k X: ?* _0 J& V6 ^$ I- R
###########################
% [. @7 P. F0 T, b% {# E, P- Z9 Y* G2 N% p8 h6 |* u' A! e9 T$ z, Q
' O, F- Q. o3 @% J& Y$ j% ~#创建ceph源
9 Q8 n+ ], x9 }- z5 S( Secho '#阿里ceph源
B3 p7 Z% r( U0 U[ceph]% X3 _, m* i, y* s
name=ceph; `; l( ?5 K! e7 G
baseurl=http://mirrors.cn99.com/ceph/rpm-luminous/el7/x86_64/6 C" E* c: e: r }" @8 P
gpgcheck=00 u0 u) ~1 J% H: c: [0 W
[ceph-noarch]! w* w& O, L- ~5 |. V3 u. z
name=cephnoarch
+ m% g" |0 o5 c+ m. ibaseurl=http://mirrors.cn99.com/ceph/rpm-luminous/el7/noarch/3 ]4 E+ [# L" H6 Z; z3 a6 u
gpgcheck=0
, P$ Q( k$ Z8 v: P1 L' o* D[ceph-source]
+ B, h; Q7 C, V4 j; X9 q7 X: Aname=ceph-source
; u1 U& U4 I Q8 K4 O' k6 Abaseurl=http://mirrors.cn99.com/ceph/rpm-luminous/el7/SRPMS/
' V/ @. Y; }# i: @gpgcheck=0
5 r3 M& D6 p6 m5 z#'>/etc/yum.repos.d/ceph.repo) S" @3 a1 p9 y7 k/ M9 G$ S
yum clean all && yum makecache #生成缓存% R# d S6 [. `" R& e0 K8 Q
#关闭selinux、防火墙. Y/ W# e+ n- K2 _0 T0 d0 j
systemctl stop firewalld.service/ C/ p- `4 I* v; g, O* S
systemctl disable firewalld.service
+ B+ {( p& x( v4 b A) Qfirewall-cmd --state' w& M1 P6 e4 b0 E! u j A
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config- i0 l1 b( e+ \+ W8 \
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config$ Z0 w* O$ d4 I: |# o
grep --color=auto '^SELINUX' /etc/selinux/config1 G u, S# _5 j# p* J
setenforce 0+ d' p- s. V' D. s1 m4 J3 s5 E
! g' \1 d0 k! I/ M% e6 A" A
#时间同步
1 Y! [8 `7 i7 v, Q[[ -f /usr/sbin/ntpdate ]] || { echo "install ntp";yum install ntp -y &> /dev/null; } #若没NTP则安装
3 z( w1 g7 V7 J/usr/sbin/ntpdate ntp6.aliyun.com 0 Z C# ~) `! @' ~& e; _: U4 D5 L
echo "*/3 * * * * /usr/sbin/ntpdate ntp6.aliyun.com &> /dev/null" > /tmp/crontab3 j( {; D/ m x3 b8 d2 ^' m
crontab /tmp/crontab1 ^0 D4 G$ u5 a* b5 n A
5 T ?7 Q/ _, R& v
###########################" v% q" o: A( S; `
#网络. L6 j7 {+ d( L- c( |7 _1 W; e
: P. W) g! o5 q# X
# #外网规划$ ?& S$ M7 @3 X3 T' g
# 192.168.0.51 ceph1, t6 w: x7 O6 F
* z" ] P/ O9 }% X% V& p/ V#内网规划,写入hosts
- V: l. m! r7 E/ x" p6 T8 Iecho '#ceph, {1 v% C7 T+ O, C8 @
192.168.1.101 ceph1
, C# J4 ]3 A1 T0 }# R5 H$ A192.168.1.102 ceph2
( v6 F4 l8 N- R' c( A' Z9 M3 [192.168.1.103 ceph35 x$ t, H1 B) f. e& t! W
192.168.1.104 ceph4) [/ M o2 s6 V1 P
'>>/etc/hosts
! G2 X* g: r# |. Q3 o/ Z8 F, G3 t
( ?% F: h* B7 ~3 e#配置hostname、固定ip
# x% I$ \+ K1 iNu=1! `$ U% p' s$ X/ M+ x4 u
hostnamectl set-hostname ceph$Nu, G/ \& h U6 b V/ i7 z! w
NetName=em1 #网卡名称
' |6 b1 j8 c# m Wrm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
5 V( F0 V& X M9 ?. n9 S) R) J- Lnmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 192.168.1.10$Nu/24 \; F# d, _) T2 z6 _6 W- x; i
ipv4.dns "8.8.8.8" #ipv4.gateway "192.168.1.1"+ K! H& X/ G/ P/ \1 g
nmcli connection reload #重新加载网络
* ]: a# G) s. m' g- N5 d4 E w- g {/ t% n& a0 n
/ O2 z' u; E/ u% N+ P- B2 K/ C#磁盘(添加2快磁盘)
! m+ K* }; p! X, v3 ^# [root@ceph01 ~]# lsblk+ F( U1 i; Q0 h9 X$ `: \9 W
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT8 e# N7 |; h2 \$ d6 P6 ~$ n' a
0 O' ?$ a: C4 o* e- L
# sdb 8:16 0 100G 0 disk % O/ V9 U1 B* n# g! m+ m
# sdc 8:32 0 100G 0 disk
2 Q: t" o. Z: i) v/ V: u" e( a l0 @5 G3 }" c
###########################/ p# ]/ j. W/ }& y4 R
复制代码
. k" d' V' n) N6 Q7 ~复制代码, ?8 K) t) `/ H3 A
#ceph安装配置: B* w/ ]- Z! A- @$ A
###########################
( E% e* H0 J% J! [( t4 i! B3 L#全部在ceph1操作3 e+ k4 a, F$ l
" I& x: T, \- J$ n4 `' E, _
# #Ceph节点简介, E3 d" ]( }' h8 [: H
# Mon(Montior)监控节点& q/ u+ n( z% F2 q- i2 `4 A1 U6 @
# OSD(Object Storage Device)存储节点$ O2 U- T j& Z6 X, R& P4 h, \3 |+ A
# MDS(Meta Data Server),Ceph作文件系统用到,本实例不配置
" q9 }$ B5 \3 ^% R( s. z& b
5 w( v" O! i. e" g0 Z4 X+ T#ceph01作为部署节点+ h2 b5 P/ J4 I1 }5 s
#ceph1 ceph2 ceph3作为Mon1 J6 h: s' u# m8 E2 z& |1 F7 b7 w
#ceph2 ceph3 ceph4作为OSD" C0 o3 C( {# W( p
, |: n) b' b/ D9 S#ssh免密验证5 [* F. W. ^" F6 I+ Q3 {2 z1 F/ N
所有节点执行:4 ^8 Q+ R. n: W- }8 p" Y1 h
yum install -y sshpass7 s1 p4 ?% p& E8 U% \# k
rm -rf ~/.ssh1 u9 d7 i1 v; Q/ m+ y7 C/ ~
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
' L( V8 B% D& I, L U4 u& b/ Gsshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa -p 22 root@ceph1
- R! V9 S N4 O0 fsshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa -p 22 root@ceph2
4 o; G' X) p$ osshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa -p 22 root@ceph37 e" l0 q: H( x' L4 {) o; _; I ^
sshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa -p 22 root@ceph44 H) Y k. z% e; G A2 z
#以下在 ceph1节点执行3 E$ ~4 P w; E! G
#ceph1 安装ceph-deploy配置工具
: ~9 d6 z. h7 r4 A6 m7 x/ pyum install -y ceph-deploy
3 B9 P: f1 `7 v+ \
$ m, ^+ x1 ]5 C- y" c: |, @#创建配置目录9 j( b- p h5 @' a
mkdir /etc/ceph
: W- m) g+ m9 b6 ^! Ecd /etc/ceph/7 c- F/ h+ I1 P9 d& v* |- h
$ m: u( }# M, Z7 @& w4 O#初始化Mon配置, @) @, O4 I1 R& X1 [0 X
ceph-deploy new ceph{1,2,3}
8 u& N6 C) A6 _( ~# R2 K: E#ceph-deploy new --cluster-network 192.168.1.0/24 --public-network 192.168.0.0/24 ceph{1,2,3}1 U$ |1 Z; O1 t, ]) d2 Z( _
1 _ o& ?/ y$ R: b
# #修改冗余份数为2,日志大小2G
' J6 a* R/ `3 V& b8 ?! Y4 Q5 E# #配置网络,单网卡忽略8 t$ E6 L n9 [
echo '
* U! A* T. v/ ypublic network = 192.168.0.0/24
! F9 l' j1 G( L7 w j1 n( P6 f& wcluster network = 192.168.1.0/24
8 k3 B6 P' S. P/ F- B
; Y5 f" w2 T( j d$ \+ amon_clock_drift_allowed = 2
6 q- p0 H' G3 i2 F0 V) Oosd_journal_size = 4086
. | c0 U; L0 |, _- g$ ]1 G/ N; Uosd_pool_default_pg_num = 128
# I* ^2 T) V/ C: ]( Uosd_pool_default_pgp_num = 128# H0 S1 S( U* S9 Z2 v. x
osd pool default size = 2
Q7 \" p8 S* G" Z! j% N8 hosd pool default min size = 1% T0 n8 i& x8 H! m. G$ T) @
rbd_default_features = 1; L, \1 Y6 M3 {% C% g2 M$ r
client_quota = true
, }2 `5 {9 t7 }" G) L" S9 P'>>./ceph.conf
( ?( I0 m! S+ c" g M9 i; ^. _/ W, g' I% ] a5 ~* I
#安装Ceph1 e* l/ E2 D {1 f! T* Z( ]
ceph-deploy install ceph1 ceph2 ceph3 ceph4
2 _; N8 n0 T% \: e# Q& G#yum install -y ceph ceph-radosgw #实际上是安装这2个rpm* y9 R6 X5 n+ I) _/ D" f
" n" P* T# g0 ?2 m#初始化monitor和key1 M' H8 y R. n& u* P- E. ~( ^
cd /etc/ceph/
+ m: O) `. S ?0 uceph-deploy --overwrite-conf mon create-initial' f4 W* e# I) f9 C
# ~4 f& ?1 J: N P+ Z$ k" v#创建存储节点(使用sdb,sdc磁盘)4 B/ R/ }$ s, [: T8 e
#lsblk #查看磁盘/ n& u2 M6 n* i( |+ r% b. u9 H8 `
8 U4 q7 @$ s, |( D9 U$ I# Z
#创建osd
' c+ p) i, D5 w4 D( c' }& I& x8 vceph-deploy osd create --data /dev/sdb ceph2
0 _$ }5 s2 w- X* o' D% @ ^$ P& [ceph-deploy osd create --data /dev/sdb ceph3
4 H: `7 g }7 j/ [: Aceph-deploy osd create --data /dev/sdb ceph49 T* y0 |1 S9 y- S+ R, m; `9 @! B
ceph-deploy osd create --data /dev/sdc ceph2% x j& a. G* z- q# j7 X! w* C
ceph-deploy osd create --data /dev/sdc ceph3
' y. O5 Z" B! a+ u: sceph-deploy osd create --data /dev/sdc ceph4
) t& ~2 [8 u+ T( R" y5 x9 d) T2 b: G8 n! ^% C% y% D
#拷贝配置及密钥- m4 \% W/ C' I/ \& x# m" J' W
ceph-deploy admin ceph1 ceph2 ceph3 ceph4: {3 H0 g3 }3 {; |+ k3 d
chmod 644 /etc/ceph/ceph.client.admin.keyring
6 d+ J3 e% f# U9 T! z) |% a8 E: j3 V% F1 |/ I+ a; \" {# @9 |+ U
#创建mon
5 d* q' b0 ~7 r: C) u& m# wceph-deploy --overwrite-conf mon create ceph1
1 a( k/ x/ P) F8 Q/ x) K- ^) ~ceph-deploy --overwrite-conf admin ceph1
' N6 n9 Q) q: `( F/ m; fceph-deploy --overwrite-conf mon create ceph2
9 e# O* e F0 rceph-deploy --overwrite-conf admin ceph2- b: j: o$ B, p2 O0 x; [& q9 y
ceph-deploy --overwrite-conf mon create ceph3
" e3 w. Z, n: s+ Xceph-deploy --overwrite-conf admin ceph3
7 R, B4 g6 E$ ~2 F4 Q7 c# E
7 s1 Q% l: C% b0 v' d. s# t#添加mgr8 v \9 J' M' s4 j( P9 l/ s
#ceph 12开始,monitor必须添加mgr
5 x K. Y! Q8 j9 l* h: @ceph-deploy mgr create ceph{1,2,3}:mon_mgr1 w" U4 o6 r1 b2 i
#ceph-deploy mgr create ceph1:mon_mgr ceph2:mon_mgr ceph3:mon_mgr
, \1 }: v d/ S7 L! @7 H9 ]3 e4 E- N6 G6 e: r: Q7 M4 {9 K
#启用dashboard (在mon节点)* R% l2 d/ c& L; i) x
ceph mgr module enable dashboard
# N. q' v7 ^9 ~0 N. J9 u#http://ip:7000 访问dashboard
8 _, N# K; Y! n( |2 {! P: }/ knetstat -antp|grep 7000
% p0 X8 w- A% D9 ~' f) ^2 z+ I' X' v f
# 设置dashboard的ip和端口
" R+ v0 ~" B2 V6 y1 {. F$ J# ceph config-key put mgr/dashboard/server_addr 192.168.0.196 #vip地址" a" W& K! W, T+ r
# ceph config-key put mgr/dashboard/server_port 7000" S/ I3 T; z4 Y* r
# systemctl restart ceph-mgr@ceph1
0 S7 s) K0 D2 o1 z! ?1 j/ ^5 w' k( F
, }" d: p1 U* b& F* N& H###########################* Z' W9 S( U- w. a- j8 P+ H' f
#查看相关命令
5 D( W. e! \* }4 T4 T- Iceph health
% Q& D0 z# l- ?3 m% f3 iceph -s9 h0 i7 g; R; ~# h D! y
ceph osd tree! ]. Z- O% g9 v3 ^
; z1 F& K% ^( Y( Rceph df
( g3 ?7 C3 \( @$ Y/ v9 n {ceph mon stat
( j# P5 f! b: C" _7 Z- p% cceph osd stat
+ j0 @- Y1 V/ ?3 W# Kceph pg stat/ P! m/ i8 }" {
1 V/ b5 D$ Q* {* m4 e( b( M
ceph osd lspools
& @& r6 Q, M, ?9 _ j- L4 sceph auth list
, \' }5 _6 K* a* f+ `5 @; [8 m4 n" }" j9 L1 y
###########################
7 R0 [- z+ d6 e, P. n2 u#参考
6 ?$ t: ?3 D H& W. c/ }6 Shttps://segmentfault.com/a/11900000115815138 G) ]# I, M" ~) h2 |* R
http://blog.csdn.net/wylfengyujiancheng/article/details/78461801
& k5 |' c; h. d
/ {5 T5 R( t+ f/ u# w6 Yhttps://segmentfault.com/a/1190000011589519
) E Y; Q/ t( E7 x: m1 _4 Dhttps://www.cnblogs.com/netmouser/p/6876846.html9 w1 A: M/ K+ m
+ w8 S# o* g( R0 v$ g' |! J% x
#中文 文档
K" Q4 }% P3 u2 }8 v/ Hhttp://docs.ceph.org.cn/man/8/ceph-deploy/
- o3 f' F4 P% i3 i# O- s8 n' L/ `: E
- i9 F' p) F9 F4 W#ceph工作原理和安装% ]# }; K' B: @9 ~7 ?+ h4 A
http://www.jianshu.com/p/25163032f57f3 w+ M0 ?1 p5 _6 U( X" T/ p
, f" K& S9 w$ z) O/ }1 }0 T
#简单ceph性能测试
o K- y2 h6 \1 ?. V
0 l! X! ^" q8 p+ q! Y4 F" ]#创建测试池mytest
+ i* }( J: b% ]2 Aceph osd pool create mytest 1283 p/ [& X7 ?% V) E. u
rados lspools, l0 o6 V# }. I' `0 j" X! Y
# ceph osd pool set mytest size 2 #副本为2
$ S) l8 V: m( g: l# ceph osd pool delete mytest #删除
8 a, u- x2 n: m4 U# y) Y0 L2 D% \4 f8 F2 B4 x! e
$ L+ S4 z: p. C. c' ]#Rados性能测试(关注 bandwidth带宽,latency延迟)0 W9 ~% Q. D# [1 y. r# g$ ^1 w- s+ Z
rados bench -p mytest 10 write --no-cleanup #写测试10秒: e8 X0 R$ _* A" N, H/ k4 _9 _
rados bench -p mytest 10 seq #顺序读
" f2 J. \5 D; j/ ]8 y I: Orados bench -p mytest 10 rand #随机读* R' l2 A& K. K1 N( T. D) y
rados -p mytest cleanup #清理测试数据
8 x4 o' {- |' T) t0 T$ O0 g v) V; h0 `; @
#rbd块设备测试
' r3 a7 O9 u: C& Wrbd create --size 2G mytest/test1 #创建块设备映像test1
, }7 g+ j% l2 i% Z2 C$ x5 brbd ls mytest6 z; t4 l6 s, j; {$ E4 h
rbd info mytest/test1% J6 F, N% X4 z4 j
' i7 x9 @5 @. W5 j/ f7 trbd map mytest/test1 #映射块设备
% ^3 o6 h# t# B* [#/dev/rbd0
1 w) n9 O" R; Y8 a/ A$ ?. i#rbd showmapped #查看已映射块设备
7 X; X; v0 c* i2 q+ J1 Q! D#挂载
7 W7 B- j( t4 Pmkfs.xfs /dev/rbd0
8 |8 A. C. r/ p) Y9 e% zmkdir -p /mnt/ceph9 u4 Y* [# h5 l" ?7 s/ y
mount /dev/rbd0 /mnt/ceph/
0 c `0 A/ S% L- b8 } b( Fdf -h /mnt/ceph( r: f2 E5 _$ P% X
; V' C" N* \( V, T
#测试0 W0 d4 M' N& ^5 ~
rbd bench-write mytest/test1- O+ P, g7 n# D# K% M
#默认参数io 4k,线程数16,总写入1024M, seq顺序写
0 a5 o# U: R" Y) C0 d! [ v# V1 p4 O7 n0 m
4 k- q8 x# ~2 v9 Q
rbd unmap mytest/test1 #取消块设备映射- }7 c9 F2 O0 N" r0 R# y$ t* V
rbd rm mytest/test1 #删除块设备映像
+ F6 q# s+ b; F: u |
|