一、安裝和配置對(duì)象存儲(chǔ)服務(wù)Swift
在控制節(jié)點(diǎn)完成
1. 創(chuàng)建Swift的身份認(rèn)證證書(shū)
- 加載admin客戶端腳本:
source admin-openrc.sh
- 創(chuàng)建swift用戶:
openstack user create --password-prompt swift
- 將admin角色添加給swift用戶:
openstack role add --project service --user swift admin
2. 創(chuàng)建Swift的服務(wù)實(shí)體
- 創(chuàng)建swift的服務(wù)實(shí)體:
openstack service create --name swift --description "OpenStack Object Storage" object-store
3. 創(chuàng)建Swift的API端點(diǎn)
- 創(chuàng)建swift的API endpoint:
openstack endpoint create --publicurl 'http://controller:8080/v1/AUTH_%(tenant_id)s' --internalurl 'http://controller:8080/v1/AUTH_%(tenant_id)s' --adminurl 'http://controller:8080' --region RegionOne object-store
二、在控制節(jié)點(diǎn)上安裝和配置Swift
1. 安裝Swift
- 安裝Swift:
apt-get install swift swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached
2. 配置Swift
- 創(chuàng)建/etc/swift目錄:
mkdir /etc/swift
- 進(jìn)入該目錄:
cd /etc/swift
- 從對(duì)象存儲(chǔ)服務(wù)源庫(kù)獲取代理服務(wù)配置文件:
curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/kilo
- 編輯文件:/etc/swift/proxy-server.conf
- 修改[DEFAULT]部分,配置綁定端口,用戶和配置文件存放的路徑:
bind_port = 8080 user = swift swift_dir = /etc/swift
- 在[pipeline:main]部分,啟用相應(yīng)的模塊:
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo proxy-logging proxy-server
- 在[app:proxy-server]部分,啟用賬戶自動(dòng)創(chuàng)建的功能:
account_autocreate = true
- 在[filter:keystoneauth]部分,配置操作的角色
use = egg:swift#keystoneauth operator_roles = admin,user
- 在[filter:authtoken]部分,配置身份認(rèn)證服務(wù)的訪問(wèn),注意要注釋掉其他的內(nèi)容:
paste.filter_factory = keystonemiddleware.auth_token:filter_factory auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = swift password = SWIFT_PASS delay_auth_decision = true
- 在[filter:cache]部分,配置memcached位置:
memcache_servers = 127.0.0.1:11211
三、在對(duì)象存儲(chǔ)節(jié)點(diǎn)上安裝和配置Swift
1. 配置對(duì)象存儲(chǔ)的操作系統(tǒng)環(huán)境
配置管理接口:待補(bǔ)充...........................................
配置主機(jī)名:待補(bǔ)充...........................................
將兩臺(tái)主機(jī)的/etc/hosts內(nèi)容同步到其他所有節(jié)點(diǎn):
為兩臺(tái)主機(jī)分別添加新的磁盤(pán),并創(chuàng)建分區(qū):
fdisk /dev/sdb
fdisk /dev/sdc
在兩個(gè)節(jié)點(diǎn)上分別安裝工具包:
apt-get install xfsprogs rsync
格式化/dev/sdb1和/dev/sdc1位XFS:
mkfs.xfs /dev/sdb1
mkfs.xfs /dev/sdc1
創(chuàng)建目錄掛載點(diǎn):
mkdir -p /srv/node/sdb1
mkdir -p /srv/node/sdc1
編輯/etc/fstab,添加這兩個(gè)內(nèi)容:
/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/dev/sdc1 /srv/node/sdc1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
掛載設(shè)備:
mount /srv/node/sdb1
mount /srv/node/sdc1
-
編輯/etc/rsyncd.conf,添加如下內(nèi)容:
uid = swift gid = swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = MANAGEMENT_INTERFACE_IP_ADDRESS [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
-
編輯/etc/default/rsync文件,,添加下面內(nèi)容,啟用rsync服務(wù):
RSYNC_ENABLE=true
啟動(dòng)rsync服務(wù):
service rsync start
2. 安裝Swift(在兩個(gè)對(duì)象存儲(chǔ)節(jié)點(diǎn)上安裝)
- 安裝Swift:
apt-get install swift swift-account swift-container swift-object
3. 獲取Swift的配置文件
獲取accounting, container, object, container-reconciler和object-expirer service服務(wù)的配置文件
curl -o /etc/swift/account-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=stable/kilo
curl -o /etc/swift/container-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=stable/kilo
curl -o /etc/swift/object-expirer.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-expirer.conf-sample?h=stable/kilo
curl -o /etc/swift/object-expirer.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-expirer.conf-sample?h=stable/kilo
curl -o /etc/swift/object-expirer.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/object-expirer.conf-sample?h=stable/kilo
-
編輯配置文件/etc/swift/account-server.conf:
在[DEFAULT]部分,配置綁定ip地址,端口,用戶,配置文件路徑,和掛載點(diǎn)的路徑:bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS bind_port = 6002 user = swift swift_dir = /etc/swift devices = /srv/node
在[pipeline:main]部分,啟用appropriate模塊:
pipeline = healthcheck recon account-server
在[filter:recon]部分,配置緩存目錄:
recon_cache_path = /var/cache/swift
-
編輯配置文件/etc/swift/container-server.conf:
在[DEFAULT]部分,配置綁定ip地址,端口,用戶,配置文件路徑,和掛載點(diǎn)的路徑:bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS bind_port = 6001 user = swift swift_dir = /etc/swift devices = /srv/node
在[pipeline:main]部分,啟用appropriate模塊:
pipeline = healthcheck recon container-server
在[filter:recon]部分,配置緩存目錄:
recon_cache_path = /var/cache/swift
-
編輯配置文件/etc/swift/object-server.conf:
在[DEFAULT]部分,配置綁定ip地址,端口,用戶,配置文件路徑,和掛載點(diǎn)的路徑:bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS bind_port = 6001 user = swift swift_dir = /etc/swift devices = /srv/node
在[pipeline:main]部分,啟用appropriate模塊:
pipeline = healthcheck recon object-server
在[filter:recon]部分,配置緩存目錄和lock目錄:
recon_cache_path = /var/cache/swift recon_lock_path = /var/lock
修改掛載點(diǎn)的權(quán)限:
chown -R swift:swift /srv/node
創(chuàng)建recon目錄,并修改目錄權(quán)限:
mkdir -p /var/cache/swift
chown -R swift:swift /var/cache/swift
四、創(chuàng)建初始的rings
1. 創(chuàng)建Account ring(在控制節(jié)點(diǎn)上)
- 進(jìn)入/etc/swift目錄:
cd /etc/swift
- 創(chuàng)建基本的account.builder文件:
swift-ring-builder account.builder create 10 3 1
- 添加所有的存儲(chǔ)節(jié)點(diǎn)到ring中:
swift-ring-builder account.builder add r1z1-10.0.0.51:6002/sdb1 100
swift-ring-builder account.builder add r1z2-10.0.0.51:6002/sdc1 100
swift-ring-builder account.builder add r1z3-10.0.0.52:6002/sdb1 100
swift-ring-builder account.builder add r1z4-10.0.0.52:6002/sdc1 100
2. 校驗(yàn)Account ring
- 校驗(yàn)Account ring的內(nèi)容:
swift-ring-builder account.builder
- 重新分布ring:
swift-ring-builder account.builder rebalance
3. 創(chuàng)建Container ring(在控制節(jié)點(diǎn)上)
- 進(jìn)入/etc/swift目錄:
cd /etc/swift
- 創(chuàng)建基本的container.builder文件:
swift-ring-builder container.builder create 10 3 1
- 添加所有的存儲(chǔ)節(jié)點(diǎn)到ring中:
swift-ring-builder container.builder add r1z1-10.0.0.51:6001/sdb1 100
swift-ring-builder container.builder add r1z2-10.0.0.51:6001/sdc1 100
swift-ring-builder container.builder add r1z3-10.0.0.52:6001/sdb1 100
swift-ring-builder container.builder add r1z4-10.0.0.52:6001/sdc1 100
4. 校驗(yàn)Container ring
- 校驗(yàn)Container ring的內(nèi)容:
swift-ring-builder container.builder
- 重新分布ring:
swift-ring-builder container.builder rebalance
5. 創(chuàng)建Object ring(在控制節(jié)點(diǎn)上)
- 進(jìn)入/etc/swift目錄:
cd /etc/swift
- 創(chuàng)建基本的object.builder文件:
swift-ring-builder object.builder create 10 3 1
- 添加所有的存儲(chǔ)節(jié)點(diǎn)到ring中:
swift-ring-builder object.builder add r1z1-10.0.0.51:6000/sdb1 100
swift-ring-builder object.builder add r1z2-10.0.0.51:6000/sdc1 100
swift-ring-builder object.builder add r1z3-10.0.0.52:6000/sdb1 100
swift-ring-builder object.builder add r1z4-10.0.0.52:6000/sdc1 100
6. 校驗(yàn)Object ring
- 校驗(yàn)Object ring的內(nèi)容:
swift-ring-builder object.builder
- 重新分布ring:
swift-ring-builder object.builder rebalance
7. 分發(fā)配置文件
如果有其他的對(duì)象存儲(chǔ)節(jié)點(diǎn),請(qǐng)將account.ring.gz, container.ring.gz和object.ring.gz三個(gè)文件拷貝到其他節(jié)點(diǎn)的/etc/swift目錄
8. 完成安裝
從對(duì)象存儲(chǔ)資源庫(kù)中獲取/etc/swift/swift.conf文件:
curl -o /etc/swift/swift.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/kilo
-
編輯/etc/swift/swift.conf文件:
在[swift-hash]部分,為環(huán)境配置哈希路徑的前綴和后綴:swift_hash_path_suffix = HASH_PATH_PREFIX(改成唯一值) swift_hash_path_prefix = HASH_PATH_SUFFIX(改成唯一值)
在[storage-policy:0] 部分,配置默認(rèn)存儲(chǔ)策略:
name = Policy-0 default = yes
-
復(fù)制文件swift.conf到每個(gè)存儲(chǔ)節(jié)點(diǎn)響應(yīng)的/etc/swift目錄下:
scp swift.conf aboutyun@10.0.0.51:~/ scp swift.conf aboutyun@10.0.0.52:~/ sudo cp swift.conf /etc/swift
在所有的存儲(chǔ)節(jié)點(diǎn)上,設(shè)置目錄的權(quán)限:
chown -R swift:swift /etc/swift
在控制節(jié)點(diǎn)和其他存儲(chǔ)節(jié)點(diǎn)上重啟服務(wù):
service memcached restart
service swift-proxy restart
在所有的存儲(chǔ)節(jié)點(diǎn)上重啟服務(wù):
swift-init all start
五、校驗(yàn)Swift的安裝(在控制節(jié)點(diǎn)上)
- 檢查對(duì)象存儲(chǔ)服務(wù)啟動(dòng)的服務(wù)組件:
swift -V 3 stat
- 上傳一個(gè)測(cè)試文件:
swift -V 3 upload demo-container1 FILE
- 查看容器:
swift -V 3 list
- 下載測(cè)試文件:
swift -V 3 download demo-container1 FILE