找回密码
 注册
查看: 2902|回复: 0

ceph分布式存储安装及简单使用介绍

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-5 17:00:33 | 显示全部楼层 |阅读模式
二、安装CEPH分布式存储6 n7 R8 ?$ q: M% h4 L
1、ceph集群的安装方法
1 _9 }: M; L+ W, U4 m' W(1)通过cephadmin安装部署ceph集群
! H' m$ M2 u% b3 d(2)通过Rook部署和管理在Kubernetes中运行的Ceph集群
2 B5 s& G# j( r$ d(3)通过ceph-deploy快速部署ceph集群
' D2 K' w) y- p+ ^; Q2、通过ceph-deploy快速部署ceph集群( a9 S& F2 d- d: E8 J! L
主机名4 \: S2 B7 L5 m  t# v" _
IP地址
' _: p! W/ y2 l, `( D4 n作用
, R6 K$ W" U0 ?$ c存储盘8 j. ^2 n+ g4 a9 n
CEPH01
/ k/ j& F$ N4 d+ d! c  q2 K192.168.16.171
0 L& q: l8 t4 Z" o3 _* PCeph-deploy osd mgr rgw
, D+ ^6 y! g% x9 e, l2 ?& a+ Y/dev/sdb /dev/sdc4 Z9 }1 G) K# N! G7 h' F
CEPH026 o4 A$ O$ Z6 l  Z! H, ]
192.168.16.172  w* a) u( [, Q, N
Osd rgw
) R3 {- W$ C9 i# C& }1 y9 r9 L/dev/sdb /dev/sdc. f8 {& V9 d3 q, M6 v$ I2 Z
CEPH03
$ U! t/ r! C; O6 a$ d6 ]; }+ |192.168.16.173
, E! h+ D+ |. J- F, e0 q/ O1 D; HOsd rgw mds
! Z$ b* V' a, L% E$ [/dev/sdb /dev/sdc /dev/sdd1 n2 K8 l" O) b& N+ ^
client( E) M% Y& o& G
192.168.16.181+ ]% u; g1 ^- O% w7 C
" E6 A. ^' i- T, E- E6 G

; `- g  V2 n) E3 p(1)安装前准备工作(在ceph集群节点上都需要操作)% K1 a0 i  s2 X  e' X9 y7 ~
1)关闭防火墙和selinux(或配置防火墙策略)* T) Q. I' H2 p. F
~]# systemctl stop firewalld
+ `+ q4 x3 {* I# W~]# systemctl disable firewalld
! l! G2 z0 h8 X3 l# Z6 m. G~]# setenforce 0: _; r; e: M. X; @: K$ y9 o
~]# sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config: W# C% \6 c' N! s
2)配置时间同步
. F0 j$ ]. H7 N- S3 m, z$ c* E# 安装ntpdata及epel仓库/ ?- a) A* M8 c8 c- N
~]# yum -y install ntpdate 2 k: _- ]9 p: R3 a7 }
# 添加时间同步定时任务,如果有内部时间服务器地址,建议配置为内部地址
* j6 Q1 R% }* M; L~]# crontab -l/ r# t( a: Y4 V5 I
*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2&>12 t. m) A/ c: U% d* W; Y% Z# w
3)配置hosts解析
2 |6 z) p* \+ ^' I~]# cat >>/etc/hosts<<EOF% s8 M* u$ G7 x9 Q
192.168.16.171 CEPH01
2 R5 b8 _1 t& C7 V% D192.168.16.172 CEPH02
6 P. L1 c4 |) f; V3 Z# j192.168.16.173 CEPH03' ?2 O1 o6 [$ G8 h1 A3 I$ I  h
EOF( _6 W6 k' p" X  a2 T( e& x
4)添加用户并配置sudo权限
$ L' z' O: y( t, P  `# e( M! @! R~]# useradd cephadmin2 o$ U% V4 G6 M, s# s" J
~]# echo "dayi123"| passwd --stdin cephadmin, O+ V' X: L3 H8 B+ u3 C3 C  C
~]# echo "cephadmin ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadmin
+ D6 A$ S3 }/ P' D9 j7 ^~]# chmod 0440 /etc/sudoers.d/cephadmin
0 `7 {; X% J% ], K8 u" X8 W. x' A8 \5)配置cephadmin用户免秘钥登录- q3 t: A- H+ M
~]# su - cephadmin. D5 ^* H, _8 m/ f5 C$ \% i$ \) Y
~]$ ssh-keygen3 p, @5 B( y$ X0 b! ?* R2 `: d
~]$ ssh-copy-id -i cephadmin@CEPH01
( T, o- ?2 V) g# j~]$ ssh-copy-id -i cephadmin@CEPH021 I7 D  K) |$ `6 A1 C
~]$ ssh-copy-id -i cephadmin@CEPH032 d- O' E  }" z: W0 _5 U: U
6)配置ceph-deploy的仓库地址(使用root用户)
& i8 U/ D7 H7 V# k8 q# }~]# cat << EOF > /etc/yum.repos.d/ceph.repo" o# r( }) m4 z
[ceph-noarch]
4 w( k0 l. \8 {" B9 g8 pname=Ceph noarch packages
8 P. @2 w& f/ i  Nbaseurl=https://mirrors.aliyun.com/ceph/rpm-15.2.4/el7/noarch/
% B& L4 l/ o% s" w! \/ j  L2 Wenabled=1
# S# j; W) q6 |) C8 }- ^3 e* }2 ?gpgcheck=1! A4 W8 H; g0 N
type=rpm-md
8 [5 Y8 d( f7 a5 k. ]- u8 n( ]gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
% O( L! T1 G" I+ NEOF
% _; B; [" [6 T+ j8 J(2)使用ceph-deploy 部署集群(在其中一台集群节点上操作即可)
3 {+ a3 P! T& O$ d, W8 K   1)安装ceph-deploy% ]' M) p& g$ B: s
~]$ sudo yum install -y  ceph-deploy
! V; u4 i9 |! _4 V0 Y~]$ mkdir ceph-cluster
! |+ }% R9 [2 i' @4 q1 O~]$ cd ceph-cluster/
/ ~- P7 J' R7 H7 N9 P   2)部署节点5 A* b4 ^5 r  c9 S6 T; {4 `
ceph-cluster]$ ceph-deploy  new CEPH01 CEPH02 CEPH03, h3 q8 Q7 m) \: H4 r7 Q$ a
Traceback (most recent call last):
; ~2 I& p3 x5 X- ~  File "/bin/ceph-deploy", line 18, in <module>
# K8 o. W- n$ \6 c3 U    from ceph_deploy.cli import main; C# W" K& w- B& Z. Y
# 如果报上述错误,则需要安装python-setuptools; z; m. b' q7 ?8 V& u6 b! {
ceph-cluster]$ sudo yum install -y python-setuptools
' z2 t  K( e7 `- y# 重新部署节点
0 m# I; z% \; s* G" N& q0 _5 Wceph-cluster]$ ceph-deploy new CEPH01 CEPH02 CEPH03
+ n& P( ]/ g6 E# L0 Z9 ?. D& @# 上述命令执行成功后会生成以下文件2 T. y/ q; E  U9 W# y
ceph-cluster]$ ls
, G  O! h: K, J" q: m! Jceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring! K5 d. L+ J% P$ s0 |" j
   3)编辑配置文件
- D2 p, h' A  ~8 P6 G9 y& b      在配置文件中添加与网络相关的配置,因为此处只有一个网络,所以public network和cluster network配置一样。8 D4 y- i1 Y* k# I- `
ceph-cluster]$ cat ceph.conf
+ R% F4 D2 P. h7 o/ o......
! M. t: c. ?1 Mpublic network = 192.168.16.0/24
" Q& M9 d: M' r# x: _cluster network = 192.168.16.0/24
$ @7 d0 T2 d) l. r8 {4)在各节点上安装部署ceph
. L0 ?! L( \/ o5 ]. `$ D1 V# 部署节点0 S# C2 B+ d9 r! g
ceph-cluster]$ ceph-deploy install --release jewel --repo-url https://mirrors.aliyun.com/ceph/rpm-15.2.4/el7/ --gpg-url https://mirrors.aliyun.com/ceph/keys/release.asc CEPH01 CEPH02 CEPH03; K2 `8 Z0 t" J0 k# H
# 配置初始 monitor(s)、并收集所有密钥
( Z  x3 r8 A" ]ceph-cluster]$ ceph-deploy mon create-initial8 i% _& J* D5 o
ceph-cluster]$ ls -l *.keyring
$ L% ?3 x1 Y: q-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-mds.keyring
0 q7 S) N% U# s3 P: ]4 q-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-mgr.keyring* e% @3 q2 z# @9 T, \  L3 J' \% Q
-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-osd.keyring
; r  J. V  ^  ~: F% @-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-rgw.keyring
' f- |. I+ ?$ A6 h; Z-rw------- 1 cephadmin cephadmin 151 Jul 31 10:25 ceph.client.admin.keyring! @2 P+ X" H. X2 ~0 F3 V3 S9 l
-rw------- 1 cephadmin cephadmin  73 Jul 29 09:05 ceph.mon.keyring4 T5 h1 D( D" P* }7 e& e. _
# 把配置信息拷贝至各节点
* N' d3 T4 U% S8 T) L3 e& c( Tceph-cluster]$ ceph-deploy admin CEPH01 CEPH02 CEPH03
: v( i6 q& f+ z' R5)配置osd/ y( a7 B9 {" \  z( A
]$ ceph-deploy disk zap CEPH01 /dev/sdb7 L, y& V2 P' z# _
]$ ceph-deploy osd create CEPH01 --data /dev/sdb; x) b  `0 f  a
]$ ceph-deploy disk zap CEPH01 /dev/sdc
6 ~/ l$ O9 ~" W  a& P]$ ceph-deploy osd create CEPH01 --data /dev/sdc3 c* g" x9 i" T, K: i3 g& S
]$ ceph-deploy disk zap CEPH02 /dev/sdb
1 u# R8 k- G! w2 ?# F  J]$ ceph-deploy osd create CEPH02 --data /dev/sdb
& j6 X) ?3 x; A- z' k4 N]$ ceph-deploy disk zap CEPH02 /dev/sdc+ {- ?: Q) ?+ L* Y
]$ ceph-deploy osd create CEPH02 --data /dev/sdc
" |$ a6 r0 P) ~( D9 ^]$ ceph-deploy disk zap CEPH03 /dev/sdb+ g$ h: K* R4 k& F7 M5 J
]$ ceph-deploy osd create CEPH03 --data /dev/sdb& s3 k. v0 `# n) D4 q! q! x
]$ ceph-deploy disk zap CEPH03 /dev/sdc8 m( y/ [- W7 u8 y) r$ s# v
]$ ceph-deploy osd create CEPH03 --data /dev/sdc
+ M( `/ f! m  a+ b+ h' N]$ ceph-deploy disk zap CEPH03 /dev/sdd
/ J# J. l: D$ P]$ ceph-deploy osd create CEPH03 --data /dev/sdd. B4 t+ E: e7 f* B) U! ?4 v
* [! n. _* _1 E& B1 j
6 S0 a" v: r1 Y$ i
三、CEPH块存储
7 P* O3 s9 k8 A5 y1、安装ceph块存储客户端/ c2 F9 B" g' l1 F& r' H6 `9 }! {
      Ceph块设备,也称为RADOS块设备,为客户机提供可靠的、分布式的和高性能的块存储磁盘。RADOS块设备利用 librbd库并以顺序的形式在Ceph集群中的多个osd上存储数据块。RBD是由Ceph的RADOS层支持的,因此每个块设备 都分布在多个Ceph节点上,提供了高性能和优异的可靠性。RBD有Linux内核的本地支持,这意味着RBD驱动程序从 过去几年就与Linux内核集成得很好。除了可靠性和性能之外,RBD还提供了企业特性,例如完整和增量快照、瘦配 置、写时复制克隆、动态调整大小等等。RBD还支持内存缓存,这大大提高了其性能。Ceph RBD支持已经添加到Linux主线内核中,从2.6.34和以后的版本开始。, K5 Q' i' L- L. y
# 为ceph块客户端创建认证用户名和秘钥
" h$ T1 d/ v1 S( O& x. F7 wceph-cluster]$ ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=rbd'|tee ./ceph.client.rbd.keyring
  z/ E. i) L  K1 o[client.rbd]
" H+ U! F8 T8 [9 dkey = AQAJ3yRfQy4AMxAA4dhmN/68/C+I6dPdGSDTew==7 f# H* [6 X7 G- p0 g2 o3 @+ q
# 把配置文件和秘钥文件拷贝至客户端
1 b+ m* Q& _( l2 _% f  kceph-cluster]$ scp ./ceph.client.rbd.keyring /etc/ceph/ceph.conf root@192.168.16.101:/etc/ceph/
, P: U# N/ q# S0 m! ]+ p# 将yum仓库文件拷贝至客户端
( J& v# w# p) q8 |]$ scp /etc/yum.repos.d/ceph.repo root@192.168.16.101:/etc/yum.repos.d/
+ r1 b1 @$ J4 V& k& Z# 安装客户端(客户端操作). m+ e) K; Z. e1 F& q2 A/ c# q
~]# yum -y install epel-release
0 l7 ^$ W2 a1 w# s* z" x4 ?3 P; P~]# yum -y install ceph
/ q# @# h+ _; _" F8 E6 r# 查看对象存储
( h2 J, ~7 e: L& @6 e0 Y~]# ceph -s --name client.rbd/ C! J: s3 T5 d
  cluster:: a7 n$ n& L4 S; a. ~3 u, o% p2 g
    id:     6bec7eb7-3d58-47b6-93d5-452916971002* m  U7 T0 B0 u5 s7 `
    health: HEALTH_WARN
' J$ s& }- u, L: |# A& u' B5 ?            Module 'restful' has failed dependency: No module named 'pecan'
' L+ W( n# \  ~1 I
6 z' `* ]" d  P0 s( O" x7 y  services:
) J" d9 r0 ]/ p) g7 F    mon: 3 daemons, quorum CEPH01,CEPH02,CEPH03 (age 14m)- U% c( p: V2 z  y$ o) p5 |
    mgr: CEPH01(active, since 8h), standbys: CEPH02, CEPH03* G. W5 F0 r/ z0 y1 u5 f/ Q
    osd: 3 osds: 3 up (since 17m), 3 in (since 17m)
) k4 I( S1 f1 J  g. h9 M & }' i& R% G1 j) i* h1 E  W3 B- Q
  data:5 j# C' Q' N% @! o: v' c
    pools:   1 pools, 1 pgs
- N- [/ B8 t9 x) P  O/ r    objects: 0 objects, 0 B
% B% c" `( ~4 I# L/ b) m4 `/ s  q    usage:   3.0 GiB used, 27 GiB / 30 GiB avail3 H$ T9 N4 {* G6 i# V( w
    pgs:     1 active+clean9 M6 S1 Q- q7 o4 o+ u' M
2、为客户端创建块设备  F0 H+ X2 N8 `% L! O/ d
# 查看集群存储池(ceph集群上操作)7 F5 d- ^" f! _/ j2 l" ?
]$ # ceph osd lspools. h0 t6 Z3 A4 U* P
1 device_health_metrics
/ @8 q4 ~4 N4 R8 V1 S6 W0 K' J: d% e# 创建存储池
( o# z( f" ^& N2 _  p- x4 T]$ ceph osd pool create rbd 128
7 q$ W: C4 U  [' u# z2 fpool 'rbd' created) `' ?0 Y' u8 K7 }/ ]
# 查看存储池里面pg和pgp大小
/ S1 Z0 y5 W; q0 x% r1 H/ e]$ ceph osd pool get rbd pg_num
1 `7 o7 ~- C3 l5 T9 k% ]3 T1 spg_num: 128
. l/ x; q; n$ C, r6 \$ N$ d3 H]$ ceph osd pool get rbd pgp_num
! _4 q4 p2 s" ?pgp_num: 1286 v0 I( O6 {- |9 \8 f, x# N
      50 为 place group 数量(即pg_num),pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值(官方文档地址:https://ceph.com/pgcalc/):6 p0 Y7 F. _" S5 ], \% E( L( U
      1)少于 5 个 OSD 时可把 pg_num 设置为 128; Y: M3 B# i+ z8 @" ^
      2)OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512( L" y3 k( V7 `; V
     3)OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
- ?3 C' p0 ^( R; G; s( z  A     4)OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
4 c" d4 Y, x: f( {# T! C* W$ Y# 为客户端创建块设备(在客户端操作)
" |* t) J% M! u$ d2 X! _~]# rbd create rbd1 --size 10240 --name client.rbd* f7 s7 y' ?: B1 O" o3 [8 V
# 查看创建的块设备
3 \) n& {; a# T! c3 D. E~]# rbd ls --name client.rbd
6 V5 a2 x* S- L( D+ h" p  erbd1! f. _* ?/ H: f! e
~]# rbd ls -p rbd --name client.rbd' W6 l# `9 _# I' C$ `' X# o
rbd1
6 U& \) @, I. H% w  W6 P8 v~]# rbd list --name client.rbd
: `9 p9 k6 |& R5 x/ Irbd13 n. }1 R& r- R4 X  ]2 }
~]# rbd --image rbd1 info --name client.rbd7 O5 B: I( B* |
rbd image 'rbd1':+ e  h( N; S  _7 [/ D
size 10 GiB in 2560 objects) @5 k- M4 j/ L, |
order 22 (4 MiB objects)
- D6 Y9 {+ z# j# q- X+ u8 x9 `1 Fsnapshot_count: 0
& ]3 f4 x* @3 Q  I. c  |$ _- l+ Jid: 10f5fac0a87e1 U" v5 l; ]; w; D0 c3 [
block_name_prefix: rbd_data.10f5fac0a87e
6 q% w/ @: T0 J0 Iformat: 2% A# j2 _: \9 R. @
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
' K/ c. _2 Q! H: eop_features:; v, P" Z* Z# e& n
flags:2 G& d) V3 [6 G7 f9 f7 d
create_timestamp: Sat Aug  1 21:06:42 2020
5 F7 {* a  I2 ?access_timestamp: Sat Aug  1 21:06:42 20205 r; F: j# m5 F" ]. E
modify_timestamp: Sat Aug  1 21:06:42 20201 u  [, ~) W* E% Q1 F
3 p+ Z  q/ U6 h5 y# [) K0 a2 \; l
3、为客户端映射块设备
0 A" P6 }2 ]" Q6 @- ~3 e' W      在客户机上使用块设备时需要对象映射,部分对象映射的功能只有在内核4.9中才引入支持,如: 排它锁定支持(exclusive-lock),对象映射支持(object-map),深平(deep-flatten)和快速diff(fast-diff)。所以在映射时先禁用这些功能。禁用方法有三:5 M1 _  v( I" z. Z/ a
(1)动态禁用9 ~8 R, c+ w2 k5 V
      rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff --name client.rbd
( p5 I' k; B& Q' A3 p" V# Y(2)创建RBD镜像时,只启用 分层特性。3 }* ^4 O6 E! C3 o7 i3 `; `
      rbd create rbd2 --size 10240 --image-feature layering --name client.rbd
( e* }" Z  c' b, @* y2 l; I9 Z(3)ceph 配置文件中禁用+ ?$ M) E/ Y0 p% ^/ l- F2 y
      rbd_default_features = 18 u* Z3 z0 F. N' g# [# ]$ M
# 没有禁用前映射会报错
. v3 _/ u8 N. w8 i~]# rbd map --image rbd1 --name client.rbd
2 \5 Q3 T4 l: M/ drbd: sysfs write failed
) o+ D: u$ B& F" r9 o: ]6 KRBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable rbd1 object-map fast-diff deep-flatten".9 R$ T1 w& l& h; t3 J) z
In some cases useful info is found in syslog - try "dmesg | tail"., j8 l8 }, f3 c: H6 D$ U$ m
rbd: map failed: (6) No such device or address
4 k' W8 q2 `9 \- g2 p3 w9 A# 动态禁用后再次映射,需要去cluster节点上操作(ceph集群上操作)
. F$ n8 m! {. J# `: Q0 O2 I~]$ rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff
+ J$ H; r1 \% v3 E6 t; R& K# 再次在客户端上映射
$ p. G+ i% S6 S( |& ~+ T~]# rbd map --image rbd1 --name client.rbd4 E% N" X+ i* g0 o! _
/dev/rbd02 _9 H: M3 O/ i5 j
# 查看映射的块设备3 p" I2 c% ]  H8 w7 [; }0 _+ y
~]# rbd showmapped --name client.rbd# Y! Y/ I7 C* S; [5 t9 N+ g
id  pool  namespace  image  snap  device   
% X- I" J0 |8 @% i. X) v+ V( p0   rbd              rbd1   -     /dev/rbd00 U4 M* e& z! d' J, P; h
       映射完成之后就可以挂载并使用。
$ a8 [' p& D8 Q% q# 查看
5 ]+ c& Z! M# E~]# lsblk- g. @4 X. q' l, b* D4 e4 `  o9 _
......, G4 p% W% g2 a  d
rbd0            252:0    0   10G  0 disk
3 A2 |- P0 d* b0 v$ L5 g/ i# 格式化并创建挂载点挂载
3 |2 h( v1 T$ F5 q7 E9 F) ?+ i~]# mkfs.xfs /dev/rbd0" z! |* F+ p- {- d1 P- N/ c
~]# mkdir /mnt/test-rbd
; i/ B6 Q6 U' h4 [; c+ v4 C/ `~]# mount /dev/rbd0 /mnt/test-rbd/! `; x# ~# n. {7 a! B
~]# df -h8 Y4 r& \# ~1 q* w. w$ y& ~1 c
......
. U6 ]) W' ]) x$ A6 w( ]7 G6 K, K/dev/rbd0                 10G   33M   10G   1% /mnt/test-rbd
/ ]  _% F1 p5 y) f% t1 ~7 r9 n) ]1 C9 o" a5 R+ |  d
3 ?: G6 e' L' p( ]& A9 m6 b* f
四、CEPH对象存储
  l/ ?9 l/ @8 ~" A$ H* N3 u+ u1、部署Ceph 对象存储1 z* R# W8 C( K/ r6 h
      作为文件系统的磁盘,操作系统是不能直接访问对象存储,它只能通过应用程序级别的API访问。Ceph是一种分布式对象存储系统,通过Ceph对象网关提供对象存储接口,也称为RADOS网关(RGW)接口,构建在Ceph RADOS层之上。RGW使用librgw (RADOS Gateway Library)和librados,允许应用程序与Ceph对象存储建立连接。RGW为应用程序提供了一个RESTful S3 / swift兼容的API接口,用于在Ceph集群中以对象的形式存储数据。Ceph还支持多租户对象存储,可以通过RESTful API访问。此外,RGW还支持Ceph管理API,可以使用本机API调用来管理Ceph存储集群。Ceph对象存储还具有多站点功能,即为灾难恢复提供解决方案。
0 P" P* i  k8 m( Y
. D! `( B* J" J3 m( M1 h+ A
6 W2 d+ i4 F$ ^# 安装ceph-radosgw,默认在执行ceph-deploy时已经安装(以下在ceph集群上操作)  ]- T8 P, h9 m, s  P% F. Q
]$ sudo yum -y install ceph-radosgw$ K# _& u2 R$ c3 n
# 部署rgw
1 z3 [1 ]' j2 R: W$ fceph-cluster]$ ceph-deploy rgw create CEPH01 CEPH02 CEPH03( k$ j' f+ p5 i7 g+ J! C
# 下载创建池脚本1 H, P- ~% _$ v6 r' [: R9 }& t
ceph-cluster]$ curl -o pool https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/rgw/pool
+ B0 |' \* C+ xceph-cluster]$ curl -o create_pool.sh t https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/rgw/create_pool.sh
0 r6 G& ^. e- e1 m/ c# 根据自己需求修改相应参数
' H; |/ C/ N9 ^# \* z- Aceph-cluster]$ cat create_pool.sh
0 K" u' u3 I, }/ j) X' Q! M$ s0 p#!/bin/bash
, j; }! A' i9 w1 i' k4 A. TPG_NUM=10# c$ h2 J* Q4 d" k
PGP_NUM=10- Z# J7 L% U* v& N  c
SIZE=3
2 R! e8 h/ |/ }8 ^1 nfor i in `cat /home/cephadmin/ceph-cluster/pool`! h. ^0 h: d: F3 b
        do0 p* w. }  Z' }0 u& E& w5 o& G
        ceph osd pool create $i $PG_NUM
! r0 F7 T$ d# x8 `9 R        ceph osd pool set $i size $SIZE
. {4 K' ]" W: p. {2 q( K        done
5 G$ W; |  Z. \% vfor i in `cat /home/cephadmin/ceph-cluster/pool`- o9 H8 k1 H% U& c) t- U
        do9 O* @# I: R9 s! T) F
        ceph osd pool set $i pgp_num $PGP_NUM& X) ~1 w4 \0 ~/ ~2 ~
        done5 B# G. r2 n, F+ ~% ]
# 创建池
7 }0 K. o3 w' z9 Yceph-cluster]$ create_pool.sh4 ^# R5 c9 N7 r! m& e' Z
# 测试是否能够访问池9 c+ c" U6 O& \  w0 A6 O0 q
~]# ceph -s -k /var/lib/ceph/radosgw/ceph-rgw.CEPH01/keyring --name client.rgw.CEPH019 J% y. I0 g4 {& n% Y* p
  cluster:. V+ z, ~  B2 `+ h: p4 y
    id:     6bec7eb7-3d58-47b6-93d5-452916971002
" O' l7 G: V6 F2 x% x    health: HEALTH_WARN
; \2 J& T# D# w9 b            Module 'restful' has failed dependency: No module named 'pecan'
" c% I" h8 H6 q+ u2 m            1 pool(s) do not have an application enabled
/ s, s7 z. r8 n3 i: B% E# W) ~            6 pool(s) have non-power-of-two pg_num% ]. i* @/ L+ E
            5 pools have pg_num > pgp_num. X$ y! ~/ m: M& U
  services:) b( \7 H+ O* j0 j2 r, r, b6 B" M
    mon: 3 daemons, quorum CEPH01,CEPH02,CEPH03 (age 69m)
  T: N% k' c' T& Z9 k    mgr: CEPH01(active, since 67m), standbys: CEPH03, CEPH02, u* ?' @3 I1 b/ f6 r/ d
    osd: 3 osds: 3 up (since 47h), 3 in (since 2d)
2 T& z" \3 J  P( a' X9 |( M3 x    rgw: 3 daemons active (CEPH01, CEPH02, CEPH03)" w" L7 ~- O* u  D* O
  task status:
$ Q5 p% `1 v) A' S" c0 |/ a# b  data:
0 M( L) G' h( k: G( e5 C    pools:   11 pools, 245 pgs
$ x9 Y# l7 f+ k5 e1 w7 B1 [( W* x    objects: 211 objects, 14 MiB0 Y, g$ j3 i, a
    usage:   3.1 GiB used, 27 GiB / 30 GiB avail
) V5 v0 p  |5 g0 A; H3 A    pgs:     245 active+clean
7 I* V2 T$ ^+ o7 W* A  t$ z2、使用 S3 API 访问 Ceph 对象存储% P: j. P, j9 I
# 创建用户,并记录access_key 和 secret_key (在ceph集群上操作)6 [/ U" [  i4 n" e
]$ radosgw-admin user create --uid=radosgw --display-name="radosgw"
) M" r9 C- N- d; Q6 O& T4 m4 d; w# 安装客户端(客户端操作)
3 S8 U0 I) y0 [7 ]; u( v2 a/ [! A~]# yum install yum install s3cmd -y& e: ?, w! K$ j& s1 J' w) y# |
# 生成配置(客户端操作)
6 ?7 l) j& M+ [2 h$ [1 R! T* D~]# s3cmd --configure3 }+ n; i# I( {+ }1 s% j& w
# 修改配置(客户端操作)) Z. _+ n. T& Q( |; L
~]# vi /root/.s3cfg
6 D/ N$ d1 J) e) s+ H: [bucket_location = US1 z- R* S0 g3 V( [1 {
host_base = CEPH01.dayi123.com:7480: _( C0 I3 C7 p% a1 T# e" T0 ~
host_bucket = %(bucket).CEPH01.dayi123.com:7480
3 X! [9 f# ~: D5 D. x# 添加hosts解析(客户端操作)
" q* S6 ]9 W7 Z! T3 B* ^~]# echo "192.168.16.171 CEPH01 CEPH01.dayi123.com" >>/etc/hosts
( q+ D% r0 l; Q0 C0 ~/ X# 创建桶(客户端操作)
0 H9 {+ \5 e* y; x  h* x~]# s3cmd mb s3://dayi123
$ W& S' C2 V! L8 T6 \2 X1 d+ wERROR: S3 error: 416 (InvalidRange)
3 m. h; S. T! L& h* v      如果创建桶时报如上错误,则需要将其他对象存储后台驻留程序(OSD)添加到群集或将“mon_max_pg_per_osd”的默认值增加到300以上。
5 ?) f+ ^% x% v  D4 y( H# 修改配置文件- a9 F2 [3 C3 u$ a3 N7 g" b, g0 n
my-cluster]$ vim ceph.conf
! m3 e; D, X- Q& d% F8 D......' w) U$ E! t3 [1 c7 Q) |
[mon]
( X7 _4 m5 j% P" m$ r8 d! g( {mon allow pool delete = true
( L8 p. g- r- Z3 i% m. W+ Rmon_max_pg_per_osd = 300
2 [: t* z  _4 q  G( Q) q5 F- P# 拷贝配置文件至各节点& r. l; M. q7 k: |# P3 l) [
my-cluster]$ ceph-deploy --overwrite-conf config push CEPH01 CEPH02 CEPH03
% Y7 {; h  v  `7 c: B$ a! }0 I. [6 @' b# S# 重新创建桶并将文件放入桶中% |' N6 o; X' j. b) k0 m
~]# s3cmd mb s3://testbucket$ ]5 G9 ]% B6 h
Bucket 's3://testbucket/' created# z7 ]  \& P$ m( ]! z3 l+ A/ H
~]# s3cmd put /etc/yum.repos.d/ceph.repo s3://testbucket- Y7 p$ ?6 z9 j) [
upload: '/etc/yum.repos.d/ceph.repo' -> 's3://testbucket/ceph.repo'  [1 of 1]: b/ L0 |  N% O' l9 a3 U4 q+ V
674 of 674   100% in    0s    34.19 KB/s
$ }+ Y. b9 Y. ]5 z# T8 p 674 of 674   100% in   12s    52.87 B/s  done
5 e% |9 [* Y, g. K& I( @2 V# 查看桶中文件
  L3 l) k& e! B6 ]' l& z~]# s3cmd ls s3://testbucket
! z8 d4 D9 ~' U2020-08-04 13:26          674  s3://testbucket/ceph.repo3 t( ]( ?) e% k( @& |0 C4 u' p
3、使用 Swift API 访问 对象存储2 R0 I6 Q3 ~* \- f: R" A
# 在ceph集群上创建 swift api 子用户并记住secret_key( c2 ~: B4 Y. Z9 H* L: W% l! f5 D
ceph-cluster]$ radosgw-admin subuser create --uid=radosgw --subuser=radosgw:swift --access=full
6 d- |, j+ I; F# 安装swift api客户端软件(客户端操作)
# C0 j7 H6 x) x~]# pip install --upgrade python-swiftclient
3 w" c: E& q& e# B, o7 C5 b0 o# 通过swift创建桶
* I$ j1 J7 T+ w& \& j' k+ \9 q~]# swift -A http://CEPH01.dayi123.com:7480/auth/1.0 -U radosgw:swift -K AKYbLdvWfccaVwto49sCT5nFlwo0QnYArQ8TIlBZ post testbucket25 B: J/ I5 y6 o! x9 v
# 查看桶% v# P! e* b. W; s
~]# swift -A http://CEPH01.dayi123.com:7480/auth/1.0 -U radosgw:swift -K AKYbLdvWfccaVwto49sCT5nFlwo0QnYArQ8TIlBZ list/ p; N2 _) b8 {  b
testbucket9 `, R4 s- \! _% J2 S! e7 l  E/ m  P8 G
testbucket2
3 B; G! J' ]& n+ H, t  _
* l* c% p( x2 I2 P
- l: t0 D( ]  s* Z+ I* t' n( o& r* n* R五、CEPH文件存储
% e+ L- n" c; t3 j' u% r0 p1、安装
1 _: \4 F$ [0 e      Ceph文件系统提供了任何大小的符合posix标准的分布式文件系统,它使用Ceph RADOS存储数据。要实现Ceph文件系统,需要一个正在运行的Ceph存储集群和至少一个Ceph元数据服务器(MDS)来管理其元数据并使其与数据分离,这有助于降低复杂性和提高可靠性。) I* k( k4 y" E0 M
& `/ |- ?1 K. }8 f) l0 d/ K6 b/ g
* x4 K4 N& s' Q9 P8 U" v# {
      只有Ceph FS才需要Ceph MDS;块和对象存储不需要MDS服务。libcephfs库在支持其多个客户机实现方面发挥着重要作用。它具有本机Linux内核驱动程序支持,因此客户机可以使用本机文件系统安装,例如,使用mount命令。它与SAMBA紧密集成,支持CIFS和SMB。Ceph FS使用cephfuse模块扩展到用户空间(FUSE)中的文件系统。它还允许使用libcephfs库与RADOS集群进行直接的应用程序交互。
7 C) Y& y/ T* B# c7 A/ ?( k# 安装cephfs0 g* e, ]( f' G' \, z
ceph-cluster]$ ceph-deploy mds create CEPH03
9 b! Y& j$ S. D3 Z1 J# d6 c# 创建存储池
! g/ w/ @$ q# M, l3 J  z5 }: |3 [% Uceph-cluster]$ ceph osd pool create cephfs_data 64  D) I) X9 B5 b( U
pool 'cephfs_data' created- X; P7 N$ l1 a$ `. D! t
ceph-cluster]$ ceph osd pool create cephfs_metadata 32" ?1 R3 Z3 z) e% h5 ]9 W
pool 'cephfs_metadata' created
1 v3 V% M) x) d7 h! P7 d, G! M! R# 将存储池添加为fs存储
( T: S4 P1 v- t" f' q9 eceph-cluster]$ ceph fs new cephfs cephfs_metadata cephfs_data) M% e2 v) r5 d# ~' A, V
new fs with metadata pool 23 and data pool 228 Z1 i; ]0 Q% X, _# c7 m
# 启动mds
1 w$ t1 g2 n9 q, ~ceph-cluster]$ ceph mds stat
! v- J7 Y+ ?5 n! _cephfs:1 {0=CEPH03=up:active}
, }4 Z0 g) Y0 c0 P$ Q2 X, S$ ]# 查看存储池7 R+ ?5 D9 n4 ~
ceph-cluster]$ ceph osd pool ls
& e: {3 {5 U: M3 j2 e# 查看对象存储存储池
. d, X9 w! X* u( e5 ^9 N0 \ceph-cluster]$ ceph fs ls
/ q* e- o4 Z, S7 p4 b  Jname: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
' w: W) L9 m2 v; ]7 p# 为文件存储创建用户及认证秘钥
  W9 r6 Z7 A/ X8 Gceph-cluster]$ ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow r, allow rw path=/' osd 'allow rw pool=cephfs_data' -o ceph.client.cephfs.keyring
, H4 W2 V/ e6 O# 将秘钥拷贝至客户端% F' b5 ?3 n1 K3 w; \
ceph-cluster]$ scp ceph.client.cephfs.keyring root@192.168.16.101:/etc/ceph/
; i! }# y9 j( c: Y$ q  h$ f2、挂载6 B  N% p3 x* d' k* C# g
      在Linux内核2.6.34和以后的版本中添加了对Ceph的本机支持,可通过通过内核驱动和FUSE客户端挂载Ceph FS。1 a, x: E. o! s
# 在ceph集群上执性获取key
, ?' |- H4 L4 P+ rceph-cluster]$ ceph auth get-key client.cephfs
9 O  K. L- v5 m0 b- k) YAQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg==6 I. L- B. }, m1 ?. i
# 在客户端挂载,先创建挂载目录,在挂载
0 v: u1 _# e' B6 g. g* h0 Q+ z: @6 J2 ^~]# mkdir /mnt/cephfs, e6 B. W* j% w; u! M
~]# mount -t ceph CEPH03:6789:/ /mnt/cephfs -o name=cephfs,secret=AQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg==
4 N8 c! r2 I* E4 ^~]# df -h /mnt/cephfs/, G7 o# v8 F" q9 b0 Q
Filesystem             Size  Used Avail Use% Mounted on. n3 C$ h0 e& h4 \8 ^; q( P
192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs$ I: w4 z5 l# a8 p1 C: M4 u. V
# 也可将key保存至文件中,挂载时制定key文件
- o, V% T2 X. J1 ]& t~]# echo AQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg== >/etc/ceph/cephfskey5 A( N3 ^! ?$ O+ s. H1 v2 _# g
~]# umount /mnt/cephfs/$ |9 U4 p) ]' v
~]# mount -t ceph CEPH03:6789:/ /mnt/cephfs -o name=cephfs,secretfile=/etc/ceph/cephfskey, `) z! T" _# o5 e" q: }
~]# df -h /mnt/cephfs! C8 K* u. n9 B! {8 l' F4 c2 ^! t6 ]
Filesystem             Size  Used Avail Use% Mounted on
) f, [2 c6 A4 [( b8 j192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs- H5 t; F9 L9 I. S) B4 |" u! E
# 也可将配置写入fstab中,开机自动挂载,_netdev参数为网络启动后挂载
$ j! C$ M9 ]! A# j- [~]# echo "CEPH03:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime 0 0" >>/etc/fstab
, B3 }+ [9 K- G' u# 验证挂载
* k& v; O3 t! o$ z7 w+ P$ Y~]# umount /mnt/cephfs8 ^. Z( H: |* j: V/ ~- M" `
~]# mount /mnt/cephfs& x( v! g. D  v+ }
~]# df -h /mnt/cephfs/
+ J! F" }7 \. v$ H6 x: C: `7 G3 p5 {Filesystem             Size  Used Avail Use% Mounted on$ c* ]. D7 ?$ h+ @( j/ r; i
192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs3 h. }+ e8 u! H* z( Y2 @+ m
4 s9 J/ o* g' P# g- ?. S
  F) x7 m0 ^. f5 q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 02:20 , Processed in 0.013113 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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