|
|
楼主 |
发表于 2022-2-9 10:17:40
|
显示全部楼层
2. CEPH网关服务配置
1 y) a. j- y) p) X' eceph网关其实是ceph集群的一个客户端,用户通过这个网关间接访问ceph集群,作为客户端,它需要准备如下内容:& ?! E8 b( t' P
网关名称,此处用gateway称呼6 `7 \) e! d- @# v1 Q; K$ N' m
一个可以访问存储集群的用户以及对应的KEYRING k j- ]8 @) O- r! K1 m
数据资源池,这个由ceph集群提供
- G2 Q& m( W/ ^6 e: q5 T' B( b为网关服务示例准备一个数据存放空间. ]! i& P4 Q/ q
在ceph.conf配置文件中设置gateway信息
; H' p. \- U$ z) j6 S" h% o* e% b/ V3 o4 \4 G# g& B4 [
2.1 创建访问用户及权限设置4 K$ R( \7 {2 p- k N( F5 S
创建gateway keyring,一开始该文件为空9 C1 M. m) N# [- Q
- C: x1 P, |$ V+ n+ b! D
sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring+ j L" y/ z' `! f7 r- Z0 K
sudo chmod +r /etc/ceph/ceph.client.radosgw.keyring
6 F7 b7 M/ p! Y( J6 r. b% W创建网关用户名以及key 此处名字为 client.radosgw.gateway 2 b2 u1 Z9 N* V) i9 [
6 W; b+ y$ P" Q0 `sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key
# Y/ c( X/ i# ]为KEYRING添加权限
4 b! ~1 Q- A+ n3 l6 m
- {) D5 T, \8 a7 Nsudo ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
, P7 L, g2 L( n1 q. y6 f将key添加到集群中0 K6 t- D7 O! ~* k! Q% S' N
! ~) Z' t' ~9 k! B1 X
sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring% b' ^# k/ K0 n
将相关的KEYRING文件拷贝到rados-gateway所在的主机 /etc/ceph/目录下
/ ?6 [% G6 x) G% U D$ E2 Z; a# q" {! L) |5 Y, e/ X
2.2 数据资源池创建1 V' f2 z9 U6 N' {$ P
.rgw.root# h: m' p7 b9 v5 |; k
.rgw.control: E; ?/ q& G& k& Q! o
.rgw.gc
1 w, t3 |4 l9 }.rgw.buckets
9 w+ }) u2 b6 l. S.rgw.buckets.index
# y/ L9 I" n' p) |- O2 C( C4 J.rgw.buckets.extra
6 o4 ?7 ?" Y, ]; U.log; `/ r1 i* L- ?' W" ~7 ]! l$ ]
.intent-log; W1 \5 Q' h3 G" B$ B. T
.usage
0 M# @* O9 e3 {, J1 }! [, a0 Y.users
2 j& p# b8 V$ g1 l6 g0 b* _7 N.users.email9 z$ u# j( \% t4 W% }
.users.swift
$ v7 C+ }6 Z! n4 f0 ?' y.users.uid
3 W; A7 ?/ `% K! |3 ?$ o4 j[root@gnop029-ct-zhejiang_wenzhou-16-34 conf]# ceph osd lspools
* H' i( z, k! y4 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 n% R* b8 l) p) u: Q) O9 }3 m
2.3 将网关配置信息添加到集群配置中
3 B4 W. \/ `3 b[client.radosgw.gateway]
/ z% y: C% |0 _3 ^0 z0 Whost=ceph-24
& C, ^- v/ h1 D5 u4 {! Q+ C1 kkeyring=/etc/ceph/ceph.client.radosgw.keyring
' k% d4 [6 |, w6 O* v& |9 Wrgw socket path=/var/run/ceph/ceph.radosgw.gateway.fastcgi.sock
. \& d2 F0 F1 `; S- q; C9 ylog file=/var/log/radosgw/client.radosgw.gateway.log
2 S3 O3 _9 b6 G3 b5 {( Grgw frontends=fastcgi socket_port=9000 socket_host=0.0.0.0$ }9 o2 [- @/ U
rgw print continue=false
; m' J; U& p- v" o1 w& d" L; q3 X, a2.4 目录及权限调整% Q1 u$ M2 c C0 M; s: M* R
创建数据目录
: G0 S9 _/ W9 Y3 P1 M2 l
3 [: t- X7 u: O7 g1 `) Psudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway
( L$ z. g) U4 s0 X o4 ]* C9 }调整apache运行权限
% j- D# ]7 K' Y+ |3 w6 R/ Qsudo chown apache:apache /var/run/ceph: v( l+ g) i! Y U
调整日志权限4 _1 h5 ?( k$ h& j, r k
) v9 I( O; a. {: b/ f9 ]1 u
sudo chown apache:apache /var/log/radosgw/client.radosgw.gateway.log
/ _1 [# O' R6 I: E! _# S启动网关服务sudo /etc/init.d/ceph-radosgw start
/ s/ i `, ?$ |3 U4 z* g- S& {
9 J) X% w5 d1 O" r/ I2.5 网关配置文件
, x1 O; d" z) I& @9 J! i6 k. A一个配置文件,用于web server和FastCGI之间的交互5 Y7 H" Z$ O2 H9 v) a& ~
sudo vi /etc/httpd/conf.d/rgw.conf$ b' a" z3 o8 w: m$ W
! U* C9 [' q. u% G" W1 X0 Q9 N<VirtualHost *:80>7 t, r J3 o& h( r
ServerName 101.67.163.34 L( K' K) ]+ Y# |
DocumentRoot /var/www/html
! r* o+ l( c- I j
2 |) t" G5 X. i" |: k1 H& @% qErrorLog /var/log/httpd/rgw_error.log U7 c: H5 I, Q! V4 m# [7 D
CustomLog /var/log/httpd/rgw_access.log combined
' ?, U1 {( Y/ o& x7 A
. |/ G6 Z6 V( P8 M" r3 YRewriteEngine On: b2 k# ^$ m& ^" j
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]$ E# Q( Z7 Q2 F5 j7 r V; a
0 Q% E7 c9 A1 ~. @5 h' v/ RSetEnv proxy-nokeepalive 1
8 r! O9 D7 U2 a& t( D5 p/ O4 t/ [1 H
8 a- R1 C4 I, W6 I0 j7 [ProxyPass / fcgi://101.67.163.34:9000/
' W& G k! j, S5 f) `, p</VirtualHost> Q% t3 p- b" @* Y' P
其中标红的地方是要根据实际情况填写
4 s4 n0 K5 e1 j# H7 Z) H4 J2 L3 Z, Q8 ~5 K) Q
2.6 用户创建
, N! w1 u7 }3 x+ T6 ~. pradosgw-admin user create --uid=xuwenping --display-name="ceph xuwenping" --email=xuwenping@d***n.com& X) [) S0 W5 t) L
{
7 n9 h4 ?- G& H+ p' Y; D "user_id": "xuwenping",
" U. H; ^9 m n, |2 P: f "display_name": "ceph xuwenping",( O; }4 [& O* L2 @
"email": "xuwenping@dnion.com",( {0 }$ d. g; o! ?
"suspended": 0,
1 U1 {# s* i2 c1 X "max_buckets": 1000,
& m' f- _: Q: u "auid": 0,
$ A) A, d' ^8 m8 X! k M1 C "subusers": [],
# Z9 X |2 h; _ Y* i "keys": [
' X1 r2 C. G: X- C, m& q; @3 W {
9 K, h8 F* _3 B7 Z' ]6 o1 X "user": "xuwenping",, i5 z8 {! y D6 s
"access_key": "4J3GD7GJIJKSDCVS1I9T",
: w, c* o2 g7 v7 q+ q "secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"0 V: m! `) z( W
}& ?3 H& [, P4 \+ Q, w i
],5 ]9 a4 X1 B" [ t+ s/ N. y
"swift_keys": [],9 b, H9 _4 s" x% @! T- [- E
"caps": []," J9 V+ H$ H' y* q
"op_mask": "read, write, delete",
' i1 h/ {- }1 V2 ?0 U9 H* t "default_placement": "",' j& d5 [) a. E3 ?
"placement_tags": [],
3 `. [9 H0 c( M# \/ W "bucket_quota": {( a9 R/ {/ z$ Y7 m2 T( I
"enabled": false,
( d6 D) a# f/ K "max_size_kb": -1," |" v0 p) A( E) z3 v$ `' L
"max_objects": -1
! u$ K r: _; T# o+ |% h/ |, W },
1 y9 n9 E9 i/ g. R) p8 k* S% v# X' c "user_quota": {6 `0 E+ S4 K" q8 ^( R+ l
"enabled": false,# G* A$ } c% L5 k9 M6 }2 o9 ]
"max_size_kb": -1,
: y) P) N3 s$ _1 n: h o "max_objects": -1
, }( Z r5 t! d) a0 K) _" y$ i },
5 S8 o% V& a$ y z: q) W- p3 o "temp_url_keys": []' F* u$ o; G% u' G; }( h) Q
}
% }$ f3 J1 ]. X/ C2 P* E: A创建SWIFT类型USER
% ^7 n1 A5 i6 M4 c# Y5 V" q: v& b
& f0 q2 i6 z6 A% h1 r2 t8 u; Csudo radosgw-admin subuser create --uid=xuwenping --subuser=xuwenping :swift --access=full
: d/ O' _- f0 D9 u
5 Z! O! Y/ e1 i2015-10-10 14:19:19.854951 7f402eadc8a0 0 max_buckets=1000 specified=05 K6 H5 u$ o9 s0 Z
{
! g' O7 s' g8 b# B/ A3 d' W "user_id": "xuwenping",6 _2 E. Y6 w; V: D K6 s. v
"display_name": "ceph xuwenping",' ]/ _! B& t8 H: T- N4 t
"email": "xuwenping@dnion.com",
/ S8 ` T0 z* {5 ~: Q* ~5 Z "suspended": 0,+ O5 T+ a8 u) b+ N; G* Z: u* q
"max_buckets": 1000,
% B0 u& G( _0 ], ]5 ? "auid": 0,' h2 A5 I; f. g) F9 F: B
"subusers": [
% z2 N5 m% @3 g) w) M {( X: }+ _2 K/ G ?
"id": "xuwenping:swift",
4 S- Q, L$ ~3 ~: U i7 z6 s( x "permissions": "full-control"* H( O( x* S* Y+ X7 M
}% G& T2 G" O* W$ F, r: f% ]
],
) b& n( C9 D4 I$ B, r' k/ | "keys": [! H/ m/ f$ ]$ B: T* w& r! Q4 j
{
# g( o3 G2 e7 c; d& m& D# u "user": "xuwenping",5 q4 I: H+ ]5 f0 h+ d6 y
"access_key": "4J3GD7GJIJKSDCVS1I9T",
2 y5 e+ k/ a( F+ U# i) K "secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I" F. w$ F9 j& o
},
+ h* b) i1 e7 d0 C$ P' r- K: ?! h {8 ?8 f* u3 ^% k8 X: @5 m- |! A
"user": "xuwenping:swift",
3 G' A \+ K) v* O, | "access_key": "PEIT99BBWMZP31BD6S3I",' @: m$ Z! @% t$ z
"secret_key": ""6 H D7 t/ }/ T2 |8 L4 s
}$ }- {4 \# Y5 p# \3 d d
],1 c. Q" C) @, q$ \# t* m; C2 C3 |
"swift_keys": [
& i2 B" Y- a: V7 O' \% O {. i0 E" t6 i7 ~* s1 p% i. ~
"user": "xuwenping:swift",( z- f: X! C5 B* Q; j7 s
"secret_key": "qWHPhvUy4md1XSa2PSbcxUyMU5YXodlqxt0ZC2hn"! E+ `4 |) d5 x8 @( }& @% t
}8 P" h8 h( O/ R
],5 x+ {4 H0 w; ^4 v; x
"caps": []," W9 l2 p# X: C' C* ~4 d
"op_mask": "read, write, delete",$ q! t+ c8 a1 E0 n0 A
"default_placement": "",$ }5 q8 F! j }/ Z/ K, N% ?5 |" ^0 r$ p
"placement_tags": [],
, b7 C: ?5 y C "bucket_quota": {0 K" S0 @4 W l& l' T
"enabled": false,+ m9 N4 r+ c6 s1 k+ m* l( e
"max_size_kb": -1,5 u" n+ m( i. q% o# b* |, J8 T
"max_objects": -1
$ y$ q* A/ y, o1 i# l e: O( r8 g3 F },
* F: i6 @+ J. E/ I "user_quota": {
# d$ J* i+ \) k' } "enabled": false,7 }) r/ n/ {* P: G
"max_size_kb": -1,/ z) k2 g8 E" \' j+ h
"max_objects": -1: d6 q _8 Q, A- M3 l; h8 Z
},
, ]% C3 Q: S' S. Q% J4 M/ B0 w "temp_url_keys": []" a$ ~. m& B8 h& F/ `/ ^
}
0 G, @- X% e4 z" p; S! Z$ X" f2.7 实际验证/ u* S3 m! X! W( N/ U; R
编写了一段python代码,用于访问网关,并创建bucket,并通过list方法罗列出当前所有的bucket (官方示例)
) x- N, x1 G, G0 L( w4 X6 k7 u+ H
依赖库安装 N/ P6 \: _* o* G
& [- H) X& x0 y! U$ Ksudo yum install python-boto
) @. ?4 g3 s7 D$ I: Ximport boto( ^! `. R( p. k4 b' H, Q
import boto.s3.connection
5 ~1 k( ^* z$ K4 p1 E8 t* Iaccess_key = '4J3GD7GJIJKSDCVS1I9T'# s: T. @' m- B) t% z/ u
secret_key = 'yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I'
4 B4 G$ T: y% H2 o, z/ Yconn = boto.connect_s3(
- \8 o: I1 }/ I! ?$ v0 L" D# C# daws_access_key_id = access_key,* G: Z6 z$ e7 g" K
aws_secret_access_key = secret_key,# S6 U& a, i$ v' s; J% t- K# B5 ~
host = '101.67.163.34',
; _: H9 Q# x7 Fis_secure=False,+ x' M2 x. i9 R9 h
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
4 g9 E: P! ]5 P4 N1 ^2 h B- Y( f" })
0 Z4 x0 [ U9 e4 p% p2 Kbucket = conn.create_bucket('my-new-bucket'), u; }$ N! ]$ ]1 @
for bucket in conn.get_all_buckets():
( ^, m" @- u+ ~! P H. J T/ ` print "{name}\t{created}".format(, p1 o. R" V) ?* v$ |2 z( s
name = bucket.name,
2 k3 w$ ^5 |% u. i4 ^ created = bucket.creation_date,- Q! j' g5 ?9 e$ P6 B. U
)
6 l" u# @% l5 ?7 v c9 O运行结果
0 R2 q; x0 I7 q: {3 {' S& b$ }8 S2 H* X8 G0 U# Z7 [8 \
[root@gnop029-ct-zhejiang_wenzhou-16-34 ceph-rados]# python s3test.py
8 q* q1 n' ]4 wmy-new-bucket 2015-10-10T06:23:48.000Z7 x/ ]* L+ g" w3 O- k0 j" i/ j# J
至此,Ceph集群的对象存储网关安装设置完毕3 }4 }" b5 J3 C* {3 J* U) I5 a
7 d# G, ?+ C* `
附:( B) J& D2 l: Y4 k5 |
+ u5 w4 x* m. }/ T; E- l* |
有时候通过yum安装软件是报如下错误:
- l# P. B& s" A$ i6 S0 |7 m- g6 e0 r( `5 {
Downloading Packages:
% o' o8 t8 r8 fwarning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
+ I: J9 ^, b) o w- o0 }! N/ RRetrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
$ o# w" b1 U' f. N r: T
% V* j/ q6 D8 p, Z; m* l0 \! f. h8 p+ T, f- @9 d8 U
GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-66 C! u2 K! R/ r) g
在执行 安装命令时带上如下参数即可:
9 @& |( {5 b9 c$ j% l6 q6 ]2 D* `, w h7 O {/ @2 @+ X; N
yum install mod_proxy_fcgi --nogpgcheck1 x3 f* B0 h! M! h( J4 z
到此,关于“Ceph对象存储网关的安装配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
1 ?4 V% {5 d6 X M" U) f5 P$ ^
" ?- U7 ]; D9 W& n! W* M" [ |
|