`
jetway
  • 浏览: 480252 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

OpenStack Swift安装与配置

 
阅读更多

OpenStack Swift安装与配置

OCT 15TH, 2013

准备环境

1
2
3
192.168.30.150   proxy server
192.168.30.151    storage server 
192.168.30.152    storage server

网络配置

Proxy 代理节点网络(单网卡)

1
2
3
4
5
6
7
8
9
10
11
12
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.30.150
netmask 255.255.255.0
gateway 192.168.30.1
network 192.168.30.0
broadcast 192.168.30.255
dns-nameservers 218.201.4.3

存储节点网络(单网卡) 存储节点1:

1
2
3
4
5
6
7
8
9
10
11
12
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.30.151
netmask 255.255.255.0
gateway 192.168.30.1
network 192.168.30.0
broadcast 192.168.30.255
dns-nameservers 218.201.4.3

存储节点2:

1
2
3
4
5
6
7
8
9
10
11
12
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.30.152
netmask 255.255.255.0
gateway 192.168.30.1
network 192.168.30.0
broadcast 192.168.30.255
dns-nameservers 218.201.4.3

安装公共组件

以下操作在所有节点全部安装:

添加源

1
2
3
4
cat > /etc/apt/sources.list.d/grizzly.list << _END_
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main
deb  http://ubuntu-cloud.archive.canonical.com/ubuntu precise-proposed/grizzly main
_END_

更新源

1
2
3
4
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 5EDB1B62EC4926EA
apt-get update
apt-get upgrade
apt-get install ubuntu-cloud-keyring

 

安装 Swift

1
2
3
os_swift="python-swift swift swift-proxy swift-account swift-container swift-object python-memcache xfsprogs"
os_keystone="python-keystone python-keystoneclient"
apt-get install -y $os_swift $os_keystone

安装之后需要手工创建 swift相关配置文件:

1
2
3
4
mkdir /etc/swift
touch /etc/swift/swift.conf
touch /etc/swift/proxy-server.conf
chown -R swift:swift /etc/swift

添加 swift.conf内容:

1
2
3
4
5
6
cat > /etc/swift/swift.conf << _END_
[swift-hash]
# od -t x8 -N 8 -A n < /dev/random
# The above command can be used to generate random a string.
swift_hash_path_suffix = 50ea1ddb6e88b991
_END_

将以下内容添加到 /etc/swift/proxy-server.conf内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[DEFAULT]
bind_port = 8080
bind_ip = 0.0.0.0
user = swift
swift_dir = /etc/swift
log_facility = LOG_LOCAL0
log_level = DEBUG
[pipeline:main]
pipeline = catch_errors healthcheck cache authtoken keystoneauth container-quotas account-quotas proxy-server
[app:proxy-server]
use = egg:swift#proxy
allow_account_management = true
account_autocreate = true
[filter:keystoneauth]
use = egg:swift#keystoneauth
operator_roles = Member,admin
[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
service_protocol = http
service_port = 5000
service_host = 192.168.30.150
auth_port = 35357
auth_host = 192.168.30.150
auth_protocol = http
admin_tenant_name = service
admin_user = swift
admin_password = password
signing_dir = /etc/swift
[filter:cache]
use = egg:swift#memcache
set log_name = cache
memcache_servers = 192.168.30.150:11211
[filter:catch_errors]
use = egg:swift#catch_errors
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:proxy-logging]
use = egg:swift#proxy_logging
[filter:ratelimit]
use = egg:swift#ratelimit
[filter:container-quotas]
use = egg:swift#container_quotas
[filter:account-quotas]
use = egg:swift#account_quotas

如果不使用 Keystone 认证,请使用以下的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[DEFAULT]
bind_port = 8080
bind_ip = 192.168.30.150
user = swift
[pipeline:main]
pipeline = healthcheck cache tempauth proxy-server
[app:proxy-server]
use = egg:swift#proxy
allow_account_management = true
account_autocreate = true
[filter:tempauth]
use = egg:swift#tempauth
user_admin_admin = admin .admin .reseller_admin
user_test_tester = testing .admin
user_test2_tester2 = testing2 .admin
user_test_tester3 = testing3
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:cache]
use = egg:swift#memcache
memcache_servers = 192.168.30.150:11211

格式: user = 登录的时候就是:

1
2
3
login = admin:admin
password = admin
privileges = .admin .reseller_admin

配置rsyslog

1
2
echo "local0.*    /var/log/swift/proxy-server.log" >> /etc/rsyslog.conf
mkdir /var/log/swift

配置 环 Ring

1
2
3
4
cd /etc/swift
sudo swift-ring-builder account.builder create 6 2 1
sudo swift-ring-builder container.builder create 6 2 1
sudo swift-ring-builder object.builder create 6 2 1

说明

  • 第一个数字:6表示分区(环)将被处理为26th,即使用2的6次方个分区,创建完之后应有 64个分区
  • 第二个数字:每个存储对象保存2份,即创建2个副本;由于偶只有两台storage,故只写2
  • 第三个数字:1表示限制分区数据转移的时间,此处表示1小时,即分区被连续移动两次之间的最小时间间隔

添加设备 添加新设备到Ring上,但add操作不会分配partitions到新的设备上,只有运行“rebalance”命令后才会进行分区的分配,所以这种方式可以有这种优势: 允许一次添加多个设备,只执行一次rebalance就可以了,以下操作步骤:

1
2
3
4
5
6
7
8
sudo swift-ring-builder account.builder add z1-192.168.30.151:6002/sdb1 100
sudo swift-ring-builder account.builder add z2-192.168.30.152:6002/sdb1 100
sudo swift-ring-builder container.builder add z1-192.168.30.151:6001/sdb1 100
sudo swift-ring-builder container.builder add z2-192.168.30.152:6001/sdb1 100
sudo swift-ring-builder object.builder add z1-192.168.30.151:6000/sdb1 100
sudo swift-ring-builder object.builder add z2-192.168.30.152:6000/sdb1 100

查看 Ring信息 可通过以下命令查到到Ring和Ring中的设备信息: * 查询account信息:

    swift-ring-builder account.builder
  • 查询container信息:

      swift-ring-builder container.builder
    
  • 查询object信息

      swift-ring-builder object.builder
    
  • 生成 Ring 如果确认一切之后,最终还要生成Ring,来进行分区的分配,即之前提到的rebalance:

1
2
3
sudo swift-ring-builder account.builder rebalance
sudo swift-ring-builder container.builder rebalance
sudo swift-ring-builder object.builder rebalance

设置权限

1
2
chown -R swift:swift /etc/swift
chown -R swift:swift /var/cache/swift

存储节点安装与配置

添加设备: 先创建分区,另外一定要是 XFS文件系统

1
2
3
4
5
mkdir -p /srv/node/sdb1
chown -R swift:swift /srv/node/
mkfs.xfs -i size=1024 /dev/sdb1 -f 
echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab 
mount /srv/node/sdb1  

设置 rsyncd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 192.168.30.151
[account]
max_connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/account.lock
[container]
max_connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/container.lock
[object]
max_connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/object.lock

设置 rsync开机自启动

sudo sed -i 's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/g' /etc/default/rsync

启动 rsync服务

sudo service rsync start

创建/etc/account-server.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[DEFAULT]
bind_ip = 0.0.0.0
bind_port = 6002
workers = 1
user = swift
swift_dir = /etc/swift
devices = /srv/node
[pipeline:main]
pipeline = account-server
[app:account-server]
use = egg:swift#account
[account-replicator]
[account-auditor]
[account-reaper]

创建/etc/container-server.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[DEFAULT]
bind_ip = 0.0.0.0
bind_port = 6001
workers = 1
user = swift
swift_dir = /etc/swift
devices = /srv/node
[pipeline:main]
pipeline = container-server
[app:container-server]
use = egg:swift#container
[container-replicator]
[container-updater]
[container-auditor]
[container-sync]

创建/etc/object-server.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[DEFAULT]
bind_ip = 0.0.0.0
bind_port = 6000
workers = 1
user = swift
swift_dir = /etc/swift
devices = /srv/node
[pipeline:main]
pipeline = recon object-server
[app:object-server]
use = egg:swift#object
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[object-replicator]
[object-updater]
[object-auditor]

重启服务

在所有存储节点重启以下服务:

1
2
3
4
5
6
7
8
9
10
11
sudo swift-init object-server start
sudo swift-init object-replicator start
sudo swift-init object-updater start
sudo swift-init object-auditor start
sudo swift-init container-server start
sudo swift-init container-replicator start
sudo swift-init container-updater start
sudo swift-init container-auditor start
sudo swift-init account-server start
sudo swift-init account-replicator start
sudo swift-init account-auditor start

在代理节点启动以下服务:

1
sudo swift-init all restart

Swift操作

获得 X-Storage-Url 和 X-Auth-Token:

curl -k -v -H 'X-Storage-User: admin:admin' -H 'X-Storage-Pass: admin' http://192.168.30.150:8080/auth/v1.0

如果正确,将会返回以下类似信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
* About to connect() to 192.168.30.150 port 8080 (#0)
*   Trying 192.168.30.150... connected
> GET /auth/v1.0 HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: 192.168.30.150:8080
> Accept: */*
> X-Storage-User: admin:admin
> X-Storage-Pass: admin
> 
< HTTP/1.1 200 OK
< X-Storage-Url: http://192.168.30.150:8080/v1/AUTH_admin
< X-Auth-Token: AUTH_tk8a85916d63b14c568a4633b7920623c5
< Content-Type: text/html; charset=UTF-8
< X-Storage-Token: AUTH_tk8a85916d63b14c568a4633b7920623c5
< Content-Length: 0
< Date: Tue, 15 Oct 2013 01:49:59 GMT
< 
* Connection #0 to host 192.168.30.150 left intact
* Closing connection #0

 

检查账号

    curl -k -v -H 'X-Auth-Token: <token-from-x-auth-token-above>' <url-from-xstorage-url-above>  

这里的token-from-x-auth-token-above 就是上面输出的 AUTH_tk8a85916d63b14c568a4633b7920623c5,url-from-xstorage-url-above对应:http://192.168.30.150:8080/v1/AUTH_admin

检测 swift 命令是否工作正常

    swift -A http://192.168.30.150:8080/auth/v1.0 -U admin:admin -K admin stat

正常输出类似以下信息:

1
2
3
4
5
6
7
   Account: AUTH_admin
Containers: 0
   Objects: 0
     Bytes: 0
Accept-Ranges: bytes
X-Timestamp: 1381806617.24083
Content-Type: text/plain; charset=utf-8

上传

swift -A http://192.168.30.150:8080/auth/v1.0 -U admin:admin -K admin upload test apache-tomcat-6.0.36.tar.gz

删除

swift -A http://192.168.30.150:8080/auth/v1.0 -U admin:admin -K admin delete test apache-tomcat-6.0.36.tar.gz

排错思路

  1. 直接看控制台打印的日志
  2. 检查配置文件是否正确
  3. 通过观察日志,例如/var/log/syslog
  4. 修改配置文件之后,需要重启对应的服务
分享到:
评论

相关推荐

    OpenStack swift 安装文档

    在这个文档中,我们将详述如何在Ubuntu 10.04 Desktop环境下安装和配置Swift,特别是使用SAIO(Swift All In One)的方式,即在一个单一的机器上部署所有Swift组件。 首先,确保你的系统是Ubuntu 10.04,并且你的...

    OpenStack Swift对象存储在SSD上的优化

    ### OpenStack Swift 对象存储在 SSD 上的优化 #### 一、对象存储为何如此火热? 随着信息技术的发展,数据量的增长速度惊人,其中非结构化数据占到了90%以上,这些数据包括了大量的小文件和大文件。同时,数据...

    Openstack Swift 原理、架构与API介绍.docx

    OpenStack Swift 是一个高度可用的分布式对象存储系统,最初由 Rackspace 开发并在 2010 年贡献给了 OpenStack 社区。它主要设计用于存储非结构化的数据,如图片、视频和文档,尤其适用于大规模互联网应用。Swift 的...

    使用curl操作openstack swift.docx

    ### 使用curl操作OpenStack Swift详解 #### 一、概述 在云计算领域,OpenStack作为一款开源的云操作系统,提供了丰富的功能和服务。其中Swift是OpenStack项目中的一个子项目,主要负责提供对象存储服务,用于存储...

    Packt.Implementing Cloud Storage with Openstack Swift.2014

    这可能包括安装Swift所需的软件包、配置网络设置、设置存储节点、构建复制策略以及确保数据的持久化和可靠性。 5. Swift的API接口: OpenStack Swift提供了丰富的API接口,用于创建、读取、更新和删除存储中的对象...

    Implementing Cloud Storage with OpenStack Swift_Packt Publishing(2014).pdf

    书中的内容涵盖OpenStack Swift的设计原理,以及安装、配置、管理云存储集群的实用知识。它还会介绍如何在各种不同的场景下使用Swift,例如作为备份解决方案、内容分发网络(CDN)和大数据存储。由于云计算存储已经...

    openstack Swift All in one 搭建手册1

    本文将指导您完成 OpenStack Swift All in One 的搭建过程,从搭建环境到启动 Swift 服务,涵盖了详细的步骤和配置信息。 搭建环境 在开始搭建 Swift 之前,我们需要首先准备好搭建环境。我们的测试机器采用 ...

    Implementing Cloud Storage with OpenStack Swift

    3. **配置参数**:根据实际情况调整Swift的配置参数,例如数据复制策略、分区规则等。 4. **启动服务**:启动所有必要的服务,包括代理服务器、账户服务器、容器服务器和对象服务器等。 5. **测试验证**:完成部署后...

    OpenStack安装与配置

    OpenStack是一种开源的云计算平台,它允许用户通过互联网获取并使用计算能力、存储空间和各类软件服务。...通过深入理解和熟练掌握OpenStack的安装与配置,用户可以构建自己的云计算环境,满足不同业务需求。

    openstack安装配置手册1

    OpenStack 安装配置手册 OpenStack 是一个开源的云计算平台,由 NASA 和 Rackspace 合作开发。它提供了一个完整的云计算解决方案,包括计算、存储、网络和身份验证等组件。本手册将指导您如何安装和配置 OpenStack...

    centos7 openstack ocata安装

    这个项目将向你展示如何在CentOS 7上安装和配置OpenStack Ocata。以下是一步步的详细过程。 首先,我们需要进行【一、环境准备】。确保你的系统是最新的,并且满足OpenStack Ocata的硬件和软件要求。更新你的CentOS...

    OpenStack Swift

    《OpenStack Swift》是由Joe Arnold以及SwiftStack团队成员撰写的一本详细介绍SwiftStack使用、管理和开发Swift对象存储系统的书籍。本书首先介绍了存储需求的演变,特别是当下数据存储需求的变迁以及数据量的增长...

    OpenStack Object Storage (Swift) Essentials

    内容可能涵盖如何安装和配置Swift环境,理解Swift的存储环(Storage Ring)和分片策略,以及如何进行故障排查和性能优化。书中也可能包含实战案例,帮助读者掌握实际操作技巧。 总之,《OpenStack Object Storage ...

    OpenStack全套安装教程.rar

    安装Neutron服务器,配置网络插件(如OVS),设置网络段,并确保Nova能与Neutron通信。 七、安装Cinder Cinder提供块存储服务。配置Cinder的数据库、消息队列,安装后端存储驱动(如LVM或iSCSI),并注册Cinder服务...

    OpenStack完整安装手册

    3. **MYSQL数据库服务安装**:OpenStack的一些组件如Keystone、Glance等需要数据库来存储元数据和配置信息。MySQL是常用的数据库选择。 4. **RABBITMQ消息队列服务安装**:RabbitMQ作为OpenStack的消息传递中间件,...

    django-storage-swift:适用于Django的OpenStack Swift存储后端

    描述中的信息简洁明了,与标题相呼应,再次确认了这是一个与Django集成,用于连接和操作OpenStack Swift存储的服务。 **OpenStack Swift介绍** OpenStack Swift是一个开源的对象存储系统,设计用于分布式、大规模...

Global site tag (gtag.js) - Google Analytics