找回密码
 注册
查看: 5024|回复: 6

openstack对象存储安装过程

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-8-30 11:17:14 | 显示全部楼层 |阅读模式
本章节描述如何安装和配置在存储节点上处理account,container和object服务请求的代理服务。为了简单起见,本指南在控制节点安装和配置代理服务。不过,你可以在任何与存储节点网络联通的节点上运行代理服务。另外,你可以在多个节点安装和配置代理服务提高性能和冗余。更多信息,参考`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__。+ Q0 w; [6 b) B2 D7 n5 _" \2 w
先决条件¶( I  G5 a4 v& r9 A
代理服务依赖于诸如身份认证服务所提供的认证和授权机制。但是,与其他服务不同,它也提供了一个内部机制可以在没有任何其他OpenStack服务的情况下运行。不过为了简单起见,本指南引用:doc:`keystone`中的身份认证服务。在你配置对象存储服务前,你必须创建服务凭证和API端点。& |0 i- b  i' Q! G) p
注解/ b" |, W% u& J# s: I6 L: b  Q3 ~
对象存储服务不使用控制节点上的SQL数据库。而是使用在每个存储节点的分布式SQLite数据库。
* P1 `. m) Z; @* ]" I( x; C获得 admin 凭证来获取只有管理员能执行的命令的访问权限:' p/ ]) h4 d* y1 b1 L- U6 Q
$ . admin-openrc$ M! S" ^# c$ U, Y. F4 D( O( @7 N9 s
要创建身份认证服务的凭证,完成这些步骤:
4 ^# |2 D7 R' I0 ~1 t创建 swift 用户:; K& x* f' i0 P2 ?! m$ k) K
$ openstack user create --domain default --password-prompt swift
6 A# C( z' v$ R7 q, _User Password:6 Y7 u" ?: ~9 V& b9 l8 N
Repeat User Password:
2 n, Y' T7 Y) T% m. r; P+-----------+----------------------------------+
2 ?6 G4 D9 ]0 m) R  K0 u2 Z* u/ N| Field     | Value                            |
3 C6 z% ^8 {6 r2 {+ {6 n3 e, T+-----------+----------------------------------+
3 r. L4 a' l9 ~; ]1 }: h| domain_id | e0353a670a9e496da891347c589539e9 |
0 y/ i( Q8 s' F4 p| enabled   | True                             |5 F1 i- q) u+ [7 X0 t
| id        | d535e5cbd2b74ac7bfb97db9cced3ed6 |- i; _% L1 N( y" H
| name      | swift                            |
4 O1 n0 ?& x5 Q# j+-----------+----------------------------------+
6 \8 U" s4 Z; ~8 j# Z0 S给 swift 用户添加 admin 角色:# i$ l; o8 a$ a3 ?7 `/ @
$ openstack role add --project service --user swift admin* e* X2 o) W% H
注解
8 n; o& q' K1 i这个命令执行后没有输出。
) D6 n# W1 c( o) _$ D创建 swift 服务条目:$ V: ]4 P) p. L8 V0 x
$ openstack service create --name swift \
3 J: X3 W% g0 I% s: ]  --description "OpenStack Object Storage" object-store
7 F0 G0 l+ ?8 H' b+-------------+----------------------------------+
2 X9 X. p; {& x| Field       | Value                            |: |, }* b/ `3 l. Y- H4 }: B
+-------------+----------------------------------+9 c% B# T+ n% B5 e: f8 t
| description | OpenStack Object Storage         |
5 B" g( S; Q: a| enabled     | True                             |9 V8 Z8 N& D" k* n9 w* g- O, b
| id          | 75ef509da2c340499d454ae96a2c5c34 |
: F4 J0 {9 n% d; E' t| name        | swift                            |
" ^0 q( ^# e0 t* w| type        | object-store                     |- n" ^  \+ n% y% H  A2 O
+-------------+----------------------------------+
1 W3 s* v! `% J* X. {/ e* o创建对象存储服务 API 端点:
9 K; u- Y9 j0 _2 R& C$ openstack endpoint create --region RegionOne \
! _1 E5 i& b: i  object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s
$ X- W/ _# w$ \8 M+--------------+----------------------------------------------+
# E8 U' Y8 e5 Z% B: M- s| Field        | Value                                        |( b7 _! H) p% u; n. w1 Q" J5 o
+--------------+----------------------------------------------+
) F6 R9 \* a0 @( |+ e5 q; W# @| enabled      | True                                         |
- _1 _- }0 v# x0 c1 d; O% _1 H% o  w5 h| id           | 12bfd36f26694c97813f665707114e0d             |
& D$ r4 K" Q1 }6 l: e" L7 j| interface    | public                                       |' L; o9 r* {, K1 y5 f4 G
| region       | RegionOne                                    |) \8 l4 U  k/ J8 ~
| region_id    | RegionOne                                    |
! ]; z" Y( `6 x( L! Z| service_id   | 75ef509da2c340499d454ae96a2c5c34             |3 T9 z  u; E& B( I6 I$ Y* C
| service_name | swift                                        |
' }% Y' \0 e6 z1 a" a| service_type | object-store                                 |* t& z# @% |# s5 N
| url          | http://controller:8080/v1/AUTH_%(tenant_id)s |
- T7 |3 ?3 W& t3 _, ~6 y0 O+--------------+----------------------------------------------+
; \8 J% w8 j0 |$ openstack endpoint create --region RegionOne \
+ X9 ?- |) D4 g( A5 |  H0 S  object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s; Q4 |2 i  a+ P& |+ [( q" M& ^
+--------------+----------------------------------------------+2 i$ w# j6 h) R( ~( a1 r
| Field        | Value                                        |7 y( O# O- m! Z* ]1 H$ I
+--------------+----------------------------------------------+
* A  m, m# y1 ]' X| enabled      | True                                         |
: w5 ]0 M' V3 D6 s. K- B& Z| id           | 7a36bee6733a4b5590d74d3080ee6789             |3 N. o  P% ^$ }2 e" [+ b2 M
| interface    | internal                                     |+ a1 Z2 S7 S% z# l, f
| region       | RegionOne                                    |
" N* |+ a. n2 P# F: l| region_id    | RegionOne                                    |7 Y2 U: k$ n( m0 B( r( h
| service_id   | 75ef509da2c340499d454ae96a2c5c34             |
2 v/ Q$ a6 [4 O| service_name | swift                                        |8 W) K5 N$ }8 N, U; c0 F  A. q+ R
| service_type | object-store                                 |2 g; [$ D0 d( y. @' R6 O
| url          | http://controller:8080/v1/AUTH_%(tenant_id)s |
& p$ T5 K; I- h  p! E; ], Z; O7 h+--------------+----------------------------------------------+% j: x0 |& q9 V, z7 j3 r2 Z
$ openstack endpoint create --region RegionOne \* S* C2 \9 O1 {% V
  object-store admin http://controller:8080/v1
9 s+ T  \1 L- C4 h1 u+ X7 m' n0 i+--------------+----------------------------------+. x- D4 ]9 ~4 v4 w" B6 ]
| Field        | Value                            |. n; c, |0 Y2 L. t- ]& c
+--------------+----------------------------------+1 |4 }1 q  L- T3 B! B9 L
| enabled      | True                             |
. A8 s' _3 p' W5 n| id           | ebb72cd6851d4defabc0b9d71cdca69b |$ l; ], T% T6 c& Q
| interface    | admin                            |$ b: \2 R- ]9 W3 C: e. m
| region       | RegionOne                        |
/ w) S3 A' U0 V| region_id    | RegionOne                        |
6 U: P. a7 L( s, }5 v| service_id   | 75ef509da2c340499d454ae96a2c5c34 |
9 v7 p6 T" s( J; Q6 K: }. {| service_name | swift                            |& I, b0 v8 T* h: O$ U+ |
| service_type | object-store                     |+ m4 \& K4 z4 X; A# I& O
| url          | http://controller:8080/v1        |. z3 ^3 _! k. V2 x( V( P3 L# J
+--------------+----------------------------------+# W6 K3 M& E5 g$ {/ V
安全并配置组件¶
! _) c# f# x* \+ z& p( i 注解
% x+ x2 @* z; l2 e默认配置文件在各发行版本中可能不同。你可能需要添加这些部分,选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。; A* m3 A& M; K& N* n# C0 \
安装软件包:
% O" ]0 Z% |8 `/ m) y3 V# yum install openstack-swift-proxy python-swiftclient \
/ V. g9 Y6 p+ k  python-keystoneclient python-keystonemiddleware \
4 m0 z5 x% L6 m5 K  memcached, ^# G$ q8 b& O. D8 o; C
注解
+ g) O! [, G- t7 `0 l: ]/ b完整的 OpenStack 环境已经包含了这些包的其中一部分。' I0 k. q  r. t5 q- ]
从对象存储的仓库源中获取代理服务的配置文件:
: u, u# x3 g: U) O! r# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/mitaka( U; ~% \  g. w7 ?! s. S
编辑文件 /etc/swift/proxy-server.conf 并完成如下动作:1 n0 V( Z7 d/ g
在 [DEFAULT] 部分,配置绑定端口,用户和配置目录。  C5 J% c  O  S. G3 \: f
[DEFAULT]# \+ Y" s9 j- t6 Q& O, }# f
...# f- C& N+ U& ^
bind_port = 8080
+ R; g2 ]" O  e) b3 T1 k) Y& Tuser = swift
4 [4 }0 ?: t, K$ C% r0 Aswift_dir = /etc/swift
3 k) y" b  o- q$ T# |) Y) W! F" {/ a在``[pipeline:main]``部分,删除``tempurl``和``tempauth``模块并增加``authtoken``和``keystoneauth``模块) e7 K& K2 J2 g! E# U1 Y* Q" u* J$ c' l
[pipeline:main]0 o! Q; R2 y; |7 X/ g0 [% W$ ^2 v- C
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server
7 c! g) B' j2 U( X% n6 } 注解
- }4 C/ h/ M- }8 C: ~. T不要改变模块的顺序。2 p+ t* D3 I9 H, H8 I
注解$ H  h2 n% f: U4 b" G* ]
更多关于启用其他模块的额外功能的信息,请参考`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__。
8 @4 S1 y3 O8 J0 {在 [app:proxy-server] 部分,启动自动账户创建。
) C. e# f, U; n0 \  w0 i% l[app:proxy-server]
' V4 r2 D2 _% g% d5 c7 F. H! n- luse = egg:swift#proxy7 Y& G# r! I$ N, {" a9 |" @
...
7 T5 Z( l! F: D  l, J' a, V% v# U: raccount_autocreate = True
; K+ v  e5 [# ]* D7 r2 p在 [filter:keystoneauth] 部分,配置操作员角色。
" |0 F# a: n1 D3 Q% M, B+ ~[filter:keystoneauth]
8 b0 V% D2 i9 V% E7 |use = egg:swift#keystoneauth
0 O. b$ e  R" R2 ], W: q.../ g/ U% N! |$ |- Q& ?5 M
operator_roles = admin,user
/ H8 u  b3 p7 r9 w6 u- o" b* K在 [filter:authtoken] 部分,配置认证服务访问。
1 \; _2 B; l6 @. @) H0 g[filter:authtoken]$ `1 Z5 u1 ?5 v, |+ }: A4 V
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
* |/ M& j" _8 h- K2 m# x...4 s  Y  M) G  C9 ?
auth_uri = http://controller:5000  I* i2 w/ ^4 p& ?; Z. Q/ w) U
auth_url = http://controller:35357
% t8 E* s# F% u' Hmemcached_servers = controller:112111 n7 W5 F+ t* D! N
auth_type = password
2 I& H7 R: b6 h. H8 m, T4 Aproject_domain_name = default
6 U2 \# C! e& z; i5 L% ^user_domain_name = default
2 E4 c* g# O: H4 F2 E! H) aproject_name = service
4 y2 n; I) M6 u  dusername = swift% r3 U6 S! i2 f& i, C
password = SWIFT_PASS
8 L1 d4 S5 C, C# cdelay_auth_decision = True0 m+ F6 i) k% W- Z8 T/ r
使用你在身份认证服务中选择的 swift 用户密码来替换 SWIFT_PASS 。. x+ ^7 T! ~  d/ O
注解4 ?( z' Q2 U" m' F" P
注释或者删除掉在 [filter:authtoken] 部分的所有其他的内容。
; h. N; r6 l: [( }  J6 _- i$ p$ D在 [filter:cache] 部分,配置 memcached 的位置:  ~5 r6 E- r6 {& [4 c
[filter:cache]& {7 c7 ?1 ?( \
use = egg:swift#memcache% ?9 L! m: Z& c8 S/ r
...8 N# O7 o  @' b9 @: d  `# Y; t2 Q
memcache_servers = controller:11211- }+ P4 x# t. I+ N

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-8-30 11:18:55 | 显示全部楼层
安装支持的工具包:, o" M2 X6 n4 {

7 S( o0 d6 H  }! ?/ h# yum install xfsprogs rsync
' V1 h# [: y) T" W6 e* ~使用XFS格式化``/dev/sdb``和``/dev/sdc``设备:
1 p* Y. r. a' P  v0 h$ z, C( ~1 i
( R4 o; `; ]  \1 S0 Y, c0 h3 Z  v# mkfs.xfs /dev/sdb
" p1 a: `- F  z% V1 ]+ M# mkfs.xfs /dev/sdc
# U  ]7 q: @2 h) D创建挂载点目录结构:3 i; c. j$ G: |/ |7 N

2 S; F9 Y* e; T: Q" W: H# mkdir -p /srv/node/sdb5 V. E  P- S8 b* ], Z
# mkdir -p /srv/node/sdc/ j) F" E9 J! k. M! g
编辑``/etc/fstab``文件并添加以下内容:$ \7 p9 t5 ~* u6 r" w6 g8 f  _
0 Z4 [: \, ~4 @- C" x
/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 27 u4 Q$ @" N$ n: Z) f9 q* Q
/dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
7 T7 f: v- C2 K挂载设备:
" [3 R' b$ B1 H: W
6 g0 I* j0 k0 U+ m# mount /srv/node/sdb
$ I2 [7 q, t2 D8 M6 f3 Q# mount /srv/node/sdc$ Y: @7 h" [3 M# M+ Z
创建并编辑``/etc/rsyncd.conf``文件并包含以下内容:
- d0 |0 F5 U5 _/ z/ B* [7 w" C% B$ j( \0 P
uid = swift- ?; f9 m2 R. G9 @* B8 G
gid = swift/ ~1 ?$ ?! I+ n9 x1 g8 @( E1 o
log file = /var/log/rsyncd.log/ u6 v# S$ W* p6 h1 N7 N
pid file = /var/run/rsyncd.pid
6 z' j, Q  B  m) c% M1 uaddress = MANAGEMENT_INTERFACE_IP_ADDRESS/ A- o* \, e# G  o( E* X5 D4 A0 [
% X( B0 u9 e* R# o
[account]7 N8 J- a) a, Q. @9 X, j
max connections = 24 N3 k. l& _* a) e, v
path = /srv/node/
9 J" l( S- c6 z8 A6 e& Uread only = False
* `, G; H/ F! I. l, hlock file = /var/lock/account.lock% a- ?+ t/ }/ H3 `+ D
* p3 C6 S) [8 k5 |0 u
[container]6 V% m( K% _4 u) v
max connections = 2
# P! r  c% p8 \4 d6 ~6 @' E' dpath = /srv/node/
$ {( c6 F1 @: T& U9 \1 N& Dread only = False
; r$ s1 o: h' `2 ?, Block file = /var/lock/container.lock
- V' j1 |* D( C; X2 j( T" g
+ L* B+ f5 ]7 N) M[object]
/ g1 P3 N; S$ Q2 Ymax connections = 2* z" @% w4 Y9 I  `
path = /srv/node/
1 ~5 ?1 \. N7 wread only = False7 z5 }7 j1 F1 m- Z4 |5 B
lock file = /var/lock/object.lock
1 S) J9 S: N4 `7 P7 {7 U$ q替换 ``MANAGEMENT_INTERFACE_IP_ADDRESS`为存储节点管理网络的IP地址。& P" W4 F9 C6 e% j' Q
  L. }! L3 f! P. ^! z, ^
注解" y. M8 t; D, J9 ]: E7 _7 |

% }) E# E0 n0 k7 a+ ^. n3 Q9 ^2 [! t``rsync``服务不需要认证,所以考虑将它安装在私有网络的环境中% U. ~2 m' h$ A# `9 y

1 i& L6 E9 z1 p: g( f* ]/ B启动 “rsyncd” 服务和配置它随系统启动:
% p$ I8 ?3 N, V% m& d
1 T$ _' Q, ~3 `  P# systemctl enable rsyncd.service
" U9 C2 P0 [  R: i# systemctl start rsyncd.service
  C; K6 p% V6 ]$ \安全并配置组件¶; I9 A. F( S: P- Q

" e: t, ?& x6 x1 b+ d$ T 注解$ N5 |; D2 ]* R7 g$ I1 S
, H% d) Y+ ~4 m. ?6 f
默认配置文件在各发行版本中可能不同。你可能需要添加这些部分,选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。
6 ?$ N' t* V( [% R7 \
9 V, U6 B9 W6 ]3 l; K- t: o; x 注解
, R( [" h9 q$ e; [! {7 b% E( B4 q$ L: ?8 p! }0 W
在每个存储节点上执行这些步骤。# ^3 e  Y! T4 F! U, [9 C
3 p5 D) F; u. d( C1 n. @
安装软件包:
: U/ X8 o) M: q4 k( ]8 o6 S. u6 Y' u* o$ Y0 c# Q' U+ S, W
# yum install openstack-swift-account openstack-swift-container \( E6 F# u6 x; j  x6 A0 N2 B
  openstack-swift-object
* l0 P# n1 ]+ g5 j$ g* L从对象存储源仓库中获取accounting, container以及object服务配置文件
$ h; {0 E& z" D5 i( y& ^+ F4 g4 P" t
# curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/o ... ple?h=stable/mitaka9 B0 y8 X! g" u3 f
# curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/o ... ple?h=stable/mitaka  f1 }5 h3 _& a4 q
# curl -o /etc/swift/object-server.conf https://git.openstack.org/cgit/o ... ple?h=stable/mitaka: h% j; T5 s4 `0 X2 y, Y
编辑 /etc/swift/account-server.conf 文件并完成下面操作:; n3 I- i3 d" s( ]- d7 l$ V

- e" ~* p9 G6 ^6 H在``[DEFAULT]`` 部分,配置绑定IP地址,绑定端口,用户,配置目录和挂载目录:
% N) O; V; [1 }- o2 z9 r; H; J# n* N  E
[DEFAULT]
9 T' F" H, j' i, J. i.../ K8 Q0 s, ~, G6 f, k" h1 Q
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS3 h( v0 c' P" _' e6 B  J
bind_port = 6002" }. P4 z9 V9 Y; t
user = swift
* O. [& ~2 c) a/ `( Yswift_dir = /etc/swift8 m( T  t! R! v. i5 B
devices = /srv/node7 d9 X' n8 s& u. o4 ?7 d5 Y
mount_check = True
5 K* C' a- o. v0 V! q( |1 g1 I替换 ``MANAGEMENT_INTERFACE_IP_ADDRESS`为存储节点管理网络的IP地址。# {) k2 C$ d# t3 o0 K/ S" r4 j
" e+ ~8 n' `8 ~7 F/ Z" \4 ?, U
在``[pipeline:main]``部分,启用合适的模块:
" b' |% M- C" B6 `7 R
: e) b3 u6 a, C/ ~5 {2 D& C[pipeline:main]
  a6 v' I* _  [! Zpipeline = healthcheck recon account-server
6 B# `9 l" X$ E* p5 U, b 注解
' v5 v2 V/ U5 Z6 i1 i" N
! O* v; R) t: l更多关于启用其他模块的额外功能的信息,请参考`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__。
3 F+ p, M- b. ^3 I6 S
9 }) D$ I- E1 @9 f! I在``[filter:recon]``部分,配置recon (meters)缓存目录:1 k/ p3 d2 @8 c$ _
5 m7 v5 o/ O  }# f7 J6 H( ~9 m( a& r6 ?
[filter:recon]
8 R' `$ t9 w. c2 Wuse = egg:swift#recon
+ X! S2 _4 L$ _8 ^7 O" o...2 Y- ?. I! L4 T# X) H( v2 V5 @0 {2 A
recon_cache_path = /var/cache/swift
! T/ V- q; a+ w/ w5 ^9 Q* t# x3 `# g编辑``/etc/swift/container-server.conf``文件并完成下列操作:
. o  S" C7 N7 ]/ B8 j( P* V  z# C8 a0 ~4 M
在``[DEFAULT]`` 部分,配置绑定IP地址,绑定端口,用户,配置目录和挂载目录:
) w* {8 s# Q& v: H# `4 n# I% J0 G( O" {; q) v) D- ^/ `0 b( o
[DEFAULT]( G, U# ~) _1 s. e# \: D# [
...
% N' ]; T( m0 W4 K2 t( ^bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
# n+ w7 Y1 m- _& hbind_port = 6001
, i3 K4 ~3 k% Iuser = swift
4 n1 a2 A  p0 ^+ C/ Bswift_dir = /etc/swift# H2 n: l/ h, v5 o$ X( o
devices = /srv/node
2 j: A  v& j0 n+ t. A+ q1 Cmount_check = True' N. U, F% a* x6 z3 x! Z
替换 ``MANAGEMENT_INTERFACE_IP_ADDRESS`为存储节点管理网络的IP地址。( e* L+ \" V5 r  c7 Y) m, v( X" J

2 o- O# }! L0 g+ [- F% h% [在``[pipeline:main]``部分,启用合适的模块:& W8 b/ L/ m7 s/ }0 S3 `8 b. a+ }
) u# d# W. {* j6 h' }0 O) c
[pipeline:main]! n' z; z) E9 d3 r8 Q
pipeline = healthcheck recon container-server: Q0 y0 A& w/ \
注解
0 F7 x4 L) w; O' l6 s( ^) {0 c$ {$ V4 D$ E8 o3 p
更多关于启用其他模块的额外功能的信息,请参考`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__。2 Z9 _! `, i9 c+ Z! I
9 r0 K$ }6 y, h5 x9 g
在``[filter:recon]``部分,配置recon (meters)缓存目录:9 y1 M! R8 A/ ^: Z3 H, j) A, F

3 Q9 [: }, @# `" d6 U1 ~[filter:recon]. _( R# |7 m7 ~8 h1 F
use = egg:swift#recon- d9 a! f+ [4 f3 ~0 L, N, x' Z) Y
..., \# W% Y+ Q8 ~8 w9 u7 `* N4 M4 }
recon_cache_path = /var/cache/swift4 f; K% j4 P* j( h2 s* J2 r
编辑``/etc/swift/object-server.conf``文件并完成下列操作:# J. z, S3 [; i# c+ C
# t; }2 n! [1 E7 R. d; G
在``[DEFAULT]`` 部分,配置绑定IP地址,绑定端口,用户,配置目录和挂载目录:! U" z+ j7 N; k7 V( e9 @

1 A2 `; l2 D( m3 w[DEFAULT]
' `  x: F; b9 A/ S( n...
! K# P5 `. r+ ^: j3 Lbind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS  @1 u0 [3 r7 k
bind_port = 6000+ n/ P+ E# q- ~4 V" O
user = swift
+ R3 m; }# j( G! v6 g8 uswift_dir = /etc/swift
2 |& C1 N3 Q. k7 O; |2 Vdevices = /srv/node0 Z2 i# K$ r  a/ q! f# w
mount_check = True  B7 o# c* y/ |& l8 |, S
替换 ``MANAGEMENT_INTERFACE_IP_ADDRESS`为存储节点管理网络的IP地址。; m6 F5 Q0 c% S8 |

& ^  g$ Q4 T% K% i( C/ u+ ]% Y在``[pipeline:main]``部分,启用合适的模块:
7 U: W: o' Q1 s/ t7 y# [
! D* S' P) Y; d7 Z[pipeline:main]
& K: x: H( W4 xpipeline = healthcheck recon object-server( Q7 U; N: J+ B2 V
注解+ J4 M3 }2 b% c0 H" `

$ F3 h- P% ^; p1 \+ H更多关于启用其他模块的额外功能的信息,请参考`Deployment Guide <http://docs.openstack.org/developer/swift/deployment_guide.html>`__。5 R+ h) S8 ~3 U4 _) d
: z4 r! I3 y# T# J: P& X( i# X7 U% c0 S
在``[filter:recon]``部分,配置recon(meters)缓存和lock目录:6 N* X' p; D6 e3 K: m
6 P3 t/ S5 {2 i6 a  K" e
[filter:recon]8 e, _9 v; b  j" W9 N
use = egg:swift#recon
7 p  k1 K  j( _+ x...) W$ C( A0 c% F9 i( D& q" T4 U
recon_cache_path = /var/cache/swift
: l( G/ y3 F+ _! R5 orecon_lock_path = /var/lock! H4 l6 R2 \, a! b+ l
确认挂载点目录结构是否有合适的所有权:
$ Q! P3 X; b1 {( f1 ^) P% k' Q: }' }- Y7 H# e
# chown -R swift:swift /srv/node1 {7 W( T* s. }& e
创建 “recon” 目录和确保它有合适的所有权:" `. E( e* W7 D
- y3 y. T" b0 o& ]1 i
# mkdir -p /var/cache/swift
$ M$ l; N# m/ d# chown -R root:swift /var/cache/swift
' s$ v! l- ^2 Z( X; p# chmod -R 775 /var/cache/swift

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-8-30 11:19:20 | 显示全部楼层
创建账户ring¶, z2 R- b* Y5 i& }- _

& S- F% \" `, K. {帐户服务器使用帐户 ring 来维护一个容器的列表。7 Z) _( m3 U0 D4 M4 \% x
' M6 K/ q  U5 F7 M
切换到 ``/etc/swift``目录。" E: _- {2 S6 @9 t3 M- [7 s
1 H- i% K# a$ P( k
创建基本 account.builder 文件:# A9 S; r& r5 h+ k& Z+ q
) U/ r3 k- `" b# {2 g1 M1 \8 j
# swift-ring-builder account.builder create 10 3 13 G$ Z) j. V# ?( E% ^+ ?
注解
& i5 S3 `- y8 C- C$ n% c  V" |% L( M! r
! q. Z2 {8 F! q7 J- i这个命令执行后没有输出。
( g2 [9 R& I- m- `* U# ?. N( F0 r+ Z. [& c. w3 S$ P
添加每个节点到 ring 中:
+ E$ F0 O" O; j$ B% s
! V9 t) j1 m' z! z$ K, W. u" p3 F# swift-ring-builder account.builder \
% j8 W( _: k' b  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6002 \
: C. d3 r$ x8 f# Y  --device DEVICE_NAME --weight DEVICE_WEIGHT% \9 ~) C7 U( o4 X0 I- M' I
将 STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点管理网络的IP地址。将 DEVICE_NAME``替换为同一个存储节点存储设备名称。例如,使用 :ref:`swift-storage` 中的第一个存储节点的 ``/dev/sdb 存储设备,大小为100:
2 `  b; S# I) P' K0 w! B
6 F8 X/ V6 F. S- h# swift-ring-builder account.builder add \
9 k0 ^& g. y( p% P- d  --region 1 --zone 1 --ip 10.0.0.51 --port 6002 --device sdb --weight 100
1 l+ H3 w/ N* Y' q3 L在每个存储节点上面重复执行这个命令。在这个例子的架构中,使用该命令的四个变量:
+ h$ X' ]2 O, Q% A. q, B) y  c; E8 T. M& k0 @7 b
# swift-ring-builder account.builder add \
/ G7 x. k6 k. W2 P  --region 1 --zone 1 --ip 10.0.0.51 --port 6002 --device sdb --weight 100! X- z' o" E% V0 t6 }9 Q
Device d0r1z1-10.0.0.51:6002R10.0.0.51:6002/sdb_"" with 100.0 weight got id 0
% i! n8 M: j1 V* ^0 U# swift-ring-builder account.builder add \
' y5 l" i' ^  }' e  --region 1 --zone 1 --ip 10.0.0.51 --port 6002 --device sdc --weight 100
/ U1 E8 U7 a! ~9 IDevice d1r1z2-10.0.0.51:6002R10.0.0.51:6002/sdc_"" with 100.0 weight got id 1
. ^; Y3 f9 u6 M9 e# swift-ring-builder account.builder add \- s9 k- C8 A$ g
  --region 1 --zone 2 --ip 10.0.0.52 --port 6002 --device sdb --weight 1009 D  }/ Q( p9 q! \
Device d2r1z3-10.0.0.52:6002R10.0.0.52:6002/sdb_"" with 100.0 weight got id 23 Q, g( W# ]% \" D4 j
# swift-ring-builder account.builder add \6 h$ u8 q# ^1 @+ i& t
  --region 1 --zone 2 --ip 10.0.0.52 --port 6002 --device sdc --weight 100) m" l6 h/ f# M# o
Device d3r1z4-10.0.0.52:6002R10.0.0.52:6002/sdc_"" with 100.0 weight got id 3
! }! j8 {. Y- X2 X验证 ring 的内容:
/ x9 o/ t- D2 e7 N
3 }! X% `# J7 q8 V# swift-ring-builder account.builder
; u) n2 B# |# e/ zaccount.builder, build version 4
2 f( n0 t2 d+ ]: P' I  L+ u3 i' v1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
$ z8 M/ F4 P$ h; q8 XThe minimum number of hours before a partition can be reassigned is 1* O* g( s- H( r' A% k5 o
The overload factor is 0.00% (0.000000)
# I8 O- p& ?- \1 I2 S) \Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta
6 `! s5 Z: s2 m' p3 {             0       1     1       10.0.0.51  6002       10.0.0.51              6002      sdb  100.00          0 -100.00
) b  w. X6 f* w% f9 T             1       1     1       10.0.0.51  6002       10.0.0.51              6002      sdc  100.00          0 -100.00
4 b5 A, u) P# B             2       1     2       10.0.0.52  6002       10.0.0.52              6002      sdb  100.00          0 -100.00! }# {2 X. V. v$ t2 M
             3       1     2       10.0.0.52  6002       10.0.0.52              6002      sdc  100.00          0 -100.00, v# c& o7 J! l3 ?0 k, f& L- b
平衡 ring:
  \" M7 S) q  E; r2 ]6 M
/ o: S( {- z- W/ i* A/ K1 y# swift-ring-builder account.builder rebalance6 k; a! a1 `4 O+ O
Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00) L, K" [& l0 L
创建容器ring¶
) ^6 |/ o1 e3 [. T% `5 ]6 ^0 t2 i  }% [/ K; h7 }
容器服务器使用容器环来维护对象的列表。但是,它不跟踪对象的位置。1 ]7 W$ {" V/ ?! x6 {% r

6 a, I" }2 L7 {0 C: i切换到 ``/etc/swift``目录。
& [0 Z$ N& Z0 ~7 ~$ }; `( ~' G* t9 l: \+ ?0 }( h
创建基本``container.builder``文件:
) O2 z% d" ~8 o8 m4 n/ C! j: s9 Y; ~4 T
# swift-ring-builder container.builder create 10 3 1
2 }* O/ |% X* l% J: z' h2 Z4 L1 J 注解
  T* [4 W* O* p9 W6 _1 A- i' I" ?& A) @) H* S# l
这个命令执行后没有输出。
3 D  `% A) C) K
8 y" l3 U9 W2 [9 ?* \添加每个节点到 ring 中:$ F" J. X9 u# T: k1 T& Q
* f+ I- C0 Q" J# Z2 B) A
# swift-ring-builder container.builder \
' M& t# o6 A4 H! {  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6001 \
* R+ y  l  f! i  --device DEVICE_NAME --weight DEVICE_WEIGHT; C8 z) w) M) O6 p1 q1 ?: z
将 STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点管理网络的IP地址。将 DEVICE_NAME``替换为同一个存储节点存储设备名称。例如,使用 :ref:`swift-storage` 中的第一个存储节点的 ``/dev/sdb 存储设备,大小为100:. o  r( i6 W# c: b4 ]3 X- ~5 R% f0 g

2 Y1 K2 Q+ g( a# swift-ring-builder container.builder add \
1 g# R6 x  T4 `) M9 U  --region 1 --zone 1 --ip 10.0.0.51 --port 6001 --device sdb --weight 100
1 u7 s5 b5 X! `3 H在每个存储节点上面重复执行这个命令。在这个例子的架构中,使用该命令的四个变量:. L* n' j+ E' j5 [2 u- v

" {$ X$ B4 z% X: o+ R# swift-ring-builder container.builder add \$ f, L  z2 i9 p. {
  --region 1 --zone 1 --ip 10.0.0.51 --port 6001 --device sdb --weight 100) a9 s; t8 L  b4 b% J+ G
Device d0r1z1-10.0.0.51:6001R10.0.0.51:6001/sdb_"" with 100.0 weight got id 0
1 v8 E1 b# Q/ p& f0 L# swift-ring-builder container.builder add \- b0 z* j, o' Z6 B4 H% [' j  z
  --region 1 --zone 1 --ip 10.0.0.51 --port 6001 --device sdc --weight 100
5 {6 M6 k- c6 Y/ y- g5 hDevice d1r1z2-10.0.0.51:6001R10.0.0.51:6001/sdc_"" with 100.0 weight got id 1
0 \4 K5 w& B1 K1 \. X! \# swift-ring-builder container.builder add \+ t2 w- R" {6 o4 r9 u
  --region 1 --zone 2 --ip 10.0.0.52 --port 6001 --device sdb --weight 1001 L- C$ Z, A: x
Device d2r1z3-10.0.0.52:6001R10.0.0.52:6001/sdb_"" with 100.0 weight got id 2
4 w, J% ^: Z4 V% l  y: w# swift-ring-builder container.builder add \
* e( d3 T/ ]( [% i4 E6 E8 e  --region 1 --zone 2 --ip 10.0.0.52 --port 6001 --device sdc --weight 100
- y* w& P! X! o) b! B# mDevice d3r1z4-10.0.0.52:6001R10.0.0.52:6001/sdc_"" with 100.0 weight got id 38 L2 ?5 T5 e; J+ F$ {- Q  `
验证 ring 的内容:% R' I/ i: e% _( L& \9 M0 G! n3 d
6 R4 X+ J$ a) r) @; T0 m
# swift-ring-builder container.builder0 D- U4 X% P6 b$ {; J( w" K$ @; e9 V
container.builder, build version 4! R8 t7 Z# r/ c7 E3 Y
1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
. H3 P& T" P% w6 J2 V7 f; tThe minimum number of hours before a partition can be reassigned is 1
* u+ I( v8 E0 C/ e/ d$ |! mThe overload factor is 0.00% (0.000000)
* k% \9 M/ s' S+ o/ S  eDevices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta
/ Q2 i) Y! D+ P             0       1     1       10.0.0.51  6001       10.0.0.51              6001      sdb  100.00          0 -100.00
% T7 F- _/ b3 x5 I( E             1       1     1       10.0.0.51  6001       10.0.0.51              6001      sdc  100.00          0 -100.00
" A# t7 r2 D* T- g& S+ p( r             2       1     2       10.0.0.52  6001       10.0.0.52              6001      sdb  100.00          0 -100.00
' w" G2 e: ]: }8 v  C$ ^             3       1     2       10.0.0.52  6001       10.0.0.52              6001      sdc  100.00          0 -100.003 [0 H. U9 p6 Y0 t; q
平衡 ring:$ i0 C% y$ j: C2 V$ Y& @$ J5 @  ~

' d3 l8 q" M8 y8 [1 q6 b9 {1 v+ k3 m# swift-ring-builder container.builder rebalance  p& W+ s: z8 r: z$ }" G
Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00) v/ z; F" z. o# t) f0 n& y
创建对象ring¶
) h% [1 D' D- G6 ?7 N% e% ?" L, O' b
对象服务器使用对象环来维护对象在本地设备上的位置列表。( O6 k* E- V( Q% _( |
! ^8 T; ?( ~0 ^2 {  }
切换到 ``/etc/swift``目录。
6 ^; W; y0 H9 w, C+ A5 N2 R
6 h* s1 _$ ?4 b" q8 H8 v创建基本``object.builder``文件:
" _7 ]9 C' m8 j+ x4 U+ c8 [2 M/ j0 u
# swift-ring-builder object.builder create 10 3 17 L' q+ v& ]7 X4 [$ C" x( b
注解8 x& d. i6 I" ]0 _2 S" z/ p# U

. d/ H0 `  _- Q! h这个命令执行后没有输出。
7 z5 m' q- E& \& g( g
& N, k% b6 x1 G, X& W添加每个节点到 ring 中:
' m1 h7 @+ N# s: u, _& F* j6 g" n5 \0 H* y* s3 r# e" A5 k* ~& J
# swift-ring-builder object.builder \
9 H! F5 D( l5 x% @4 F  X  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6000 \
. E& k# L1 [2 d/ T6 F! l  F& |( V  --device DEVICE_NAME --weight DEVICE_WEIGHT) O  U4 H! @$ H
将 STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点管理网络的IP地址。将 DEVICE_NAME``替换为同一个存储节点存储设备名称。例如,使用 :ref:`swift-storage` 中的第一个存储节点的 ``/dev/sdb 存储设备,大小为100:
9 r' a1 m, `9 j8 ~' t3 b1 M1 o) {; t6 o: A
# swift-ring-builder object.builder add \& |& e* b/ c+ {' D  ^0 W7 P$ F
  --region 1 --zone 1 --ip 10.0.0.51 --port 6000 --device sdb --weight 100
2 @6 `' }9 A% k4 o, L在每个存储节点上面重复执行这个命令。在这个例子的架构中,使用该命令的四个变量:' j, f( |" N/ W: [6 o
2 y8 L1 Q/ w4 g  ^5 l" y. ]
# swift-ring-builder object.builder add \
3 x" j) N1 }# ~  --region 1 --zone 1 --ip 10.0.0.51 --port 6000 --device sdb --weight 100
) b- t; d8 b9 e8 IDevice d0r1z1-10.0.0.51:6000R10.0.0.51:6000/sdb_"" with 100.0 weight got id 0
: h, Q3 D4 P9 @- i% x# swift-ring-builder object.builder add \
- L2 g' ?* M, A% q3 x( J: p5 E% Q+ {  --region 1 --zone 1 --ip 10.0.0.51 --port 6000 --device sdc --weight 100
( S8 O# R! L+ p9 O! EDevice d1r1z2-10.0.0.51:6000R10.0.0.51:6000/sdc_"" with 100.0 weight got id 1
+ p/ @) s8 |4 O$ }3 q# swift-ring-builder object.builder add \
. O( p& t9 n6 K4 V  ^/ `  --region 1 --zone 2 --ip 10.0.0.52 --port 6000 --device sdb --weight 100
8 J& u+ E) _8 _Device d2r1z3-10.0.0.52:6000R10.0.0.52:6000/sdb_"" with 100.0 weight got id 2
; |& \: W! X) Q3 x4 Z# swift-ring-builder object.builder add \4 F/ g8 I6 X  _5 \
  --region 1 --zone 2 --ip 10.0.0.52 --port 6000 --device sdc --weight 100
9 ~/ E$ l" ~$ qDevice d3r1z4-10.0.0.52:6000R10.0.0.52:6000/sdc_"" with 100.0 weight got id 3
; `9 U+ R" K  @1 j% I6 R验证 ring 的内容:
6 Z3 Q8 r0 F" {% F- I# R
6 A. \/ \3 k. h$ a4 R  i# swift-ring-builder object.builder% p$ I) f5 Q1 F" C
object.builder, build version 4
' w3 V* J( D8 q8 U1 _2 O1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
0 K, ^, D) ?7 ~  RThe minimum number of hours before a partition can be reassigned is 1
" O' L( y. x$ H; a0 [The overload factor is 0.00% (0.000000)
) V  H7 u9 h; @: M% {: hDevices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta
0 r+ m  E6 d* p4 ~$ k" q* L; Z             0       1     1       10.0.0.51  6000       10.0.0.51              6000      sdb  100.00          0 -100.00% F3 c+ l- Y9 b; i! f
             1       1     1       10.0.0.51  6000       10.0.0.51              6000      sdc  100.00          0 -100.00
$ I( r- z/ p- y1 A  t) K; R  Y4 H4 m             2       1     2       10.0.0.52  6000       10.0.0.52              6000      sdb  100.00          0 -100.00* p8 A$ t' W0 D0 Y. t9 m
             3       1     2       10.0.0.52  6000       10.0.0.52              6000      sdc  100.00          0 -100.00/ o% b5 c. P7 T  m" U
平衡 ring:* S; w5 W* U0 E4 N, t$ l' h

% U( [8 }; U, {0 Y0 }# swift-ring-builder object.builder rebalance& i9 d5 ?  d) M5 X
Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00) p; P& N. x: {, T0 ?5 R- k
分发环配置文件¶0 T% s% E$ t, S: \, y! e  |
( R& v& [. b$ E+ h& W) p' j* N
复制``account.ring.gz``,container.ring.gz``和``object.ring.gz 文件到每个存储节点和其他运行了代理服务的额外节点的 /etc/swift 目录。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-8-30 11:20:32 | 显示全部楼层
OpenStack对象存储是一个多租户的对象存储系统,它支持大规模扩展,可以以低成本来管理大型的非结构化数据,通过RESTful HTTP 应用程序接口。* e; c! N7 S" g7 ?! F6 o; A
/ A! X& u* V0 F" f7 h1 f, @4 p, T
它包含下列组件:
( ?5 ~! c& k& u5 d# U+ y* d. k  C- s3 S* s2 E' ^
代理服务器(swift-proxy-server)
' \) @- W' S8 s/ p" W接收OpenStack对象存储API和纯粹的HTTP请求以上传文件,更改元数据,以及创建容器。它可服务于在web浏览器下显示文件和容器列表。为了改进性能,代理服务可以使用可选的缓存,通常部署的是memcache。3 u: f- Z5 s5 a2 o- i+ @4 |

/ l4 G$ B/ G3 f6 Q1 n* V账户服务器 (swift-account-server)
$ k0 ~/ q' w: f. H% t管理由对象存储定义的账户。
/ |& w% t# H) b9 S' X
7 p. U! b+ m, d" F4 |4 u容器服务器 (swift-container-server)" X7 z: Z$ P$ c, Y# |
管理容器或文件夹的映射,对象存储内部。
. K: q. m" m9 Q4 @0 t% t  }! v# |, _0 G; O& y* V3 k+ \
对象服务器 (swift-object-server)
/ m0 Q6 q' r- M6 q! l1 }( Z( u. l+ h在存储节点上管理实际的对象,比如:文件。' Z) F+ O! b3 }- W1 R
$ ]  Z/ [1 U; L7 w$ m0 H. J" a  A
各种定期进程4 c+ O( n! _) t  \
为了驾驭大型数据存储的任务,复制服务需要在集群内确保一致性和可用性,其他定期进程有审计,更新和reaper。. v7 c$ q0 h& J, o

5 S( a5 @, m; i0 V" BWSGI中间件0 K2 A5 z' d; _7 u3 {3 k" I
掌控认证,使用OpenStack认证服务。
: e7 x% S$ C5 I! P7 t& c: z+ g9 A# F: h8 `: ]
swift 客户端
& t* G& O$ A" O( G/ w用户可以通过此命令行客户端来向REST API提交命令,授权的用户角色可以是管理员用户,经销商用户,或者是swift用户。
( m. t+ s  x! f0 E; u+ C" S7 h/ K
swift-init3 y( A- F" V1 c# k
初始化环链文件生成的脚本,将守护进程名称当作参数并提供命令。归档于http://docs.openstack.org/develo ... l#managing-services' ~, f+ g' p5 j2 j

5 v- w4 E1 \6 K# _8 Gswift-recon4 y  w5 z; T: {" ^3 I
一个被用于检索多种关于一个集群的度量和计量信息的命令行接口工具已被swift-recon中间件采集。/ l/ F: G" @1 }0 ?$ i* Q) E
# m3 L* j4 \1 v- R' O
swift-ring-builder
+ x4 N6 \" a8 n* r存储环链建立并重平衡实用程序。归档于http://docs.openstack.org/develo ... #managing-the-rings

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-8-30 11:21:37 | 显示全部楼层
从对象存储源仓库中获取 /etc/swift/swift.conf 文件:
4 G: ^; ?, L  n7 [0 ~5 ~- Q7 L0 i* \
, u6 |" E# l. R. ~! _8 C8 p3 J# curl -o /etc/swift/swift.conf \' u9 ?) ]1 H2 g! e% v2 L
  https://git.openstack.org/cgit/o ... ple?h=stable/mitaka
5 x/ b: i+ a7 J4 h7 d编辑 /etc/swift/swift.conf 文件并完成以下动作:
( D  ~/ S$ ]0 p7 c4 z$ F* B
& Z" [2 R+ H% {) d8 D在``[swift-hash]``部分,为你的环境配置哈希路径前缀和后缀:$ i% [5 w% q/ g3 t7 J/ a% o4 H6 f

1 `6 S- q- h+ D! m8 J[swift-hash]
7 I/ \1 Q) j) T8 Y...
; J% C/ ^' j* d- Q; f6 B+ tswift_hash_path_suffix = HASH_PATH_SUFFIX
+ k: A; ?, y8 Q+ Bswift_hash_path_prefix = HASH_PATH_PREFIX& `% j' ~/ X2 Y5 @
将其中的 HASH_PATH_PREFIX和 HASH_PATH_SUFFIX替换为唯一的值。
" @6 K! D9 y/ T) [: \; z# g* `. a$ J* [7 \* r
警告5 g* x+ S# s9 K+ X  ?
$ J7 r7 {; |- ~6 l0 S
这些值要保密,并且不要修改或丢失。$ I9 A( G& G: c9 F& e
7 Z8 n5 W+ g5 p$ k6 g7 }
在``[storage-policy:0]``部分,配置默认存储策略:
9 n! }: v5 e9 Z2 X6 b- J
9 ~" u6 B" x3 @7 J[storage-policy:0]
/ Q" p& R7 @6 D4 B...4 a$ P% V# \% ?. ~; u6 n9 T
name = Policy-0* |2 \6 h2 @- E, u1 w, i) m
default = yes0 c5 q2 Z0 a3 ~' W/ K# G
复制``swift.conf`` 文件到每个存储节点和其他允许了代理服务的额外节点的 /etc/swift 目录。" E- h  Q6 e" l: I

6 e: Q4 p6 e7 A: _% n7 }8 ?9 }+ Q) w在所有节点上,确认配置文件目录是否有合适的所有权:# ?# c' r3 q# }; e

; U2 t# h3 O$ Q# chown -R root:swift /etc/swift
/ @1 T# E# |; `1 B在控制节点和其他运行了代理服务的节点上,启动对象存储代理服务及其依赖服务,并将它们配置为随系统启动:
' x4 M, A" i) x, `+ m6 S7 c; n& J. z% d) ]
# systemctl enable openstack-swift-proxy.service memcached.service& y9 A. b0 q% r1 G! ?8 U- R
# systemctl start openstack-swift-proxy.service memcached.service
3 S3 D) L/ v! T1 }6 U0 D在存储节点上,启动对象存储服务,并将其设置为随系统启动:
9 z; N: {% n0 P! O, o+ q1 C+ I' y6 y3 ^# F
# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service \
0 X/ Y9 U; N  T- r. N" g! h$ U  openstack-swift-account-reaper.service openstack-swift-account-replicator.service8 h; F' V. {5 W. s" g2 X! s3 p
# systemctl start openstack-swift-account.service openstack-swift-account-auditor.service \. g8 M6 ?, K) K1 I
  openstack-swift-account-reaper.service openstack-swift-account-replicator.service' m' _3 v: {$ O3 H' w' z
# systemctl enable openstack-swift-container.service \1 \! B4 o6 w8 O3 w) E8 l8 s/ R1 {
  openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
' j6 O: _9 j7 y6 v  openstack-swift-container-updater.service
% b) n) d3 e/ Y# systemctl start openstack-swift-container.service \
7 I$ z9 l! R" w* r; L  openstack-swift-container-auditor.service openstack-swift-container-replicator.service \) F4 @  w# c8 r- p7 q$ B
  openstack-swift-container-updater.service7 l' s$ o- C- U9 q% x4 B4 N
# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service \% I+ V) Z7 B& Q  x0 A
  openstack-swift-object-replicator.service openstack-swift-object-updater.service7 A/ n8 E( v) r! f" s
# systemctl start openstack-swift-object.service openstack-swift-object-auditor.service \" i- R% G2 F2 o' ]
  openstack-swift-object-replicator.service openstack-swift-object-updater.service

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-8-30 11:21:56 | 显示全部楼层
警告# U/ r+ O1 p+ T

+ J$ r: s! L5 \4 B如果其中的一项或多项步骤没有正确执行,请在``/var/log/audit/audit.log``文件中检查SELinux的关于禁止``swift``过程的信息。如果该文件存在的话,将``/srv/node``目录下``swift_data_t`` type, object_r role 和the system_u user关于安全等级的信息设置成最低安全等级(s0)2 w, [; Y8 y3 q0 s: i
  c1 C/ \5 k# d5 A5 {( z7 c
# chcon -R system_u:object_r:swift_data_t:s0 /srv/node$ E4 O% ?, C' f6 U4 t$ X1 u
导入``demo``凭证2 v0 E  T- z' n9 y  D: c

( G/ H. r1 m0 d8 c$ V% @$ . demo-openrc* W2 K, r# i2 A' O6 U
显示服务状态:
0 e( G3 V0 a& y! z
: \  a) w) k, `5 M% ^7 Q- w$ swift stat4 i2 e5 J  a/ k4 W9 ~* O
                        Account: AUTH_ed0b60bf607743088218b0a533d5943f
: A% {1 c" ?7 z                     Containers: 0" _' j2 c' `. P3 Z+ ~
                        Objects: 0* a# {9 D" j& y4 x1 t" Z# ?' d! j
                          Bytes: 0. n( x# F9 B5 u1 Z7 U
Containers in policy "policy-0": 0
* ?, h- q0 V8 g8 w0 @* y7 x  X6 O   Objects in policy "policy-0": 0
7 W/ N. g: z0 B, Z     Bytes in policy "policy-0": 07 |% Q2 o. x9 X: _- |3 x
    X-Account-Project-Domain-Id: default
3 ?- q. `  K# e9 T" x1 z& v9 U                    X-Timestamp: 1444143887.71539
4 F/ \8 }/ z& g: W- a  E% k                     X-Trans-Id: tx1396aeaf17254e94beb34-0056143bde" J1 k. N. `2 H2 V0 V5 K4 w
                   Content-Type: text/plain; charset=utf-88 w; m; R* k1 C; |( f# K1 e
                  Accept-Ranges: bytes
( \6 `6 o% ]5 M( l, Q创建``container1``容器' M5 N1 E# r6 Z( t" ^

- C- [) C. U( W$ h" @$ openstack container create container1" E  d0 p5 g1 U- a' q5 {
+---------------------------------------+------------+------------------------------------+7 h0 p2 e/ y/ f. S$ A: ^7 f
| account                               | container  | x-trans-id                         |/ D& k/ x: q- Q6 H
+---------------------------------------+------------+------------------------------------+
) N+ M3 o9 w4 s; n| AUTH_ed0b60bf607743088218b0a533d5943f | container1 | tx8c4034dc306c44dd8cd68-0056f00a4a |7 d# M1 J7 b% [' J
+---------------------------------------+------------+------------------------------------+
8 d3 \3 l9 g% L2 k3 \2 {上传一个测试文件到``container1``容器
8 x1 i# ~7 t( i8 z1 w: T( C/ y* d% k. X! {5 L/ |
$ openstack object create container1 FILE
8 x  j7 Z# V- g. T7 N8 `+--------+------------+----------------------------------+
! ^* B% d4 N2 ]" G7 M; n& B8 g$ O| object | container  | etag                             |0 r5 L8 w) ^4 X. @! I3 S$ o
+--------+------------+----------------------------------+
) _. R# @5 |% Q| FILE   | container1 | ee1eca47dc88f4879d8a229cc70a07c6 |
& q8 ]' w% O4 B- C7 W+--------+------------+----------------------------------+
+ Q" x$ Z* `1 g( ~用本地要上传到 container1 容器的文件名替换 FILE。
1 z4 f4 A  I: A" T% I) R; ^  O1 T2 Z- @/ _; V0 M
列出``container1``容器里的所有文件. @  R7 o* k6 D

; ^6 O. l& j" V1 f! [8 \$ openstack object list container1
) t$ h0 R8 j; L0 |+------+; k1 l6 ^0 h; P2 X: Y
| Name |
/ X" M& j8 p$ i- |+------+
  d0 C7 w  W. t/ ^; C( @| FILE |
6 t! \% J7 a: I+------+
1 B; Z& s+ O& x: o+ W6 W. R4 C从``container1``容器里下载一个测试文件
! I& e! ]2 S+ P+ v3 \  Q
/ e% r1 B: S  h" s$ openstack object save container1 FILE
$ l( d  a$ R" n5 G用上传到 container1 容器的文件名替换 FILE。9 C+ _" y& {8 J4 p8 e  [5 P5 T

) K1 v4 w- o( t0 P7 N  J3 A* T 注解& S, X8 B, `' R

9 f+ @4 j- k! K$ K2 H9 d( i' ~这个命令执行后没有输出。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-8-30 11:22:10 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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