1、yum install openstack-swift openstack-swift-proxy openstack-swift-account openstack-swift-container openstack-swift-object memcached xfsprogs
2、vi /etc/swift/swift.conf
swift_hash_path_suffix = swifthashrandomstring
3、setup the XFS volume
fdisk /dev/sdb (set up a single partition) // 简单起见,只用一个分区
echo "/dev/sdb2 /srv/node/sdb2 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab
mkdir -p /srv/node/
chown -R swift:swift /srv/node
4、vi /etc/rsyncd.conf
关于xinent.d 的启动和配置,请自己搜索文章去参考。
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = E3-xeon
[account]
max connections = 2
path = /srv/
read only = false
lock file = /var/lock/account.lock
[container]
max connections = 2
path = /srv/
read only = false
lock file = /var/lock/container.lock
[object]
max connections = 2
path = /srv/
read only = false
lock file = /var/lock/object.lock
5、 vi /etc/swift/account-server.conf
[DEFAULT]
bind_ip = E3-xeon
workers = 2
mount_check = false //这行很重要,要不然会出错
[pipeline:main]
pipeline = account-server
[app:account-server]
use = egg:swift#account
[account-replicator]
[account-auditor]
[account-reapera]
6、vi /etc/swift/container-server.conf
[DEFAULT]
bind_ip = E3-xeon
workers = 2
mount_check = false
[pipeline:main]
pipeline = container-server
[app:container-server]
use = egg:swift#container
[container-replicator]
[container-updater]
[container-auditor]
7、vi /etc/swift/object-server.conf
[DEFAULT]
bind_ip = E3-xeon
workers = 2
mount_check = false
[pipeline:main]
pipeline = object-server
[app:object-server]
use = egg:swift#object
[object-replicator]
[object-updater]
[object-auditor]
[object-expirer]
8、vi /etc/swift/proxy-server.conf
[DEFAULT]
bind_port = 8080
workers = 8
user = swift
swift_dir = /etc/swift
#cert_file = /etc/swift/cert.crt
#key_file = /etc/swift/cert.key
log_name = swift
log_facility = LOG_LOCAL0
log_level = DEBUG
[pipeline:main]
pipeline = catch_errors healthcheck cache authtoken keystone proxy-server
[app:proxy-server]
use = egg:swift#proxy
allow_account_management = true
account_autocreate = true
log_level = DEBUG
set access_log_name = swift-proxy
set access_log_facility = SYSLOG
set access_log_level = INFO
set log_headers = True
[filter:keystone]
paste.filter_factory = keystone.middleware.swift_auth:filter_factory
operator_roles = admin, swiftoperator
is_admin = true
[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
# Delaying the auth decision is required to support token-less
# usage for anonymous referrers ('.r:*').
auth_protocol = http
auth_host = E3-xeon
auth_port = 35357
auth_token = ADMIN
service_protocol = http
service_host = E3-xeon
service_port = 5000
admin_token = ADMIN
admin_tenant_name = service
admin_user = swift
admin_password = swift
delay_auth_decision = 0
[filter:cache]
use = egg:swift#memcache
memcache_servers = 127.0.0.1:11211
set log_name = cache
[filter:catch_errors]
use = egg:swift#catch_errors
[filter:healthcheck]
use = egg:swift#healthcheck
9、Start the storage services and add to /etc/rc.local
echo "swift-init main start" >> /etc/rc.local
echo "swift-init rest start" >> /etc/rc.local
10、Create the account, container and object rings
cd /etc/swift
swift-ring-builder account.builder create 10 1 1
swift-ring-builder container.builder create 10 1 1
swift-ring-builder object.builder create 10 1 1
swift-ring-builder account.builder add z1-192.168.1.30:6002/node 100
swift-ring-builder container.builder add z1-192.168.1.30:6001/node 100
swift-ring-builder object.builder add z1-192.168.1.30:6000/node 100
Verify the ring contents for each ring:
swift-ring-builder account.builder
swift-ring-builder container.builder
swift-ring-builder object.builder
Rebalance the rings:
swift-ring-builder account.builder rebalance
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder rebalance
chown -R swift:swift /etc/swift
Restart service:
swift-init all restart
最后重启机器,用swift stat来验证