本文參照官方教程:http://docs.openstack.org/project-install-guide/object-storage/draft/environment-networking.htmlhtml
咱們要設置的swift節點名稱爲object1,主控節點和proxy節點都是controller。node
在controller節點的/etc/hosts文件裏寫上節點名稱和ip地址,必須是能ping通的地址,同理,swift節點的/etc/hosts文件要寫上各類地址。python
在controller節點上進行如下操做:git
source /root/admin-openrc.sh #必須找到該配置文件
建立swift用戶:swift
openstack user create --domain default --password-prompt swift
給swift用戶賦予admin角色權限app
openstack role add --project service --user swift admin
建立swift服務:dom
openstack service create --name swift --description "OpenStack Object Storage" object-store
建立endpoints:curl
openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s
openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s
openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1
安裝須要的組件:ide
yum install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached
下載配置文件:memcached
curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/newton
修改配置文件/etc/swift/proxy-server.conf:
[DEFAULT] bind_port = 8080 user = swift swift_dir = /etc/swift
[pipeline:main] 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
[app:proxy-server]
use = egg:swift#proxy ... account_autocreate = True
[filter:keystoneauth]
use = egg:swift#keystoneauth ... operator_roles = admin,user
[filter:authtoken] paste.filter_factory = keystonemiddleware.auth_token:filter_factory ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 #這裏有時候須要改爲127.0.0.1:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = swift password = 要設置的swift用戶的密碼 delay_auth_decision = True
[filter:cache] use = egg:swift#memcache ... memcache_servers = controller:11211 #這裏有時候須要改爲127.0.0.1:11211
接下來在storage節點上操做,也就是swift節點,若節點機器有多個,須要在每臺節點機器上都執行
安裝依賴組件:
yum install xfsprogs rsync
預先鏈接幾塊未格式化的硬盤,不要掛載和格式化,而後執行如下命令,通常爲兩塊到三塊
mkfs.xfs /dev/sdb mkfs.xfs /dev/sdc
mkfs.xfs /dev/sdd
建立對應的掛載節點目錄:
mkdir -p /srv/node/sdb mkdir -p /srv/node/sdc
mkdir -p /srv/node/sdd
修改如下文件/etc/fstab:
/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2 /dev/sdc /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/dev/sdd /srv/node/sdd xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
掛載盤:
mount /srv/node/sdb mount /srv/node/sdc
mount /srv/node/sdd
修改/etc/rsyncd.conf文件:
uid = swift gid = swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = storage節點用來與外部訪問的地址 [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
建立並重啓服務:
systemctl enable rsyncd.service systemctl start rsyncd.service
以上是針對proxy鏈接組件的安裝配置,接下來是account組件的配置,先安裝組件包:
yum install openstack-swift-account openstack-swift-container openstack-swift-object
修改/etc/swift/account-server.conf文件:
[DEFAULT] ... bind_ip = storage(swift)節點用於外部訪問的鏈接地址 bind_port = 6002 user = swift swift_dir = /etc/swift devices = /srv/node mount_check = True
[pipeline:main] pipeline = healthcheck recon account-server
[filter:recon] use = egg:swift#recon ... recon_cache_path = /var/cache/swift
修改container的配置文件/etc/swift/container-server.conf:
[DEFAULT] ... bind_ip =storage(swift)節點用於外部訪問的鏈接地址
bind_port = 6001
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
[pipeline:main] pipeline = healthcheck recon container-server
[filter:recon] use = egg:swift#recon ... recon_cache_path = /var/cache/swift
修改object配置文件/etc/swift/object-server.conf:
[DEFAULT] ... bind_ip =storage(swift)節點用於外部訪問的鏈接地址
bind_port = 6000
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
[pipeline:main] pipeline = healthcheck recon object-server
[filter:recon] use = egg:swift#recon ... recon_cache_path = /var/cache/swift recon_lock_path = /var/lock
給節點賦予權限
chown -R swift:swift /srv/node
mkdir -p /var/cache/swift
chown -R root:swift /var/cache/swift
chmod -R 775 /var/cache/swift