|
|
#环境准备
; m$ Y( V5 M+ O1 k, z#升级内核/ N" D: ?9 l' V" {, G
#官网说明 http://docs.ceph.com/docs/master ... tions/#linux-kernel
" c: D5 a" `% Q6 A4 B! A#CentOS7 升级内核
) T8 u! K+ }% d5 s8 N" _ E _9 g* E- I! c& C' @1 O r; \
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
+ b. r0 f* X8 ?9 C, e9 y/ vrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
6 B" h8 O3 |3 L) G! X$ U1 ]9 I#安装kernel最新稳定版/ Q h/ h+ X# ?5 h; J, W) E
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y
3 _1 t. ?$ H% n, C: x5 e; wawk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg #查看启动项
3 i+ m% t8 U( S: p; i' l- Zgrub2-set-default 0 #设置第一行为默认启动
6 M. i" u6 x& yrpm -e elrepo-release #删除源5 Z5 }- Y* U" D" U4 F
reboot
9 }, e& E' z# G) j( I( D9 \#uname -r #重启后查看内核
2 d/ V n: h' ^. l' `#4.4.98-1.el7.elrepo.x86_64
" Y4 c# M+ _# P: j$ ~4 a###########################
: T. \2 [# M, e) B: {5 [' a+ c9 J
4 ?$ X3 w0 i2 T#创建ceph源4 b6 f* j C( y1 @3 _. @3 ]( o
echo '#阿里ceph源
+ r4 x' Q: c2 N5 O; {( ~; a# p[ceph]9 B) q( d5 `( E t
name=ceph
( [. a! @5 h C, ~- A$ abaseurl=http://mirrors.cn99.com/ceph/rpm-luminous/el7/x86_64/6 u9 h6 x* ~/ i! M' a% z! Z ~; h: R* H
gpgcheck=0
1 x: @$ z! w& b1 V$ p* h y" q! I[ceph-noarch]
& L0 X9 r1 B* {6 V( b" qname=cephnoarch' h1 Y U; l' c' k
baseurl=http://mirrors.cn99.com/ceph/rpm-luminous/el7/noarch/$ N; }% X, Q9 W# L$ J! H+ W: X; s
gpgcheck=0
' B7 ]/ J; O( _% L) t[ceph-source]' n& l. A; b' [+ z, X
name=ceph-source
5 q5 j0 M" e Q, A/ V0 bbaseurl=http://mirrors.cn99.com/ceph/rpm-luminous/el7/SRPMS/2 M: p1 N1 ?$ t9 z
gpgcheck=0- @3 U9 [: \, Y% _. C* |
#'>/etc/yum.repos.d/ceph.repo
- `4 E& f4 C+ w! q- k- q. j7 }yum clean all && yum makecache #生成缓存
$ \( B. V3 d1 s4 J1 {#关闭selinux、防火墙. @+ H* ?/ f) w+ L
systemctl stop firewalld.service
. Z& l$ i! O0 d# m* Ysystemctl disable firewalld.service
! U$ K8 c8 T0 w0 M; G1 Sfirewall-cmd --state, ^1 I) t7 G# k/ r0 j/ k" f# }# i8 C
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
2 V3 B9 G9 n/ k( K2 A, L& }sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
* L8 X1 N3 W$ g7 _- wgrep --color=auto '^SELINUX' /etc/selinux/config" i( L$ _& v$ e( g/ x5 d) o4 w
setenforce 0
! r$ @, p, O2 y7 f6 {' E$ b. G3 e+ ~3 m
#时间同步3 N7 |& {$ t' H$ a
[[ -f /usr/sbin/ntpdate ]] || { echo "install ntp";yum install ntp -y &> /dev/null; } #若没NTP则安装
2 F1 q% V/ @# u) s0 N: {* y/usr/sbin/ntpdate ntp6.aliyun.com
3 I! ~8 g7 t% f/ Gecho "*/3 * * * * /usr/sbin/ntpdate ntp6.aliyun.com &> /dev/null" > /tmp/crontab
: f# ?# {1 M. U! W0 T8 ?crontab /tmp/crontab
8 J+ z: o* e$ F" }" K* M, H& B# y* _! ^7 X- d
###########################- A2 D7 X0 }6 f, H! x
#网络 i3 t7 i4 f; A6 P
9 z* [4 `6 o: c( D( R
# #外网规划
4 G+ v3 h6 a+ `. O6 O8 N0 @# 192.168.0.51 ceph12 M' M, z. \+ K0 x& a" m
L1 W1 x3 Q+ s+ Y% V1 b8 I* c
#内网规划,写入hosts
" d6 u0 I& h: P7 Z0 @echo '#ceph' K. u4 ]7 P' m+ L% C X
192.168.1.101 ceph1
7 W- D8 |) f" ~6 W: [* s192.168.1.102 ceph2
* u& i2 F. \* [ \; z8 @% ~192.168.1.103 ceph3
3 z* `6 b1 D7 ]0 Z1 {192.168.1.104 ceph4! D2 I% N; e# Z9 v" L+ Z
'>>/etc/hosts- b9 q5 l( Y. C( N
; A. F V: [* r' B#配置hostname、固定ip
3 Z7 [# [! b# q, d; x: _0 U8 m/ JNu=1: |) Q6 I5 T$ ~
hostnamectl set-hostname ceph$Nu, E% n0 W! L7 L7 K+ O! {
NetName=em1 #网卡名称; m" O/ w8 I: Q8 J: I' W6 \
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName. U k0 ?/ H# H- ~
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 192.168.1.10$Nu/24 \
/ c/ x" |# w; _" s2 N6 Z0 ` ipv4.dns "8.8.8.8" #ipv4.gateway "192.168.1.1"
: ^7 k% P( f" _7 @nmcli connection reload #重新加载网络! F1 m) _, o* ?1 l9 k1 f: j
# B3 q1 v6 c. p+ }/ h
* L* s9 l' e7 n, } W' j$ U#磁盘(添加2快磁盘)3 v! @ O& W. }$ I3 p& |3 n4 n
# [root@ceph01 ~]# lsblk9 U6 x E) m0 W
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT" N5 \& t# y" _ x1 E
4 e& z: E* e* }' N( V; X* w9 p
# sdb 8:16 0 100G 0 disk ( [+ P5 [$ x9 F0 B8 l
# sdc 8:32 0 100G 0 disk
( d K) r1 a$ W/ o5 E7 a5 J# \+ `
, F$ N1 k" v5 o# F S8 |###########################
' }5 r) q# _, \6 `5 f" {复制代码8 T( l( I# [: w9 L
复制代码+ A3 p+ {3 n2 k& m6 E( V
#ceph安装配置
* q. Q& y( P/ `- F###########################
1 S' [- m) z. W' W* F! g' R3 B#全部在ceph1操作/ X0 V; h% J5 f" v( z9 c" x
0 u5 Q/ z8 U" e7 Q5 j# H
# #Ceph节点简介
( _ S8 z! x/ e F" r# Mon(Montior)监控节点2 z/ K7 O- ]0 ^; u! m7 R) b& n
# OSD(Object Storage Device)存储节点
* }& U0 {: l3 C9 `6 ^# MDS(Meta Data Server),Ceph作文件系统用到,本实例不配置
* B# b+ m; D/ |% r; N3 r5 i. L* y# }, b. f8 z1 @
#ceph01作为部署节点. p. a0 \; A- C! d7 \; S, |- G
#ceph1 ceph2 ceph3作为Mon
8 i3 s* _, x- }9 r#ceph2 ceph3 ceph4作为OSD' S @! |/ Q! \ z
4 i- K/ g, k& ]7 @+ q5 \+ u#ssh免密验证
' B" S0 \" e; c+ g) h1 V所有节点执行:3 n& s- P5 |* c# o1 H+ z
yum install -y sshpass
4 V1 q" B2 M8 W4 V6 [2 I. C% trm -rf ~/.ssh$ M8 y; c5 L* A
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa; g% B, H) z* m# G) F4 G( E: E
sshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa -p 22 root@ceph1
! l$ s# Z; P; x A( asshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa -p 22 root@ceph22 f. p; l# B; |& U2 D9 `
sshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa -p 22 root@ceph3
' E! \. A- ?% |8 jsshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa -p 22 root@ceph45 T4 m# @ z3 q0 f. Z
#以下在 ceph1节点执行
, b7 H9 y0 P1 z#ceph1 安装ceph-deploy配置工具
/ p/ F. l: `- E D, ?0 {yum install -y ceph-deploy: V( X$ m+ r4 J% e; _( q
4 _" l) y2 t' [! O#创建配置目录
2 ?7 w) W* }$ \+ k' kmkdir /etc/ceph
( i. y) L, ^* v$ S! l8 acd /etc/ceph/
2 f/ v! b& @+ V( Q, z G# x @! e# t7 Q V- o( ^1 M1 @6 P
#初始化Mon配置8 [" K) H6 c0 E/ C/ ~% F/ O7 |
ceph-deploy new ceph{1,2,3}3 M7 I, ^$ f. v$ d
#ceph-deploy new --cluster-network 192.168.1.0/24 --public-network 192.168.0.0/24 ceph{1,2,3}
- J& c; r+ o$ O0 ]( H6 T
! x' e. r; Y1 ?- |' ?. z# #修改冗余份数为2,日志大小2G
! Z# |/ d' X1 \ A# #配置网络,单网卡忽略+ j* d' Q7 |6 f1 Z8 _% l2 c( Z
echo '
5 A! U; o' Q! G) o( I. O6 q o( _public network = 192.168.0.0/24
5 C% w2 w4 P: [5 {$ E8 }& d7 Kcluster network = 192.168.1.0/24
/ v( c7 ^, Z, S- ^
7 |5 H2 q" w, a6 ^7 ~ ^) xmon_clock_drift_allowed = 2 # N( T4 \5 a# M+ [* ^6 ?
osd_journal_size = 40861 H" d" b; U: l/ R' ]* O
osd_pool_default_pg_num = 128
/ m% ^4 U+ e, S2 Tosd_pool_default_pgp_num = 128, A4 ^ _% W8 Q2 G- z5 w
osd pool default size = 2
7 d5 l, {- q1 f7 x0 }! |osd pool default min size = 1! a$ n; h T( N% k2 t
rbd_default_features = 1$ E: s7 l0 @6 i/ t5 v
client_quota = true
6 g0 X6 O+ H$ t, K. f0 V. V# X% ]) Q'>>./ceph.conf
, D, O" n0 D4 e9 |& N
" C& G4 [$ h: |: q% v0 c6 n% w& i" Y#安装Ceph/ h4 O& }1 u; U, P+ n
ceph-deploy install ceph1 ceph2 ceph3 ceph4
2 [6 w8 e2 r t! `7 Y+ s% X, w#yum install -y ceph ceph-radosgw #实际上是安装这2个rpm: p7 ]& E3 V7 u5 o& H
- r4 a3 v* |+ Q) Y, L#初始化monitor和key( `( i1 G# A( A$ i+ {
cd /etc/ceph/# R& o+ D( t( C5 C
ceph-deploy --overwrite-conf mon create-initial
2 \4 _+ A: d8 H# v1 n& o* d7 E* ^
: t" b: W: n( Q2 b#创建存储节点(使用sdb,sdc磁盘)% Z9 l) x" Z/ z9 P( n* A! D! ~
#lsblk #查看磁盘1 B5 o( {; j V& P0 W
8 r' [ ^9 ?) _#创建osd1 O4 i; N8 x# r/ m
ceph-deploy osd create --data /dev/sdb ceph21 C; p' X& W# J1 x
ceph-deploy osd create --data /dev/sdb ceph3
' T' F! }2 u7 |/ p8 ^ceph-deploy osd create --data /dev/sdb ceph4) R( y G- k1 p
ceph-deploy osd create --data /dev/sdc ceph2
4 K! l' p$ u6 v! n4 F5 J8 nceph-deploy osd create --data /dev/sdc ceph3' C0 X, ?1 [; }/ N' u
ceph-deploy osd create --data /dev/sdc ceph4. A4 a6 f3 d2 {0 e' K
+ Y- |" h2 ?- @* v5 M9 w
#拷贝配置及密钥
* ^0 Y$ n. |/ }) X* j' W- Mceph-deploy admin ceph1 ceph2 ceph3 ceph4
! ?8 V/ B- @; Ichmod 644 /etc/ceph/ceph.client.admin.keyring: U K8 L4 Q# L* L: I# ^
$ r/ Q; w2 D" Q% ]
#创建mon
3 q M' n; \: x1 eceph-deploy --overwrite-conf mon create ceph1
8 u: ?: k& `8 [ceph-deploy --overwrite-conf admin ceph1
- L) q/ a; o6 {, ?' hceph-deploy --overwrite-conf mon create ceph2
/ {: J& O5 W5 ~! a& ?& G% U, J% Hceph-deploy --overwrite-conf admin ceph2
L2 v3 k; R+ sceph-deploy --overwrite-conf mon create ceph3
- T( L+ I* j* ?# y$ D2 Dceph-deploy --overwrite-conf admin ceph3
, `% z+ |' F# X9 I/ l/ N
5 r4 q) S$ r( ^, u#添加mgr% v' _) L5 V1 c
#ceph 12开始,monitor必须添加mgr% p# o$ ]3 R1 q) f4 r% Q5 r& ]& _& U
ceph-deploy mgr create ceph{1,2,3}:mon_mgr ^2 J4 u9 Z L% X6 o$ m
#ceph-deploy mgr create ceph1:mon_mgr ceph2:mon_mgr ceph3:mon_mgr Z0 z3 u i* W9 }" w
3 W. [. {8 l4 l# @#启用dashboard (在mon节点)
9 }) Z# y) a8 s* q6 c4 ~3 Fceph mgr module enable dashboard
" \9 z" \% ^& d6 k% t- M#http://ip:7000 访问dashboard
H2 x" T( d$ J. Rnetstat -antp|grep 7000
+ O$ v( K2 x* e7 s5 c( J) ?. b% g& [0 l' C. K( M1 k
# 设置dashboard的ip和端口4 o% r- M, Y( Q5 Q+ r3 E
# ceph config-key put mgr/dashboard/server_addr 192.168.0.196 #vip地址* m) ~. n j; g
# ceph config-key put mgr/dashboard/server_port 70000 C9 v F5 _+ O# R
# systemctl restart ceph-mgr@ceph14 g. L* A* B( i5 l/ Q/ Y
0 l! W6 ^9 X9 h0 B
###########################& b% a3 {& K, x# d; W! b) m; f
#查看相关命令" G/ F" B( x- F1 d8 L" d) I
ceph health
+ }, V+ O# M# w; q# I$ i0 hceph -s7 _* I- P. m) `
ceph osd tree
2 A5 ~ w4 e7 C* K
8 }; W. @; w2 P+ `$ \ceph df
+ R# G. o7 `; Zceph mon stat
W) g9 u1 g# S1 K2 |! Aceph osd stat
* x1 Q7 ~, A5 S: n6 qceph pg stat
# T; C5 I" B6 _' X7 _- L
# X/ o) `: m4 Z+ D6 Sceph osd lspools
* E' P! x* D0 e' M& k5 zceph auth list
2 j( k+ ~5 j2 }
3 q# C8 _, }( P* I* C9 l###########################
# ~! S) n# O5 W#参考
- w& X T" B4 U7 g2 P& G+ L7 fhttps://segmentfault.com/a/1190000011581513+ [) \* P" R/ b0 Z% p
http://blog.csdn.net/wylfengyujiancheng/article/details/78461801
) w% Y' g- W m: x, d5 F
9 d, e7 {" }. R8 K! g# Q. q& Chttps://segmentfault.com/a/1190000011589519
* s" V& i+ h, L( a3 M1 m( P0 N5 Zhttps://www.cnblogs.com/netmouser/p/6876846.html
0 ~# n- t/ B; I$ w) c3 V
L1 L- b/ Y5 x# k0 w* h#中文 文档
+ X# F9 b0 T' N5 N3 zhttp://docs.ceph.org.cn/man/8/ceph-deploy/
% ~8 T& f7 U" p- \; T. p1 H% b |" s8 F% b9 a- S- E4 X1 I
#ceph工作原理和安装
. e6 u) s: I# I/ Y4 J$ H- ]http://www.jianshu.com/p/25163032f57f
" B O/ q2 d+ ~. R) z
( }+ n1 t$ N! ? J7 G#简单ceph性能测试
" u7 k9 Q# d0 s; u( s2 p5 j) v7 u8 \7 U: V
#创建测试池mytest/ |+ D( s# d0 f. q% }
ceph osd pool create mytest 128
2 n0 M# X) Y8 O; \9 B) j8 A) ~rados lspools: W! W6 ^- v* z: S" L
# ceph osd pool set mytest size 2 #副本为2
; T; d! Y! ^. Y d( m1 W3 E. |# ceph osd pool delete mytest #删除
' F$ m$ @3 a/ d3 t; G+ X5 v' P/ C+ N3 J k
* `) B$ [. |; j* s/ @- W
#Rados性能测试(关注 bandwidth带宽,latency延迟)
( `* p, [; R5 m8 e% l( nrados bench -p mytest 10 write --no-cleanup #写测试10秒
$ |- \4 v% p5 l1 k! e+ k: Wrados bench -p mytest 10 seq #顺序读
5 v2 I7 Q% J8 `7 a1 Zrados bench -p mytest 10 rand #随机读% [/ v6 \' }" f: [6 x
rados -p mytest cleanup #清理测试数据* T1 l/ _7 A: e0 z4 i
4 n7 {( b: }3 M( M#rbd块设备测试9 [# C4 `) ^- ]: ]
rbd create --size 2G mytest/test1 #创建块设备映像test1
$ A7 W" w8 S2 F- _% m9 t: Prbd ls mytest
4 ? A, t4 y& u& V' a. s2 arbd info mytest/test1
" p- L; @6 B2 [8 h; V7 K
& |. C \( |; M8 w$ g1 krbd map mytest/test1 #映射块设备5 p& s8 b1 o; K- [: m% M
#/dev/rbd0
/ G' V1 Q g6 i7 ^+ d1 { L) p. _#rbd showmapped #查看已映射块设备% T0 \4 s- T+ U
#挂载
" v* P) `3 v9 V& M# z6 d0 Cmkfs.xfs /dev/rbd0
" @: f, i' n2 K1 `1 Qmkdir -p /mnt/ceph1 p8 I/ O+ D w5 a" l1 h- F' }0 b
mount /dev/rbd0 /mnt/ceph/
* V( z9 z5 i C( ]df -h /mnt/ceph
* s* c% o. {8 g/ T
, L6 d% n$ N6 Y! r! B) W#测试
; I% I3 l6 ^! | M* P3 a: B: S! ?1 crbd bench-write mytest/test10 [! f5 ^3 Q. ]0 H( Y
#默认参数io 4k,线程数16,总写入1024M, seq顺序写7 h8 \5 n% j7 y$ L
. J* ~5 _- b: \
; F4 |9 Z3 h- l% }5 S6 w2 Zrbd unmap mytest/test1 #取消块设备映射7 J% p* g( }' V: S8 c1 h0 w4 W5 B& o7 A
rbd rm mytest/test1 #删除块设备映像3 H; Z- \' ?0 F- }# V D
|
|