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

Ceph对象存储如何部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-2-9 10:11:24 | 显示全部楼层 |阅读模式
因公司项目上有使用ceph对象存储的问题,需要了解测试这个对象存储的问题在哪里,于是找了很多相关的ceph对象存储资料,现在就来看看Ceph对象存储如何部署3 g( C3 I0 w/ |5 |; V7 j& p- u
9 o1 `: d% Q3 ?. Z8 X2 r

* r- q% N$ h4 x+ V# Y8 E3 G0 _7 I$ F  i1 q! t4 w  d
首先呢就是部署一套Ceph环境,这里就不再赘述了,网上好多安装文档,都比较清晰了。; D$ j8 }0 G8 T, d/ m$ F

  o' V8 J+ x7 k0 e8 R2 ]: R" d. n- \( M5 ~! |

- }% b" s) d( k# \9 U& U重点说下RGW部分
6 L5 g* A3 J/ [, c" ?- H! t
1 v9 G, v6 [8 N7 j$ U& q$ z
/ P: x, k: `- {" }/ J& A
  s( X6 [9 w2 g7 f! y安装完集群之后
5 I- N) e6 Y# Z* I. Y! g* O+ e' t0 Q6 v9 v$ T" f4 {1 C) J
ceph-deploy install --rgw devin-ceph1    #因为是测试所以只用一个rgw
8 r! j+ K# Q4 E: j2 `2 J+ _9 L9 ^$ S/ ~+ W
然后创建RGW实例% ~0 n- l: v$ D; Y" H' |

5 _0 A! h' I2 o# [ceph-deploy rgw create devin-ceph1
5 u4 e8 B+ f" s- h8 u! {3 |5 p" d) S% h/ ^
那么这时候就OK了,成功后会提示你访问7480端口
1 W1 _1 o/ a* D- w
1 C0 [1 M7 @, P9 ]http://10.0.100.201:7480
/ _1 i- I2 ?/ K! h
$ @4 T0 Z% n" C+ O, z: \你会看到如下内容:. J' b+ f7 W" Z: B
. p' L- R& F5 @8 n5 _
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">7 T) @- O7 z+ H6 a, m4 {7 s
<Owner>/ l, [, [( U0 W
<ID>anonymous</ID>
& u3 H* j# F7 m" ]9 N( N<DisplayName/>% @  d) O) d7 L6 V0 U
</Owner>: v' j" g- L3 L+ j- G, t0 `0 K% J
<Buckets/>
9 d- \9 O0 W& r5 u4 G' b$ x4 I</ListAllMyBucketsResult>5 B+ ?6 f* ]2 ^
2 F0 z- w0 B1 R; J
由于RGW默认采用的是Civetweb,默认端口是7480那有人会说了,那我可不可以修改RGW端口啊。答案肯定是可以的。
( n/ a8 ~" I0 ?0 ~5 p# x
6 A' M6 r4 Y$ c  m. k. n6 _9 N8 D- l+ X1 R

2 ?# o- E; |4 C$ S, F修改Ceph配置文件进行修改。下面看看我的配置文件4 \/ {0 g/ Q2 O4 o
% u3 n+ |+ @2 o5 B8 X) Z  c
[client.rgw.devin-ceph1]: H! v1 n' Q% J0 l! D0 `4 Z' _
host = devin-ceph1/ X) G+ D; h( x8 ]* ~) d/ D
rgw_enable_ops_log =true
6 H# N. [8 ?' n0 A* O" b  g0 nrgw_frontends ="civetweb port=80"
+ N+ F5 C+ j! Z8 @3 Mrgw dns name =  s3.devin.com
2 y+ h8 g; M7 E3 p8 Prgw socket path =/var/run/ceph-client.radosgw.sock
4 t1 R  q7 C% J" N4 V3 C7 @5 }1 f5 nkeyring =/etc/ceph/ceph.client.radosgw.keyring- O  y* P" ^3 w! f! D7 J: q

3 K% o$ E( d) y
, w! I3 o" c6 c/ ^( x3 W# |& o/ t% r; H$ j
可以看到我的端口设置成80了。
1 _3 }: |+ t6 \: Q3 F( _# d
6 C6 n, Z! ?$ b% D- B' t$ U: @$ O, l+ B- ]
) y5 ^7 `( A/ M: t0 d5 V
修改完配置文件之后同步到个节点然后重启rgw服务
  D/ s, u; V  {0 L9 ?' S; M4 o0 n9 N. e% l5 I- ~
ceph-deploy --overwrite-conf config push devin-ceph1 devin-ceph2 devin-ceph3
2 T2 u& |2 O, z  H  }) X. q+ R4 D
systemctl restart ceph-radosgw.target
1 w. I$ _. b, F' A) g! `
5 f/ q+ f; }* n9 F, h. ^8 v9 X那么到此RGW安装完成了,那么RGW怎么使用呢?或者说怎么证明我的RGW是好的?
. g. E; e/ |2 P3 e+ V2 S% d, H' q1 i5 ?5 ?" q& |# A/ s

9 a# @9 k; |$ d  _. s+ K7 u( V# V" ^
可能会有人说:你笨啊,刚才都能访问页面了,就证明成功了呗。
- E, z+ Y/ c' a1 b- F- [( d% {* i2 b/ ?

1 R, A$ G# u8 W0 {) v4 _# i2 f$ E2 T& N
可能又会有人说:光访问个页面管P用啊,要能用才行。
  E6 `, }& ~2 P
* K8 E- C, k8 N; N4 n! G7 m4 v8 _9 u2 Z+ @' Z- m9 S5 e
; X" d" Y% @% |* P$ J
别急,下面我们来说下两种方式来玩,一种是S3cmd方式4 k. M4 o, z6 B! O. w

6 @$ q- Y( L% x( R( }4 ]
6 ]; c0 {0 B3 Z+ B- g
4 k, [% ^0 ~3 d8 Q$ ^首先安装S3cmd
4 e$ J. S1 ^" c% Y; U
  X1 m, ^* z/ `- ?; Jyum –y install s3cmd, k4 Q& @6 F/ L* L! @
  t4 @3 m* d0 }  y2 D* R
安装完之后运行s3cmd --configure进行初始化配置(说白了就是生成个配置文件)
( R5 n! b, m6 n) B
3 w" r# z3 c2 f/ k
" f% V: Y* R' I" G
* n) L! A& ^& Y9 D6 v8 ?然后会提示你输入access key和secret key,没玩过ASW相关产品的童鞋可能会说,这俩key是干嘛的。用行话来说呢简称AK和SK。所谓key嘛就是用来认证和验证的。我们来看看如何生成。
7 ]8 |$ j! Z5 E
- ^& O* g& a# ~2 g) f. M
/ |9 R; U+ H7 E0 I: e, ~
1 ]: N/ y1 f: V- {你要用工具连接RGW那么首先得有用户吧,那来创建个用户* Q, S9 y: e6 I+ Q; [7 P. W) m
7 T6 z$ T0 C1 t. l' L
radosgw-admin user create —uid=devin —display-name=“Devin” —email=devin@example.com9 J3 S- r. q! b  A
4 u% \  `+ W* ^3 s& ^
创建完之后会有AK和SK的信息,记得复制下待会还要用。) I2 q/ T( Q: S+ Y
! d, Z; |  Q. [1 c2 D
) E  T( H% C8 h
5 a: i) r8 y! V1 P2 ^
那么复制完之后在进行s3cmd –configure配置
% m1 o  S* ?8 ?' y: o: A) ~# W
# A9 Q. f  o- d  }. e5 Z' S! u5 ]8 V0 p7 f% ?. e! i7 s* O

; w, A/ L; Q: V配置完之后就可以开始玩了。附赠s3cmd常用命令
/ ^1 P. o, \* d* Q. q9 L2 ~$ A, y: h) e7 ?; Q1 ~1 _
s3cmd ls  #查看可用的bucket, V2 J7 D/ P* ]3 I
s3cmd mb s3://devin_bucket  #创建bucket,且bucket名字是唯一的,不能重复3 o% {1 E, d& J
s3cmd ls s3://devin_bucket  #列出bucket内容- f0 n4 m+ Q: a$ Z; W6 K* w2 J, l% ?
- |7 G. k7 ^" i. M; E4 x4 e0 A, W3 l
s3cmd put devin.txt s3://devin_bucket  #上传本地file到指定的bucket+ }$ D. g; {( j6 v2 ?7 ?1 I
s3cmd put --acl-public devin.txt s3://devin_bucket  #上传本地file到指定的bucket,并开启file的匿名访问权限
. @  U& P3 Z: a  F/ T: n* }! os3cmd get s3://devin_bucket/devin.txt  #下载file到本地3 w3 j& a/ L( g& m' K. V
2 |9 ]7 O4 o. b" [, ]
可能在玩的时候会遇到问题,那么怎么排错呢?
; B% o' k0 {  U% g* ]- j( b2 \. R3 v& T# @5 w' G$ q1 A+ `: M

# g  u$ ?! I, g6 P8 v
( ~8 m5 Y3 i2 a, {: r& }, c可以在s3cmd的命令后面加上-d 也就是开启debug然后排错。0 M+ ?2 B, w, S) E* ?
0 \# g% G! |# s

! K& j+ q/ _$ G# i( ^+ g7 l2 Z( }- ]) C/ s1 c: G
遇到最多的问题就是解析问题。那么如何解决解析的问题呢?
: v! M/ d" W5 `4 _0 m
$ `8 {- P) g# y) D  g& `+ T6 r; Q4 d6 s* P
: X% g) _9 T. z/ w
可以查看下这篇文章 《教你如何配置轻量级DNS》。% s) v) o+ S9 e$ Z
$ J) \. K8 n/ R- W8 V7 B
; G) f1 h8 G. I1 J3 n+ d8 [

% {: |! ^7 u7 N4 {然后还有一种方式,就是python-boto方式
+ d$ |9 C4 c: K6 b' k
: m' @- ]- k$ a! L2 T$ v, R8 V: \2 M. l

7 @( n& @% ?+ H! l: H首先安装python-boto
, p, f# f' t4 J! x+ L+ R2 l" S+ r* [: X! _, \
yum install python-boto4 G9 p/ e8 Z+ `  `% ]( `
6 R6 E% N& P( p! c8 y
然后创建个python脚本+ f/ F/ n# F" d* ~. J( U

' |  ^9 w: ?1 Y3 \$ Hvi s3test.py0 o/ ^# B! w) b6 D* ?4 k9 R( t
1 r- M, q/ s3 W8 H& C2 H
内容如下:
5 ]4 F- A" D1 ?  o! [. `& c4 u) A. a9 ?
import boto.s3.connection  D& \' Q: o0 F* }% ]; ~0 q

4 D6 J% o$ d5 V4 a. }# y& daccess_key = 'Y2S78LKZ1ROD0MGIDUBC'6 _( a' S/ W8 A
secret_key = 'LyGCgoydLI2MGA7C0PtynyfBa3aKODNYQ0sHDMtP'! J8 v1 W8 c: L' Q% G0 q. I
conn = boto.connect_s3(
; B7 g: ]: W  t       aws_access_key_id=access_key,7 r; N3 _1 p1 A5 v+ Y0 G
       aws_secret_access_key=secret_key,
1 \4 u& n; e. ]4 h" e6 ~        host='s3.devin.com', port=80,- W; w! n9 Y' ^, u3 l1 H1 @
       is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),& O  k+ r2 y% u" `* k7 X
       )
  ?- o/ g; j9 O7 U! T' J: a! y* e% E& {& a3 o0 V& r6 p
bucket = conn.create_bucket('devin-bucket')5 s- s" H5 t2 b- c. H  t& [
for bucket in conn.get_all_buckets():
) R% H6 R) v; g2 s4 X; z( k" R    print"{name} {created}".format(
* o' r. P5 N$ q! P" ~5 U: d. y* q       name=bucket.name,2 K) E- }8 d9 _6 |) X3 u1 L
       created=bucket.creation_date,4 t4 Y6 @- x& G( @- p( C
)1 g$ b6 Y$ ]5 t

$ K* G/ h# a9 i6 @) _0 s" S这里要注意修改的地方就是AK和SK还有host域名
2 J& w7 }# {8 c. ~. W
( ^% k2 {7 B( c* X- X' X) g# t  ]+ K$ ~  x
) c+ N( ]9 x4 {7 t) X: Y# }
完事之后就是执行下脚本& I  w1 K# j0 ^, O4 J& Y+ Y

/ t. \1 R) T' J0 Gpython s3test.py
/ `# X7 G, S* e# X9 ]$ t+ Y4 T% h3 a& \$ q
脚本大概意思就是说导入boto s3模块然后借用AK、SK来进行验证创建一个名为devin-bucket的bucket,创建完成之后并打印出来结果。
, N( m; s& v( j* v: V9 M
. {0 _; y$ T* ^! z9 F1 x# b
4 }1 h, Y4 V% n# F  t6 h# z( `2 k" q3 q: Q$ ]

8 U; v6 n/ r/ W+ p4 w! k1 `; f, t' F0 m- j5 }
OK,本文Ceph对象存储到此就讲述结束了下篇文章来讲述如何对接OwnCloud网盘应用。
+ F! l. |8 m* ^! e, T5 O9 f
% w1 D2 ?7 d( u# q% u! Z( `: G( j0 T1 {# m$ }

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-2-9 10:17:40 | 显示全部楼层
2. CEPH网关服务配置
2 e6 E6 t7 c& g0 jceph网关其实是ceph集群的一个客户端,用户通过这个网关间接访问ceph集群,作为客户端,它需要准备如下内容:; v$ x5 D2 H( l! y3 d0 F5 E
网关名称,此处用gateway称呼
# T/ a' ~( p4 Y  N2 g+ u一个可以访问存储集群的用户以及对应的KEYRING
* B* e- R1 n. R数据资源池,这个由ceph集群提供" z6 t- u; o& F9 [6 d/ ?
为网关服务示例准备一个数据存放空间1 @  p5 m, ~% E* X2 @. O$ O
在ceph.conf配置文件中设置gateway信息: }9 s% j& a% Q- `( ]1 p
  ?& M& ~1 ]/ [
2.1 创建访问用户及权限设置
2 ~7 F& j9 W, n4 V- j7 l5 L, a创建gateway keyring,一开始该文件为空. M& T! i8 |) ^- K
9 H  v+ ^7 N) V, e1 B: g, z! ?
sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring7 k# G1 |) |. V8 p6 R
sudo chmod +r /etc/ceph/ceph.client.radosgw.keyring' [: ~0 }' r+ x. _3 P
创建网关用户名以及key  此处名字为 client.radosgw.gateway
9 }; f( V" d7 H$ m" F8 |. i' L) s# l7 j( G2 O/ @, j9 `
sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key: F6 t- |0 @5 P6 c5 z" o
为KEYRING添加权限4 ~2 e7 L" M# |" x2 q
7 A9 G, }3 ~+ i  X" [5 d9 g
sudo ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
2 r+ q; b. n9 I, r/ W& G2 T8 e0 X将key添加到集群中6 s( n3 x  i4 ^( c$ ]0 A/ [7 Z
9 M$ n5 W& J$ _6 Z* E9 B
sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring
5 a. p! p, S/ W1 J0 _  R* l将相关的KEYRING文件拷贝到rados-gateway所在的主机 /etc/ceph/目录下
" b  r, t9 V5 n7 i& K7 b2 x$ y& s2 V
2.2 数据资源池创建- Y! n5 E, E7 X
.rgw.root
* v# ]2 ~8 k- p" S6 M9 n.rgw.control8 S! Z2 R7 m3 `# q
.rgw.gc
) u) b5 S/ c) B- x. V.rgw.buckets
$ W9 e' c. _( L. M. n7 a1 U.rgw.buckets.index
- Z3 D1 y# f! t.rgw.buckets.extra
4 S! D( X' x) o: E3 `.log& V& s9 n0 L9 r6 ^
.intent-log4 W2 ~8 K1 ^: j! k$ h; q: V0 `
.usage
. p& P2 y  J3 j, {  M4 b.users
8 R% H! T$ r( {  i# _: @7 r  I.users.email
* B# N0 z+ s+ P.users.swift
  U$ t; u! t9 Z' S.users.uid2 ?- x& Q% V& ]  G+ U+ z
[root@gnop029-ct-zhejiang_wenzhou-16-34 conf]# ceph osd lspools
' ~  s- X2 f  U' d6 z- W2 `! S6 o4 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.uid8 C( ?. O# [1 J4 o& Z
2.3 将网关配置信息添加到集群配置中
, S2 j& s0 ^! C( T/ J# g[client.radosgw.gateway]
7 p/ B  H/ t# h  D2 chost=ceph-24) X3 ?% J, I: n* b7 P' |
keyring=/etc/ceph/ceph.client.radosgw.keyring
& e5 s4 k8 c5 `+ ~0 }6 x1 Rrgw socket path=/var/run/ceph/ceph.radosgw.gateway.fastcgi.sock6 X) O4 _4 ^) r2 |( u
log file=/var/log/radosgw/client.radosgw.gateway.log# a* L/ A( ]9 d4 G' o' Z2 A! C, G. r
rgw frontends=fastcgi socket_port=9000 socket_host=0.0.0.0( M, `7 I1 ?7 \- K
rgw print continue=false$ B9 g$ X; l. ~9 A" j. }7 ?( Y
2.4 目录及权限调整9 x, Q: Q/ t! o/ G9 s% r  o
创建数据目录
% m. Z; y! t5 `2 I
9 |4 M% d$ Z  A. _; {' n1 Jsudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway   
( Z9 s* H' |; h7 a调整apache运行权限5 n- W3 Y8 e$ R+ E( Y
sudo chown apache:apache /var/run/ceph
+ Q* s+ [, {) F# A- y* A2 Q调整日志权限5 O& j! c) r/ Z; d
" U$ D5 F3 m0 k, N! U' O" {
sudo chown apache:apache /var/log/radosgw/client.radosgw.gateway.log
) V4 d& O, [8 h  S# p. A启动网关服务sudo /etc/init.d/ceph-radosgw start
0 p! j9 P1 ^8 ]8 V1 h- x: ~* Z; v1 d4 A  Q4 F) X4 d- B
2.5 网关配置文件0 Z8 p: N, O- s4 r. r: }% p
一个配置文件,用于web server和FastCGI之间的交互
- q/ B, f' O: n3 ?sudo vi /etc/httpd/conf.d/rgw.conf
& j) ?& M0 u0 p. ^# I2 c
7 u/ X' Q( Y% d$ V  ~3 p1 d; E/ i<VirtualHost *:80>; s; @$ R. r! i4 @" y  V: x
ServerName 101.67.163.34" _. x* j9 C0 }' w
DocumentRoot /var/www/html: Y) I5 a4 i9 ?; |$ D* ~' k
/ D! B3 o, H- K) b* |
ErrorLog /var/log/httpd/rgw_error.log) f1 Q/ ~! t3 D3 A8 @3 Y
CustomLog /var/log/httpd/rgw_access.log combined" A, ^  Z5 H0 P2 H# E! S
. |+ M: g  `6 K& D
RewriteEngine On0 D) R+ R  E6 W
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]! l% h! ?( x% q3 U5 G6 ~7 y2 A

( v7 s/ ?; Z- O' W& J3 K, ~, p5 kSetEnv proxy-nokeepalive 1
- P' `) O  X, c9 n9 L  n4 S5 t( p: s7 _" p
ProxyPass / fcgi://101.67.163.34:9000/
' n$ }# p" D4 ]</VirtualHost>
  b) Z2 X: \  r2 a% \% J9 L# {其中标红的地方是要根据实际情况填写2 g1 L6 t! G. h3 S

% ^, j3 O% G  l/ U1 W2.6 用户创建3 [0 \0 s5 g, @# N7 w/ T* I
radosgw-admin user create --uid=xuwenping --display-name="ceph xuwenping" --email=xuwenping@d***n.com+ u) {  L  H7 @
{! q( p. `% B/ q% h" w" z
    "user_id": "xuwenping",
* j* k2 s6 P3 c9 r$ i    "display_name": "ceph xuwenping",
2 \" j- m4 j+ e0 R& G& |8 v    "email": "xuwenping@dnion.com",+ O) B% W! H) l- T, h; p( u4 c
    "suspended": 0,
( [1 F: z' y) e: G    "max_buckets": 1000,
- S; b' e, U: n2 g9 `" S    "auid": 0,
  V2 Q  d' X, E2 M" Z    "subusers": [],* K4 l7 ]# ~: J% {$ P
    "keys": [
7 z4 N0 x# i  {4 R7 B& K: p. R( W7 T# d        {# J8 ~+ n( A; v% o. }( i  H
            "user": "xuwenping",
$ s8 z9 d" ]/ v: e) b5 A4 Q            "access_key": "4J3GD7GJIJKSDCVS1I9T",
" b, j5 u$ W0 m- |            "secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"
0 w2 L! s3 Z2 s        }
" i0 a$ M& C! q$ P2 W  a& v' t8 M" E    ],
/ U# u+ _3 J  W& C8 k, ?5 K    "swift_keys": [],
/ s5 E' T3 n% b/ F+ x    "caps": [],
& F  `2 f5 [2 g    "op_mask": "read, write, delete",
4 O# l) @7 H( f# j1 y4 J  F7 s$ D    "default_placement": "",. [! P0 T  D  Y" x. A1 q0 d9 W
    "placement_tags": [],
, ]5 E) G( b4 r5 p9 G    "bucket_quota": {+ v9 x' H6 T' t
        "enabled": false,; Q; K$ i. K7 P$ k# Z$ @& ^9 U
        "max_size_kb": -1,& J. e6 P* M3 w/ @" |% a6 w
        "max_objects": -12 M: _% ?' g$ o. c6 x3 t
    },& e0 J2 A6 f: \6 x
    "user_quota": {' G3 l1 z& E- i; R+ g+ A* p
        "enabled": false,
, V/ Q1 f0 Y3 A' d8 W- L        "max_size_kb": -1,2 `2 ?3 Y+ V8 J) g6 r1 e' ^0 u
        "max_objects": -1$ e9 y- x3 W1 n+ a+ ?
    },; Y( m7 _* l, S; W, B2 Z
    "temp_url_keys": []
$ c# ]  P7 [! [: l7 z: B) v1 v+ s}7 L% g2 k9 {+ D6 [6 l' y1 H+ Q% h
创建SWIFT类型USER
7 S* t/ Z& T2 V+ D. Y$ d0 m# E
2 s# [  |8 R# s! E& f8 ]sudo radosgw-admin subuser create --uid=xuwenping --subuser=xuwenping :swift --access=full- I8 H7 h, l0 J! |( |+ I
7 e1 m7 C- |# [/ f8 I2 W. c: `
2015-10-10 14:19:19.854951 7f402eadc8a0  0 max_buckets=1000 specified=0' p& A, s* Z  D  }# p; t
{
4 n) }  ^) h. Z+ H9 I) L    "user_id": "xuwenping",: P, n& P% I& g: S4 U
    "display_name": "ceph xuwenping",4 F: E' h- O" v* q( H$ Z- {
    "email": "xuwenping@dnion.com",9 Y3 c0 ?* }6 I* \
    "suspended": 0,
! {+ Z9 K, y0 U7 k    "max_buckets": 1000,% z* N6 Q, J1 a+ ~
    "auid": 0,
+ n$ x& p$ s! {4 B2 G    "subusers": [: m! r3 Y0 w3 o7 x
        {+ k7 O7 J  j" p) i# y
            "id": "xuwenping:swift",
3 F+ U. B, n5 v3 M: \            "permissions": "full-control"% }! J. z7 V* U1 e% A8 G
        }& m' ]2 R; ]; D& x, P, Z8 o) r: f
    ],* Z( f" c7 w) x  B. M) w, b
    "keys": [- ]8 q1 u& w0 [! y- r+ l
        {
' E4 z# V% g6 l& b            "user": "xuwenping",. S- }- E6 p  `9 `* `7 M
            "access_key": "4J3GD7GJIJKSDCVS1I9T",
8 V2 ?. V& i2 L            "secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"1 n- H( H$ q7 N! H. X+ c, r
        },
5 ?& r6 O+ S: E5 \7 R        {/ G, n  K% D, t
            "user": "xuwenping:swift",
! Q# N/ p+ P9 m            "access_key": "PEIT99BBWMZP31BD6S3I"," J1 k' P4 H0 [* F
            "secret_key": ""
5 {! y# [  ?( H        }
: x6 L. }% O& Z" C4 |    ],. `3 k) p4 h$ ~( j9 N2 \
    "swift_keys": [; X7 |, f, s4 G7 ]
        {  R' `1 e8 }0 ~# U6 U- b
            "user": "xuwenping:swift",1 _* o3 U- j7 Y7 l5 P' w
            "secret_key": "qWHPhvUy4md1XSa2PSbcxUyMU5YXodlqxt0ZC2hn"
# O* t) M* ?4 j$ Z        }
; u3 [- T/ P; u( j% b' q$ @    ],' A3 M4 X6 E6 F/ Y
    "caps": [],
$ U& r2 A0 M& j% w    "op_mask": "read, write, delete",
- Z8 s  U3 {% [    "default_placement": "",& T& R- X+ U! |  Q
    "placement_tags": [],
" R7 O# R. f0 C6 ?. [    "bucket_quota": {
- C  K2 B. W" O3 s6 H+ I1 H        "enabled": false,
" |! f7 I4 U- K, L        "max_size_kb": -1,+ q% s) i9 R3 p0 F+ k1 G% `0 N- w0 W
        "max_objects": -1
% c8 Y, a/ D$ b4 f/ ?    },
2 g9 k" Q9 V$ ]: Z    "user_quota": {' G1 A% j- O; h7 W6 [: e0 W0 S: \
        "enabled": false,5 ^, u- m8 d) W4 u# q# O: `2 ?' x* e- q
        "max_size_kb": -1,
2 a8 `# |/ q/ _        "max_objects": -1; ~* l# T- w% c7 F  d8 L2 u
    },2 C9 P7 `8 O0 c3 @; T( a, ~! L, C
    "temp_url_keys": []. a$ }" [% d0 |" h
}
5 |. K8 C# c5 b* a% M0 m2 v& \' {2.7 实际验证
7 t8 C; V& Y7 ~9 z* A: f编写了一段python代码,用于访问网关,并创建bucket,并通过list方法罗列出当前所有的bucket (官方示例)
( N4 w" K! D& S. R6 H7 {7 s( n" {# R" U, \0 @/ ^5 ?( P; e
依赖库安装
* l7 I* `5 C5 \) n- |6 |/ j8 K! Y  O9 [) K+ e- b
sudo yum install python-boto
7 L# H+ D8 i8 q* cimport boto
- g5 y: l. w  t( U$ }& T. \import boto.s3.connection
# f/ B- H. e% W8 W- I1 [4 oaccess_key = '4J3GD7GJIJKSDCVS1I9T'
1 @( P! w5 [* v' X- V8 }5 A4 @4 ^2 i( ]secret_key = 'yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I'
* {/ m8 A, c$ d, m, j! q; Xconn = boto.connect_s3(" s! C/ `+ ]4 X7 z4 X8 Z+ R
aws_access_key_id = access_key,
" C! u1 |% e% O. w# o2 {8 d/ jaws_secret_access_key = secret_key,
& T) y7 a- s, F0 fhost = '101.67.163.34',
  ~4 }3 ]0 n3 w3 E8 W+ d" i/ ~is_secure=False,
7 P; B4 z4 @6 d* H& d+ ]" q6 ]calling_format = boto.s3.connection.OrdinaryCallingFormat(),( [7 h5 d( A% V
)% Q$ Y8 J$ }3 ^1 Z
bucket = conn.create_bucket('my-new-bucket')0 q* p" a" R, i1 C! w5 ~
for bucket in conn.get_all_buckets():
* {2 s9 H) o, i/ s) Q8 i        print "{name}\t{created}".format(8 P8 L0 ?: U, P- P2 ]+ F0 z
                name = bucket.name,, D( p: k, D: C1 `
                created = bucket.creation_date,+ c. _; q  i$ U- }$ E( h
); p5 c" _) `. Z8 G7 f9 A
运行结果- ^1 V/ M2 h: D
) B& E- v! U( _
[root@gnop029-ct-zhejiang_wenzhou-16-34 ceph-rados]# python s3test.py 8 z8 Q4 a7 l3 n7 \6 R' t
my-new-bucket        2015-10-10T06:23:48.000Z
$ y, W8 P2 z6 h& [* H1 \/ t0 O$ X7 k至此,Ceph集群的对象存储网关安装设置完毕% \( r  E" v- w

) ?2 e( D0 e) i" \附:
, k' b1 g5 J6 i& e2 r0 I5 ]9 n1 q4 k
有时候通过yum安装软件是报如下错误:7 R& E3 t3 K; _' N) h# d' E5 Z

3 M" H6 O" h, yDownloading Packages:) i2 Z& C8 U$ ]2 U$ i/ k% X
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
4 ^# s" j: _- X& E' P1 _# p' z; LRetrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6: W$ |8 k9 x% _1 ]& }

! W2 u7 v1 U2 e- M! i# v- X+ R$ }' g. J/ V) j
GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
6 K% h* z/ A# C* V) o% t在执行 安装命令时带上如下参数即可:- U4 ]1 q6 l9 g4 _

2 E# z0 U, ^- P! s" qyum install mod_proxy_fcgi   --nogpgcheck
1 ?  ~0 o' |" l- Z* r0 Z到此,关于“Ceph对象存储网关的安装配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
  O) a# a; ]+ t( s( F3 l% J- F2 P2 B; w" T
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:08 , Processed in 0.017041 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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