找回密码
 注册
查看: 1526|回复: 1

Ceph对象存储如何部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-2-9 10:11:24 | 显示全部楼层 |阅读模式
因公司项目上有使用ceph对象存储的问题,需要了解测试这个对象存储的问题在哪里,于是找了很多相关的ceph对象存储资料,现在就来看看Ceph对象存储如何部署
4 n+ O- Q2 J' n' z
; _( \+ K# w5 \; K! G0 Q8 u+ s9 z" P  T1 f. m" }

2 g7 y" x1 i6 X" I6 T首先呢就是部署一套Ceph环境,这里就不再赘述了,网上好多安装文档,都比较清晰了。
9 R6 i' Y  q7 @) x1 L8 G' V" P7 m9 b9 m3 e

& O  }, j5 h- p, [' ~) }' b- F. K6 k. E) \- D) `1 P
重点说下RGW部分
' E; l7 }! Y. z8 Z, ^" V) m0 W: R- h5 l5 d; ?. O1 b

: N8 B* A" ]+ ]8 a( h/ U& q, @6 J7 k) r' n% o
安装完集群之后
/ j7 g% v8 _" P5 B  f# |8 J3 T! d2 R& r4 H9 ]/ j! w
ceph-deploy install --rgw devin-ceph1    #因为是测试所以只用一个rgw; t8 K. `" S# a) N

" O+ B; I+ f% N然后创建RGW实例
- t  T4 s0 [4 l; H! U1 ?/ {4 L/ T4 F
ceph-deploy rgw create devin-ceph1
* L8 s1 ~. I6 v* Q# y$ L+ z1 c  X+ l3 P7 A. W3 S$ W2 q' j
那么这时候就OK了,成功后会提示你访问7480端口3 \: O  N1 ~' E& p: Z% _
. l3 T5 C+ Y, \. R
http://10.0.100.201:7480
& o" D8 h" i& W' W4 Z! H* }* K" k  j# p1 X1 {2 i) ?6 ~6 U4 _. s' ]
你会看到如下内容:
& Z( d( W" {0 o+ ]* {' W. N- Y6 ~5 d, o( [4 M! X# O. d
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">: U0 \; b  @3 o( F  ]
<Owner>
7 a2 Y8 D4 F- r  |6 t, ~) \3 ]<ID>anonymous</ID>- D& u+ I) W+ T0 K/ H7 z
<DisplayName/>/ r$ r& F; B( J  h) I, [
</Owner>; u# o# B$ W  X, L* q+ L
<Buckets/>
. N' l) y: K4 [5 G</ListAllMyBucketsResult>: [  q8 i8 J  H9 Y
( p$ |& p3 b3 R6 s
由于RGW默认采用的是Civetweb,默认端口是7480那有人会说了,那我可不可以修改RGW端口啊。答案肯定是可以的。9 }! ~& G$ O+ H2 `0 Q- o1 t

; d2 W, G% j3 \) l! E1 s" x$ n$ `# @/ I! ~

1 |  B# ?4 ^% E. y修改Ceph配置文件进行修改。下面看看我的配置文件( Z4 C2 K8 Q$ j5 M& v! \' X
; G3 i! T: P" O. C. u
[client.rgw.devin-ceph1]
/ m. l& N* Q# vhost = devin-ceph1* S9 A$ D' f6 A
rgw_enable_ops_log =true
0 y- J. ]7 X) r, `rgw_frontends ="civetweb port=80"/ I4 X7 T$ I, \1 ~1 d1 _# @/ X) s
rgw dns name =  s3.devin.com$ g2 }' ]7 q  C# B7 y% e0 M6 a
rgw socket path =/var/run/ceph-client.radosgw.sock- \6 l/ V' d( k9 k6 a: Z  d0 m1 w
keyring =/etc/ceph/ceph.client.radosgw.keyring
& y0 ?9 K. b* |. n  k7 {
8 E. j" A' d. c4 M& C
* t  \; a, q5 H7 N" H! p% c) ?8 l& F% H" O
可以看到我的端口设置成80了。
* `5 Z2 J, m. ]  R7 p0 \, H3 J$ M8 C. s3 i" C' U- ]
5 M3 N2 G7 T/ X; @0 Z% m

: R2 k2 X  j! V, G4 R) W修改完配置文件之后同步到个节点然后重启rgw服务
) U0 {. L8 v( g) U: ?0 s
- a6 B* T* B" `  jceph-deploy --overwrite-conf config push devin-ceph1 devin-ceph2 devin-ceph3
3 f3 y% b" R: F" G9 T" C$ a/ M$ A7 ?& e6 y, y
systemctl restart ceph-radosgw.target8 k8 ^1 w: W. ^0 n' m
8 @) T% j6 M0 W: t4 I: B
那么到此RGW安装完成了,那么RGW怎么使用呢?或者说怎么证明我的RGW是好的?
  ~. W5 |& N( A- r" X' C; k# {: {, z* ^9 N' w+ A6 K% _, U% p: ?! L/ y

; g8 v$ Y% t5 u
. n5 R) v: v, y  S, A; t, l可能会有人说:你笨啊,刚才都能访问页面了,就证明成功了呗。
" K8 J0 p9 l: a! Y
2 x$ H  L9 i2 c& P6 S0 d
! Q' k# `: k: k) S+ X% D4 q" z& _( h! \* Z% b! L  _" H
可能又会有人说:光访问个页面管P用啊,要能用才行。; b) s" O7 L6 ^7 ?

  P. i1 V/ L- R' b: T
3 \2 _+ v. J& U4 Q( R4 v
3 j. g6 c, F; R# J8 @% c别急,下面我们来说下两种方式来玩,一种是S3cmd方式$ W! K- @( G. ]7 s; e: d
1 A& {. h: F6 ], \/ e( r
' ]: T4 V% v4 P( t; g" e
; `% d& ^2 X9 q4 a! U* P
首先安装S3cmd5 r) s* c+ E' r! [; N' v6 z+ l

0 L; G3 V9 h4 B8 Z' ?: J" Kyum –y install s3cmd# Y1 n/ ]! r8 J5 X7 m- B- g
! d' o$ [8 {& @! @+ ~5 V7 f
安装完之后运行s3cmd --configure进行初始化配置(说白了就是生成个配置文件)( |7 u5 f$ J( b) h/ a

$ B, q& U' d7 ?2 F" t/ o+ ~0 P6 w: D! \. {
. c8 }- X8 P6 {3 x
然后会提示你输入access key和secret key,没玩过ASW相关产品的童鞋可能会说,这俩key是干嘛的。用行话来说呢简称AK和SK。所谓key嘛就是用来认证和验证的。我们来看看如何生成。
, U* l, w5 z6 w0 }1 ]% I* n2 Q' W  a8 s; |' _8 I" j

- I4 v9 c. O8 s% j2 H% N' t" c
( |) ]8 h; |, R0 H3 c你要用工具连接RGW那么首先得有用户吧,那来创建个用户
; i3 u) k" C: B2 u: J/ r$ z) M" Q( J* z& j1 d4 P2 V# ~+ [' L8 {
radosgw-admin user create —uid=devin —display-name=“Devin” —email=devin@example.com) e$ n9 k# k* R8 K8 l: Y: X# T2 d% G

! t0 E7 |2 J7 s5 Q" X; n% E' z6 Z2 h" e创建完之后会有AK和SK的信息,记得复制下待会还要用。  x4 h; g4 ]2 \3 x, H4 F
$ S6 i5 w( m: |6 m, k) `. T  h) |
& X3 j5 g1 |) A

  _! `  n2 [* J4 e7 @" u那么复制完之后在进行s3cmd –configure配置% |) ?7 J1 e" d# x8 P
9 [/ s4 H% h+ t2 y3 S8 k- z0 w( h
7 y6 h$ j& t2 B; @! g

6 x  U' z1 V; S* E! y9 _1 @5 F8 k配置完之后就可以开始玩了。附赠s3cmd常用命令
; }: q. I) x  }/ T
1 ~) n0 }5 K' K. qs3cmd ls  #查看可用的bucket
$ @: I; b4 n! o3 Q, v/ d& Os3cmd mb s3://devin_bucket  #创建bucket,且bucket名字是唯一的,不能重复/ V# Y" K' d8 E: G/ Z( o  y- m
s3cmd ls s3://devin_bucket  #列出bucket内容& m1 `' j+ P- |) O, v6 \; g9 Q

  c& q" u4 ?" l% Y0 Y4 xs3cmd put devin.txt s3://devin_bucket  #上传本地file到指定的bucket
& Y9 Q, h  i( g' m1 fs3cmd put --acl-public devin.txt s3://devin_bucket  #上传本地file到指定的bucket,并开启file的匿名访问权限; ]) `. K6 z6 ^1 J" O/ [7 `  V$ N* p
s3cmd get s3://devin_bucket/devin.txt  #下载file到本地
* l: O1 s4 Y- D9 k* Q* G7 a- q0 C% p; p8 S" ^
可能在玩的时候会遇到问题,那么怎么排错呢?
. p+ [/ P0 ~  z' ^- T/ l! t1 X/ P/ _! G% b8 c
8 y  W* [! N3 D# m& x  D
5 m" {% e$ E, U/ `$ u# N, r
可以在s3cmd的命令后面加上-d 也就是开启debug然后排错。8 a9 p# M; {) ~1 ~

7 b( x3 g/ P7 r
1 w8 N0 @0 }* G- y' ]
# y- `" Z% ]5 B+ `! m+ j/ o8 u遇到最多的问题就是解析问题。那么如何解决解析的问题呢?, J+ x" P, q# J* o% ~4 u% ^& A5 f
6 I5 I& f; R# E
* e, n+ s, _& X5 \$ a
7 V; R7 ~, ~; }% G
可以查看下这篇文章 《教你如何配置轻量级DNS》。
( d4 B& l! h, Q8 U( v; v1 F+ g  G) a2 r: a
4 H+ S- |- J1 x; f3 j' M: f
; O6 a& ^1 R5 |% z  n3 T
然后还有一种方式,就是python-boto方式
2 O- ^8 ~. b! D6 z
7 h" K! h3 H# X+ F* Q! T1 l* J  D0 b9 T

7 Z% A" d  k% S首先安装python-boto: e; f( Q1 S; I
# @. `: x! `7 `. ^; o8 L% \
yum install python-boto7 I2 q* {5 w+ |0 j7 u

4 n$ l4 w- P4 q- P0 b8 E" W然后创建个python脚本
! `0 Q0 s" R- @2 L) T) o& g% q3 I% P/ X; `7 P2 E
vi s3test.py
& J' f8 W( h7 u, O$ B. D, Z. V. c6 }( H. j/ O- H8 t
内容如下:6 d: g" ^3 }: b$ w" I- `

' L4 y1 w; Y8 E& |& simport boto.s3.connection+ G( F$ f0 @# [9 N; _$ G0 r
1 j% ^( u* T. p* ]% F& ~% W
access_key = 'Y2S78LKZ1ROD0MGIDUBC'
, z3 W3 J& P' p$ L+ Z% e6 S- n( Hsecret_key = 'LyGCgoydLI2MGA7C0PtynyfBa3aKODNYQ0sHDMtP'
# [) T$ e4 [* A, T6 Lconn = boto.connect_s3(
1 b  C5 \0 o" Z, p       aws_access_key_id=access_key,& a( A0 m. S) R) V
       aws_secret_access_key=secret_key,; \/ k% y2 A5 w( t3 ~+ P* R
        host='s3.devin.com', port=80,
! G$ L0 ~( R7 B0 O3 o4 A; U       is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
3 C/ V. U) s3 W1 \' `  N1 F       )4 Q- U; C1 }. W' s. E* ^* H
( G5 M. _7 N3 U% C) e. p6 K
bucket = conn.create_bucket('devin-bucket')
$ O: I) O$ x: P* p: Xfor bucket in conn.get_all_buckets():
5 |0 D* ]5 Q; i1 @& l( {    print"{name} {created}".format($ c1 E3 M" x! E
       name=bucket.name,
/ `! k7 m$ G4 y" ^/ e' N9 V       created=bucket.creation_date,
/ @9 w) w7 u3 a: O& q/ S)
) u+ O, ^& I; l7 y! c/ ^2 k, `4 k5 r$ `
3 c; y( l$ G8 }" t8 s- F这里要注意修改的地方就是AK和SK还有host域名! A; c- S, H. X, J* X3 P

* `, d* {8 n  S) I% |1 i7 Z& F3 n3 p0 ]8 U* C

; B/ t" }% U! b4 p完事之后就是执行下脚本7 z- l# s( t# d" G
& ^, _- b. E0 n* ^
python s3test.py: P! _- \. l; i) L! ]( _
/ m+ X+ F8 L3 T" W* I1 L# Y; D
脚本大概意思就是说导入boto s3模块然后借用AK、SK来进行验证创建一个名为devin-bucket的bucket,创建完成之后并打印出来结果。. N, z. I4 c9 f8 B
) E: w: X' v; e9 a- U) A$ E

4 k! `: @/ J; G
: ~) i# E9 y0 c5 w! ~5 V
2 r6 x: ?% {4 C! K- T1 c
$ L- l3 @1 @% W" aOK,本文Ceph对象存储到此就讲述结束了下篇文章来讲述如何对接OwnCloud网盘应用。
2 n3 a6 {, O3 V; p3 v$ ]) e& P" ]% G5 C6 ?/ P8 y2 H6 I7 ]

  K* [$ `2 f- F, C' r( q# N- b, {- Z3 i

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-2-9 10:17:40 | 显示全部楼层
2. CEPH网关服务配置
& l3 v6 v* N! }1 Cceph网关其实是ceph集群的一个客户端,用户通过这个网关间接访问ceph集群,作为客户端,它需要准备如下内容:5 C& }' Q+ i  l! u9 z1 B
网关名称,此处用gateway称呼
9 V; I% S0 v1 X8 d一个可以访问存储集群的用户以及对应的KEYRING
5 _9 R; V, u/ M! ~数据资源池,这个由ceph集群提供: E9 a# k% K* s0 A$ T" C5 Y# F. V
为网关服务示例准备一个数据存放空间+ |3 d+ @1 `4 ?9 X- P$ j7 [
在ceph.conf配置文件中设置gateway信息
& K! Z2 \3 P5 Z1 m
1 i8 I$ Y- m& i2.1 创建访问用户及权限设置
+ T) g. I8 e6 j2 c创建gateway keyring,一开始该文件为空7 `8 n* K' b) V- Z+ }

. l) s8 a! w3 l# V. qsudo ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring
& g8 u! q3 M- x, `8 psudo chmod +r /etc/ceph/ceph.client.radosgw.keyring. P& ~6 B. q4 H
创建网关用户名以及key  此处名字为 client.radosgw.gateway
  b9 j, o" F! U0 N1 L- F) D# d+ B/ w  M/ a4 Y3 U& }/ z+ G
sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key) w; d/ Y. G: x" i. J) [1 n
为KEYRING添加权限' A5 d$ m+ _# J+ O# i& U

% F6 r! k" v- o- |6 o: csudo ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
7 \4 @7 |7 h) v5 }将key添加到集群中1 l8 G9 m6 V: \! ?4 i0 d/ L
$ ]7 h- K5 @4 L2 B/ O) `4 t
sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring: x4 b; }2 \5 j. H# s9 e
将相关的KEYRING文件拷贝到rados-gateway所在的主机 /etc/ceph/目录下1 E  [4 w- K+ ^. e3 O& C

7 e' U' G# U: z1 r2.2 数据资源池创建
' A7 b8 |( e' k  l0 ~. @.rgw.root( U- f6 ]4 H5 i) F2 I
.rgw.control
: e7 d+ \8 d4 |5 [* T.rgw.gc% K* N: h" o8 h* j1 [$ @( V
.rgw.buckets5 g' G4 R5 N  o; \8 ?
.rgw.buckets.index" v; x1 W1 L+ y3 s0 |1 \% y
.rgw.buckets.extra' t7 T3 }" Y! |/ B; C7 W9 K
.log
) j  O  h# R- T. r5 J% ?.intent-log
3 ]  b) D' f0 b7 t9 ]; T( e.usage
# x* W2 B$ s; k; N9 d% a.users
6 L; p3 W: t/ R  V3 w. V# p.users.email
$ o6 ^! T% B, _9 L' z6 H: A. a.users.swift
% \% Q  Q2 L  W& C.users.uid
  P$ J% s) z. [[root@gnop029-ct-zhejiang_wenzhou-16-34 conf]# ceph osd lspools% W4 [3 f! J0 K1 `) u! s! t8 C
4 rbd,6 pool-1,7 pool-2,8 .rgw,9 .rgw.root,10 .rgw.control,11 .rgw.gc,12 .rgw.buckets,13 .rgw.buckets.index,14 .log,15 .intent-log,16 .usage,17 .users,18 .users.email,19 .users.swift,20 .users.uid& D+ G% Z" h' i, L; t0 h, ^! N
2.3 将网关配置信息添加到集群配置中% P( X! y$ G% A9 d. L
[client.radosgw.gateway]$ U, M% S3 s+ |  |% p5 @. Z
host=ceph-24$ r6 J" L: l+ h% |% g1 `" `
keyring=/etc/ceph/ceph.client.radosgw.keyring
. ?  }2 E3 o7 rrgw socket path=/var/run/ceph/ceph.radosgw.gateway.fastcgi.sock# M0 p7 n) J; a( X) C
log file=/var/log/radosgw/client.radosgw.gateway.log
( k; U- P4 f3 i" x) w2 Nrgw frontends=fastcgi socket_port=9000 socket_host=0.0.0.0
  t4 R6 \& W1 C3 h) grgw print continue=false
8 z) q; V  F& m2.4 目录及权限调整" P/ V: h+ j9 v- S, D; X
创建数据目录
$ L& i( C& Q# h% V/ |7 k
3 V$ q2 k; U: ?sudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway   
: ?  H: l3 C$ H) f( \9 d2 y调整apache运行权限+ i+ p  g* ~8 n# D7 n& ?; b
sudo chown apache:apache /var/run/ceph/ u' _% I+ ~2 G! `+ A
调整日志权限, t: p. J" v) K* W! i9 T) `! t/ A5 Z

2 u* O; I8 q# w  p$ i3 G7 Vsudo chown apache:apache /var/log/radosgw/client.radosgw.gateway.log: C8 V3 e- F2 E3 u5 B& R$ m3 W  T
启动网关服务sudo /etc/init.d/ceph-radosgw start9 Q, a' @) I5 X  u3 S, G2 [; r
7 V- R# i8 V- @5 [
2.5 网关配置文件
' ~3 U& @4 U" {一个配置文件,用于web server和FastCGI之间的交互  h. x/ m% d& ]- o' g" X+ L
sudo vi /etc/httpd/conf.d/rgw.conf
" ^( v# a, r6 ?- d" J# E
* Z$ |( F" c/ N5 o/ y! ^<VirtualHost *:80># ^- r9 D- A2 k. @5 S/ v
ServerName 101.67.163.34
4 t% h6 w, n% q9 y' @$ v4 U0 vDocumentRoot /var/www/html1 V6 o, T; ^$ u$ ~
, C7 O* ?0 P( ^( o6 n
ErrorLog /var/log/httpd/rgw_error.log$ q1 \8 ?" S  l6 k( l0 A8 p
CustomLog /var/log/httpd/rgw_access.log combined% K) j" |! e5 l7 ~  o+ Q2 K4 ^2 K

) v2 ]6 S" Z' }2 r: Q7 t" f4 mRewriteEngine On3 [! s) ^# H1 b5 _0 q! k" X
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L], W: C: _7 Y2 x- I, W! I9 Y! I
2 W. G" U' ]! U7 s
SetEnv proxy-nokeepalive 1; s: d5 S* \, K4 R/ S2 @  m, |
. E  w* \) P7 f, ^; m
ProxyPass / fcgi://101.67.163.34:9000/
/ e& ~, @6 S0 C. a. L& s8 v</VirtualHost>
! O8 |) \2 l3 s其中标红的地方是要根据实际情况填写, t) B+ ?9 y+ B

6 X" y' o9 F! m" i0 \2.6 用户创建$ p7 @" x$ r! H3 u! h9 c$ J/ L0 R5 h
radosgw-admin user create --uid=xuwenping --display-name="ceph xuwenping" --email=xuwenping@d***n.com
% C1 v0 @2 w  U0 j/ `; E& k5 k* b{9 o4 v1 ^& y& P. e3 Y) P# n
    "user_id": "xuwenping",
6 }3 \% G2 y; i! Q% z6 k5 Y' U    "display_name": "ceph xuwenping",/ o8 @) e" }' S
    "email": "xuwenping@dnion.com",
! k+ Q) c: y3 S! v    "suspended": 0,. J" K% u% m, N: L
    "max_buckets": 1000,8 R0 X. I( L, R4 \9 m/ Y
    "auid": 0,# |/ H0 u5 ?# @/ l2 s" T
    "subusers": [],
& N/ {1 s" \* a) y+ C, ]9 ]: q* K    "keys": [
6 d( G7 m1 S- Q. C, W* v1 `9 i        {
3 T8 G! D" x1 H9 s0 G$ I            "user": "xuwenping",
# @" x1 z- V. V0 U  J7 A            "access_key": "4J3GD7GJIJKSDCVS1I9T",
3 A8 a1 t0 z2 N( ~1 ^5 N3 O            "secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"
5 ]9 W7 }+ i& d! f1 a: D7 Y        }& P) r* Z0 q9 W8 ]# G$ Q
    ],
! n) ?" O3 F: N4 }. X+ o! x) ]    "swift_keys": [],3 o/ B" \) \' g
    "caps": [],! ?- X" x  b- @. ]7 n) P
    "op_mask": "read, write, delete",
8 L$ A5 X0 _$ R- b& S    "default_placement": "",
8 m! B/ i' X& q1 B7 {8 L    "placement_tags": [],
4 C) s/ h, k+ R! R    "bucket_quota": {
) L5 E" Y/ }% q  A5 O! P6 g0 c        "enabled": false,
( f% t4 `# C. |4 y        "max_size_kb": -1,  T5 r" P+ S- O( a" i, ^
        "max_objects": -1. n8 M/ M& p! B' g
    },6 Y+ P% {  d) X) d
    "user_quota": {
( R+ y# S- |" L1 h8 o        "enabled": false,! d4 Q9 Q  u" F7 m
        "max_size_kb": -1,2 Z( f  u- X8 G
        "max_objects": -1; }/ @0 |0 y* W2 y
    },
% q6 h2 S/ F9 D& c9 ]    "temp_url_keys": []
& L9 }. E. [! U7 ]7 e4 \! }}( W2 n: G6 T0 l, m" ^
创建SWIFT类型USER
7 o9 ?- f0 W% g5 K5 [# A2 c- S6 J8 y, V6 R  l9 r
sudo radosgw-admin subuser create --uid=xuwenping --subuser=xuwenping :swift --access=full! G; r* N/ N& {+ q( a8 o, j- c4 Z

9 @% {. v, a' C' u2015-10-10 14:19:19.854951 7f402eadc8a0  0 max_buckets=1000 specified=0
; R( k% U% c" x{/ h. I( h" ]: n" G, L8 l
    "user_id": "xuwenping",/ p; s& {, K+ U. ^# {9 p
    "display_name": "ceph xuwenping",
. Q8 `6 S. u) P4 e, G( v1 J# A' k    "email": "xuwenping@dnion.com",( H) F8 [8 S2 Q  T) ~' V
    "suspended": 0,
' v" n) D9 q/ d: R, J7 b    "max_buckets": 1000,9 B3 Q( w, f9 |/ V
    "auid": 0,8 X; g6 X6 i0 g8 t4 k7 F* Q
    "subusers": [7 P- @' K5 H4 a4 O  M# S
        {
& B( T3 ?) w& t5 [4 K: W3 m            "id": "xuwenping:swift",( E  o$ T7 P2 _; X6 |; ?# C
            "permissions": "full-control"- i  {  K, i3 {. I) X0 J, }% h& m* p9 U
        }
( U$ K# }) D4 y3 n1 |    ],
9 Q9 {- n( h% C- ]9 p0 m9 G$ s    "keys": [
% j: \  B$ z+ ^: P        {. Y' d) l# p9 ^% M/ ~5 N
            "user": "xuwenping",2 U$ p9 N1 B& D' [
            "access_key": "4J3GD7GJIJKSDCVS1I9T",
& L- R7 B; |) W+ d* L! e            "secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"
* l* e* n# t* n, {% O0 {% I! C* V        },
" _4 [+ k) r4 ~; r# n        {' U- W" q+ S1 p, Y8 ~  B1 }- N
            "user": "xuwenping:swift",4 @' n/ ~( m9 r  c$ K
            "access_key": "PEIT99BBWMZP31BD6S3I",0 U; |" F6 U; g9 C5 `% |
            "secret_key": ""+ l" o7 ]5 p" V# l, g9 `& K
        }1 o4 F# x2 y( B$ p5 A5 {; f
    ],
' g1 H! Z/ q% m3 _+ N1 B- w    "swift_keys": [1 K( ]+ V5 T& M
        {, s, r! X& D, R' {7 A" s3 M
            "user": "xuwenping:swift",
9 E; u) Y, }4 C' g/ p1 b            "secret_key": "qWHPhvUy4md1XSa2PSbcxUyMU5YXodlqxt0ZC2hn"
( j8 C8 v% r7 v, @7 N        }8 T, w; e# L6 Y! V
    ],
. c2 ?( c9 F- [" a    "caps": [],
( S! ?% {, `: ^3 L* J# u- Y    "op_mask": "read, write, delete",
3 X7 p/ ^( Y- m( T* q    "default_placement": "",) J5 O% u, l8 Q, f5 j+ h8 i
    "placement_tags": [],. z# U& m6 X# n' p  t, |) z
    "bucket_quota": {
2 v4 _% A3 r/ \; z* q. w        "enabled": false,
4 i9 i, M$ A8 p& C7 `        "max_size_kb": -1,) f  ~; Q* l9 L! E8 Q
        "max_objects": -1
' r! X# o: d. _- Q    },1 Q) {" B' c1 `9 B' R0 |; [; H3 v
    "user_quota": {
5 F) \7 D2 N: X6 N# Y4 ^) T. j% u  ~        "enabled": false,
3 l6 @% y5 M5 F, z; F8 a7 ^9 ]        "max_size_kb": -1,4 V0 k5 b$ x! T" D5 ~/ e2 f
        "max_objects": -1, W4 S. |  R; `1 J; R
    },
$ z# Y+ w4 _& y    "temp_url_keys": []
; v# v& T: Y7 T$ m3 s" z) r}
! W! o: |0 b  G7 G2.7 实际验证
/ x5 W* V+ j0 i; n) b% b编写了一段python代码,用于访问网关,并创建bucket,并通过list方法罗列出当前所有的bucket (官方示例)
3 @9 M+ U) t# J% Y: s' P# e& d3 I: i. K: S( N' v0 n
依赖库安装4 t* {' N! j# G$ k/ f) Q
# V& w" r6 s; a. m! v5 g
sudo yum install python-boto# @4 n( S# R( {
import boto
' X* s% Y7 i2 `7 J9 Vimport boto.s3.connection& |3 F6 p' t+ m% s  K4 f$ a
access_key = '4J3GD7GJIJKSDCVS1I9T'
: r" ~1 B% Y) ?$ _secret_key = 'yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I'
- N6 T6 F& j. @conn = boto.connect_s3(
+ p7 U9 B8 s) B2 Haws_access_key_id = access_key,
, ~( C0 u# _; w# n, Maws_secret_access_key = secret_key,
) ]& V, j9 }' O: l7 q9 M" thost = '101.67.163.34',. \! D( X7 {& d! S6 I$ i
is_secure=False,) Z' m1 V# G- ]0 i% l; H
calling_format = boto.s3.connection.OrdinaryCallingFormat(),2 F3 U" c# p( c% @
)) g' m; ~2 o# K: k6 t
bucket = conn.create_bucket('my-new-bucket'): Z- e; [/ u& h+ I! c8 [( P
for bucket in conn.get_all_buckets():7 i0 h$ E3 q) V8 t0 n
        print "{name}\t{created}".format(
3 v  e9 u  y6 p8 @0 B2 L9 \                name = bucket.name,5 q% E. |5 w  q- x% _% v& D
                created = bucket.creation_date,. k: k* n4 h" l: r6 X9 m
)1 H' J/ ^  F9 u7 N1 u5 m1 |
运行结果: L2 g/ {/ x( P5 u8 o# q
) y8 p. y4 ^( v6 L% n* `
[root@gnop029-ct-zhejiang_wenzhou-16-34 ceph-rados]# python s3test.py ! w) |: b, U! T% b- [0 s
my-new-bucket        2015-10-10T06:23:48.000Z% N# F" m6 Y* q! M
至此,Ceph集群的对象存储网关安装设置完毕
. g' V8 m8 O6 u+ a" c3 x9 e, ]& S! Q/ ^
附:* W5 e& G8 i4 Z3 j

. T# ~: n3 a; L3 ]有时候通过yum安装软件是报如下错误:
3 o: n5 W9 x) x0 l- Q% ?; _' M, n, L2 [2 |; y$ q
Downloading Packages:/ u/ b$ \  ?4 L- ~. ?/ j% b
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
/ f  Q8 ]& a' VRetrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
5 s" u* ~3 E6 w2 U! T4 B9 n; y5 ]8 Y: F) ]/ m

4 h2 r2 k" U; p6 |/ i1 `GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
5 I* t5 g7 N# @: D在执行 安装命令时带上如下参数即可:, B/ A  @6 x% s$ U' K7 B8 u

( g# y7 u. m. e+ o* F; myum install mod_proxy_fcgi   --nogpgcheck
9 Z! e: f$ V+ t& i/ X到此,关于“Ceph对象存储网关的安装配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!1 k3 A3 l; D* I7 M  R, K, x
3 H3 F$ c$ f' W; d/ f% e8 |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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