|
|
楼主 |
发表于 2022-2-9 10:17:40
|
显示全部楼层
2. CEPH网关服务配置( | `. `' a8 P5 z
ceph网关其实是ceph集群的一个客户端,用户通过这个网关间接访问ceph集群,作为客户端,它需要准备如下内容:
' z H! m P# j' S9 u) R/ g网关名称,此处用gateway称呼) m# m9 w9 ?# W* d$ d2 g( k
一个可以访问存储集群的用户以及对应的KEYRING3 h2 Z) P. `& M3 `" E& M( a- N
数据资源池,这个由ceph集群提供8 R3 V3 T3 _3 k: A9 h4 W
为网关服务示例准备一个数据存放空间
# _: N; ? K% \9 |: X8 B7 i在ceph.conf配置文件中设置gateway信息
1 i' j% D& q" K& q6 M* X
1 f5 v% R1 J: k$ D( q' `" A2.1 创建访问用户及权限设置- F0 ?+ Q. p. Q8 m* y3 e! ^/ a' ?( J
创建gateway keyring,一开始该文件为空
" e9 A. y6 {. @9 k S9 Y
$ [) D- v: F# Esudo ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring
( B5 U- `. U: K! C5 Dsudo chmod +r /etc/ceph/ceph.client.radosgw.keyring0 c4 Z6 e) j: o8 A
创建网关用户名以及key 此处名字为 client.radosgw.gateway
, e$ Y% t+ u/ L* s' }1 r$ F i* N5 ?/ @ P5 h9 S
sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key
) G4 ~7 h/ M9 W( p. ? _6 U为KEYRING添加权限$ f- |6 T( X* J: Y/ X9 p0 ]
' ?+ Z# f& ~+ t( Z0 M. x
sudo ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring! E& f, I$ c& h1 o( G8 }3 c
将key添加到集群中
+ a" q8 L6 ~) C' x4 {, x/ d
9 Q2 @: u( d* I3 w6 U% i( psudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring2 ]9 x( K6 m. |: H( F4 K( ~/ B
将相关的KEYRING文件拷贝到rados-gateway所在的主机 /etc/ceph/目录下
' W) c9 e8 g+ s4 x: \, j& v F! J, |
2.2 数据资源池创建
3 f1 C4 v, }7 ?" R$ v3 Z4 Z.rgw.root5 k; |$ ^2 X- C# u! k% ~1 s r
.rgw.control# Z0 i- c0 W$ i! N9 k
.rgw.gc( R; P, q1 ^% ?% u& C
.rgw.buckets
) c8 r8 ]3 _9 ~8 ~8 ~.rgw.buckets.index
1 A% c% A( F- v+ d( f6 w" M% [.rgw.buckets.extra0 v" m B, g2 [4 ]! n' N( R
.log
) `1 R- u+ v* x.intent-log
6 a; C3 [4 G$ u4 l) {. o.usage6 }: E6 g( R, N' L# g7 y6 x! D
.users8 G: r5 n+ ~# B
.users.email6 z: v) z/ ~3 u Q' W4 H; L# B9 s9 d
.users.swift. `5 O7 u9 N: ~2 @: _! q I* I
.users.uid( I. A" s" K! c$ `* L
[root@gnop029-ct-zhejiang_wenzhou-16-34 conf]# ceph osd lspools1 o( `0 M# h! b+ n- b
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
5 R+ O$ C& F/ }2.3 将网关配置信息添加到集群配置中
8 {; _9 R; D! O5 }[client.radosgw.gateway]
3 c% F" b7 |2 I9 J" l8 rhost=ceph-24
( `4 T: j m5 b8 h! A' b) Zkeyring=/etc/ceph/ceph.client.radosgw.keyring
, F2 K4 W" P7 u$ C& P4 orgw socket path=/var/run/ceph/ceph.radosgw.gateway.fastcgi.sock4 \+ J6 E3 R( m" j& j; i% y
log file=/var/log/radosgw/client.radosgw.gateway.log. A6 t; ]# a% U" Z
rgw frontends=fastcgi socket_port=9000 socket_host=0.0.0.0
5 j3 q: q; r7 i. X) C0 u' |) nrgw print continue=false
+ B! c e# y2 t. U0 K2.4 目录及权限调整. P# B) y# D+ f
创建数据目录3 d; v, o% w& ~8 j; n# d2 @1 ~
3 j1 q1 [8 k9 o4 p4 O6 h. S- b' isudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway ! z7 _# I& L! M
调整apache运行权限8 g3 I4 u7 ~3 q) E8 t: n0 V3 L5 P
sudo chown apache:apache /var/run/ceph
3 f" L" K4 T* C7 C# k调整日志权限3 u- w% L2 U% d6 ?. W
0 w& ?! @# X0 F# t* J" Z/ j
sudo chown apache:apache /var/log/radosgw/client.radosgw.gateway.log2 E( H" I/ O# I
启动网关服务sudo /etc/init.d/ceph-radosgw start
# ?8 e1 g$ M/ ^5 I8 ]+ Z3 j# m3 i! G
2.5 网关配置文件
6 k) {5 I0 _, X6 A" C X5 c- q一个配置文件,用于web server和FastCGI之间的交互
8 r/ u8 i# I& m$ F) X: x9 K' Vsudo vi /etc/httpd/conf.d/rgw.conf
0 p2 d( A! e9 C
8 n" _! B W* D+ T0 e a* d<VirtualHost *:80>
" v8 }( E. h l5 u+ N) WServerName 101.67.163.34
! X( ]5 q: O7 A8 J4 W# JDocumentRoot /var/www/html
3 Y6 l# U) {5 p B% ~6 Q/ u2 b I
ErrorLog /var/log/httpd/rgw_error.log; a. z, O/ c2 H' u8 u( U
CustomLog /var/log/httpd/rgw_access.log combined
4 M# \6 N8 C& U/ W
1 T. I, s' w1 `% p4 \& }1 a. GRewriteEngine On) P/ I5 v, D; r! h2 W5 V( f
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
/ c- m m, G! f. K6 o8 G. T( P. B# `* x8 n# P0 B7 p* `! W+ U1 _/ b. @" B' n
SetEnv proxy-nokeepalive 1
, V. e0 Z$ n# p" F; K( }# e# n4 h6 G8 t+ O
ProxyPass / fcgi://101.67.163.34:9000/
: _3 U. t7 R. X W1 D</VirtualHost>
5 y1 J6 Z9 Y- D# s0 o0 u其中标红的地方是要根据实际情况填写
( Z4 o# d4 ]' @4 L8 K! e: I% ~) p- h: u5 ~2 n
2.6 用户创建
- C C+ R) Y+ v8 @ N2 L, q, Nradosgw-admin user create --uid=xuwenping --display-name="ceph xuwenping" --email=xuwenping@d***n.com
$ G1 N% a) c/ B9 k{
$ H& c% }* p; H) |3 M' d "user_id": "xuwenping",
# b5 b! H+ z0 q/ T7 s ~$ j "display_name": "ceph xuwenping",) [6 I# J% G- \5 j
"email": "xuwenping@dnion.com",. p4 t. _% d+ v6 d: Q
"suspended": 0,
9 B2 y2 d3 _% ^* U' h# ]4 W "max_buckets": 1000,
$ z6 r8 L- e" M# h, Q+ V! ~/ R: [ "auid": 0,
! | I7 N6 N4 Z# V "subusers": [],
0 T; x# b7 q9 H/ h& N9 m; \0 K "keys": [
/ v7 c% w0 T8 P {3 Z, g" I+ K' `; V# E
"user": "xuwenping",
* l& h7 H/ [1 }* u( R; f/ N "access_key": "4J3GD7GJIJKSDCVS1I9T",+ T' x8 I& f3 G; T2 u4 _* B, H
"secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"
( O8 `3 j% G$ P( }! k2 V }
8 R3 E: _* k1 e' D% D3 b- k7 w ],1 R) [' y# q9 h3 X# S' h4 l
"swift_keys": [],
- V& D7 M6 z5 p# w" _ "caps": [],
! T+ P% f3 t# y4 g0 N/ D "op_mask": "read, write, delete",
" f* W# I6 ^# g. _. u0 ] "default_placement": "",+ m! U7 p! E0 m2 J& \& A
"placement_tags": [],
t6 E$ M/ ^+ x: D7 x) L4 {" l "bucket_quota": {; ^! p! i5 Q3 X! ?7 a4 g, R/ Z, i
"enabled": false," s6 |4 [ T P' v; u
"max_size_kb": -1,4 Z5 @4 x' b$ Y' u# M
"max_objects": -14 q8 k) W! o7 D$ W& g
},# Z6 ~& W0 b( O, Y5 j* p
"user_quota": {2 ?4 G7 x/ u( A, z2 K
"enabled": false,1 H% D! n) U3 ?8 A
"max_size_kb": -1,
& n! I$ K; n) Z/ ?6 I "max_objects": -1& N z4 q$ z; R" h4 e) b: D6 |" {
},4 V9 D& J9 i* y0 v3 o4 N2 ^, e1 C
"temp_url_keys": []7 n" r% s1 `6 F6 T8 s* Y
}: R; d/ F: V* H% a' D0 O5 i+ m
创建SWIFT类型USER" q) L: y+ C* `
8 a9 N( y% `& b& G; n
sudo radosgw-admin subuser create --uid=xuwenping --subuser=xuwenping :swift --access=full. t3 G3 Y6 X5 }, B! v$ x
5 p0 M+ i. v. M6 g' d* y2015-10-10 14:19:19.854951 7f402eadc8a0 0 max_buckets=1000 specified=06 K" L# j) ^& M% n9 h, T# _8 w) c) d
{/ ~& ]# U! ?+ ]6 B7 o* B
"user_id": "xuwenping"," \, h( S1 W- B; ?) {2 n
"display_name": "ceph xuwenping",3 P+ C2 r3 i) u5 D1 a9 I
"email": "xuwenping@dnion.com",1 E& b9 N1 |7 d
"suspended": 0,( ?! w; k) }2 O: E
"max_buckets": 1000,
' ]/ \5 r2 a) N3 n, v "auid": 0,
O" y, Q; M* r0 w2 Q0 x "subusers": [0 ]% k6 }! N- H# L4 q
{
$ ^7 q0 b+ B/ C "id": "xuwenping:swift",6 g2 \" C+ {% c( p
"permissions": "full-control" d: L" i8 l/ M4 ^8 D
}
0 Y. p2 ?7 U1 j5 a ],
( j9 O; D* h: r, |8 I "keys": [
1 S$ d* a( j N2 ^0 i {! B1 V" y. v/ J- u( R1 w
"user": "xuwenping",# h# x% |9 F* V+ {9 b
"access_key": "4J3GD7GJIJKSDCVS1I9T",) j' K$ c9 { J; p
"secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"
/ W2 N5 U+ l5 x8 k7 y: P },
/ @/ `; `5 M* S" {- w# }" D" n {
+ N9 O. z! n5 h: I" K5 G7 s "user": "xuwenping:swift",
1 J& r! N5 c8 @$ a6 @+ W "access_key": "PEIT99BBWMZP31BD6S3I",, I* O* Y) f& M: R
"secret_key": ""1 G1 m7 W5 w9 f* z
}
+ t+ q- l" h. p& o9 i8 q" O$ z ],% e$ [. \) U: F
"swift_keys": [7 S8 r% ~* D2 k9 t( Z% N' k w* h
{) `2 p6 g/ L/ i! J$ @
"user": "xuwenping:swift",1 _3 j7 O5 O7 q
"secret_key": "qWHPhvUy4md1XSa2PSbcxUyMU5YXodlqxt0ZC2hn"
8 g" U% V/ a4 L( E3 G+ R8 G" [ }5 z" E: T1 u d! W2 O# T+ e
],5 v- a& q# r8 w4 J/ `
"caps": []," J7 Y- h2 w" @7 A- H
"op_mask": "read, write, delete",# k* J6 `2 [$ ?8 J: G5 |
"default_placement": "",! j9 N+ g6 C7 d+ V4 J! p8 x0 l
"placement_tags": [],
0 E2 F" B9 I+ }$ P "bucket_quota": {
& h( h- @0 n, _. M5 J, \$ X "enabled": false,
8 z" l" ^; c/ X1 u% f: c" ^ "max_size_kb": -1,& b L; Y; l0 u% n
"max_objects": -1
3 Z% Y# M- B5 ` },
) I! {# _; a7 l2 t "user_quota": {
$ \3 v: J) Q5 i1 M& L# N "enabled": false,( f$ v: V) A9 g& t
"max_size_kb": -1,$ ^+ j: n+ j) Q9 k' c! U
"max_objects": -1
( r2 y" Y8 @! o },8 z$ M( z3 |+ D' z% H
"temp_url_keys": []
* M7 i: l; u: g# m' _}8 [: B" w# M2 X, r' Z
2.7 实际验证+ ~6 R% N' X- U2 S9 }4 L4 V
编写了一段python代码,用于访问网关,并创建bucket,并通过list方法罗列出当前所有的bucket (官方示例)+ S& ?* c8 P6 _& L
) ]" h6 B* T5 t9 s) X( ^
依赖库安装+ @! H% ]7 p9 F2 P* r" S
N' ^' s" w$ u% D5 F$ _
sudo yum install python-boto
- l7 R. v% |% L, ~import boto
' v0 ~ k. l( G" E1 v, mimport boto.s3.connection
$ R. y2 I( [& M7 V' Y& G0 ]8 [/ \access_key = '4J3GD7GJIJKSDCVS1I9T'9 Y. w* v4 m* M6 ~
secret_key = 'yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I'* U+ ^% |% E" H' D3 b
conn = boto.connect_s3(1 J6 P1 K; x' Z8 I8 \) U) e
aws_access_key_id = access_key,5 d7 V+ W' p8 _7 U- n
aws_secret_access_key = secret_key,3 \6 C1 O: ?: q! D. C& V9 ~
host = '101.67.163.34',5 y" l% M4 \% ]3 }
is_secure=False,, _+ P" Y. B% W z4 ~/ L7 J
calling_format = boto.s3.connection.OrdinaryCallingFormat(), d9 b% C5 n9 n
)0 O4 ^2 b% L; w7 f, ?1 ]
bucket = conn.create_bucket('my-new-bucket')+ A) z @+ Q1 E9 l; v' ?
for bucket in conn.get_all_buckets():
/ n+ @8 z' V, x w( S$ e4 s7 R print "{name}\t{created}".format(
: u. g/ ?# z$ P' ?9 }3 E4 Q name = bucket.name,
' Q& g) M0 z, \; J6 c5 h created = bucket.creation_date,) e+ Z C4 k) K; W e
)
! N! o7 S2 m/ o( U8 y, s( T运行结果
( `: ^( @# x& Y( s4 w0 D8 ?9 z9 E+ a3 _: l" L: B( }
[root@gnop029-ct-zhejiang_wenzhou-16-34 ceph-rados]# python s3test.py ; U# q, q& b! L/ ^9 R
my-new-bucket 2015-10-10T06:23:48.000Z& ^: m5 ?5 z" i
至此,Ceph集群的对象存储网关安装设置完毕
) _5 F& _ ^% q ^/ D
) d- }; {* \0 ]附:! l8 ?2 T) w; \$ c8 t; q
o# T% y4 K6 h0 C+ G% T* s: Q
有时候通过yum安装软件是报如下错误:
: i, r+ T' e+ t, o; ]' \' R: ]7 T: b8 e7 y9 M
Downloading Packages:# P& i9 t" p% l" s2 Q1 L
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
" Z' s: n- D* w4 B) _& B1 J3 BRetrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6( C& y% y' t! |* W0 \
# F4 N0 O& R% W4 Y$ W1 K
2 F6 v# I! C3 G7 x# p" GGPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6% H2 C0 _) Z( s0 x
在执行 安装命令时带上如下参数即可:
" w) |8 T3 u2 X! w; A: C: v3 O6 V
. B8 c( o- w% Uyum install mod_proxy_fcgi --nogpgcheck
8 N( ?( O) h/ }4 B, q到此,关于“Ceph对象存储网关的安装配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
2 g+ B# {: Y0 E# ^+ q2 H
/ @6 x7 U' D0 o- a S8 ?$ j |
|