准备环境
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
排错思路
- 直接看控制台打印的日志
- 检查配置文件是否正确
- 通过观察日志,例如/var/log/syslog
- 修改配置文件之后,需要重启对应的服务
相关推荐
OpenStack完整安装手册 3 控制节点安装 o 3.1 前提工作 o 3.2 NTP时钟服务安装 o 3.3 MYSQL数据库服务安装 o 3.4 RABBITMQ消息队列服务安装 o 3.5 PYTHON-NOVACLIENT库安装 o 3.6 KEYSTONE身份认证服务安装 o 3.7 ...
oioswift OpenIO SDS Swift 网关。 特征 包括: 对对象、容器和帐户的操作 认证支持 ...SDS Swift 网关使用 OpenStack Swift 代理。 conf/default.cfg有一个示例配置。 配置项: sds_namespac
OpenStack Swift中间件的代码。 上传对象后,我们将在后台压缩然后加密该对象。 这样可以节省后端空间,并保护数据。 这种压缩和加密对最终用户是透明的。 安装: 首先安装中间件: pip install -r requirements...
cinder-backup-swift-backend配置 创建虚拟设备 修改目录属主 配置防火墙,并重启防火墙
openstack ubuntu双节点部署教程+部署脚本文件
openstack 多节点安装完整版,详细的配置
要使用pip install vertica-swift-backup手动设置安装, pip install vertica-swift-backup并进行如下配置。 要为备份配置Vertica群集,请在每个节点设置上: 备份目录。 该目录应该与Vertica数据目录位于同一台...
目录 01-Openstack介绍及行业发展情况 02.Openstack组件介绍 03 nuxOpenstack自动化部署 04 LinuxOpenstack之网络准备 ...17社区K版openstack之多节点swift对象存储 18-社区K版Openstack之heat和Telemetry
课时4、实例:OpenStack自动安装(Fuel) 课时5、作业:OpenStack Fuel 课时6、OpenStack安装部署答问 课时7、Keystone 详解 课时8、实例:OpenStack 手动安装 - 环境准 课时9、实例:Keystone 手动安装 课时10、实例...
###手动OpenStack安装配置 Openstack部署架构讲解(3个VM) Keystone搭建 Glance搭建 Neutron搭建 Nova搭建 Dashboard 搭建 Swift搭建 Cinder搭建 ##OpenStack 自动部署 Openstack 自动化部署方式比较 DevStack...
课时4、实例:OpenStack自动安装(Fuel) 课时5、作业:OpenStack Fuel 课时6、OpenStack安装部署答问 课时7、Keystone 详解 课时8、实例:OpenStack 手动安装 - 环境准 课时9、实例:Keystone 手动安装 课时10、实例...
记录了openstack-swift的SAIO安装与配置过程
Swift Sync是将您的Swift存储库与文件系统同步的工具。 它目前仅支持Swift到本地文件系统(但最终会添加对上传的支持) 它专注于高性能,因此它是高度多线程的,例如具有良好的延迟,连接和本地磁盘性能(SSD),...
OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack除了有 Rackspace 和 NASA 的...
然后编辑您的 docker-registry 配置,以便storage读取swift 。 选项 您可以将以下任何一项添加到您的主要 docker-registry 配置中以进一步配置它: storage : swift storage_path : /registry swift_authurl : _...
OpenStack旗下包含了一组由社区维护的开源项目,他们分别是OpenStackCompute(Nova),OpenStackObjectStorage(Swift),以及OpenStackImageService(Glance)。 OpenStackCompute[1],为云组织的控制器,它提供一个工具...
在 files 文件夹中有与 swift 代理相关的环文件和配置文件。 在配置 swift 集群时替换环文件,并根据您的要求更改所有配置文件。 在 proxy-server.conf 文件中更改 bind_ip。 替换和配置代理相关文件后,进入Docker...
Cyber duck是Mac和Windows的免费服务器和云存储浏览器,支持FTP,SFTP,WebDAV,Amazon S3,OpenStack Swift,Backblaze B2,Microsoft Azure和OneDrive,Google Drive和Dropbox。 连接到每台服务器。通过易于...
3.云数据中心OpenStack架构与原理_Nova、Cinder、Swift 4.云数据中心OpenStack架构与原理_Glance、Keystone 5.云数据中心OpenStack架构与原理_FusionSphere介绍 6.云数据中心OpenStack组件部署_FusionSphere ...
安装您可以从头开始(源代码),也可以下载软件包以进行Linux发行,安装和运行!入门有一个简单的脚本可以执行: ./tools/oio-reset.sh 如果成功,您将很高兴尝试自己的小型SDS实例。 无需root权限!建立有关如何...