九、Swift物件存盤服務(雙節點搭建)
要求:Controoler節點需要2塊空盤
Compute節點需要再加2塊空盤

本次搭建采用Controller 和 Compute雙節點節點做swift組件
1.Controller安裝并配置控制節點
2.Compute安裝和配置存盤節點
3.Compute節點安裝并配置組件
4.Controller節點創建,分發并初始化rings
5.啟動服務
6.Controller執行驗證操作
1.Controller安裝并配置控制節點
#### 1.獲得憑證并創建身份認證服務的憑證# . /root/admin-openrc
# openstack user create --domain default --password 000000 swift
# openstack role add --project service --user swift admin
# openstack service create --name swift --description "OpenStack Object Storage" object-store

創建物件存盤服務 API 端點
# 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


3.安裝并配置組件
[root@controller ~]# yum -y install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached xfsprogs rsync openstack-swift-account openstack-swift-container openstack-swift-object
編輯檔案 /etc/swift/proxy-server.conf,洗掉原有內容,直接添加如下內容
# vi /etc/swift/proxy-server.conf
[DEFAULT]
bind_port = 8080
swift_dir = /etc/swift
user = 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: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
user_test5_tester5 = testing5 service
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = swift
password = 000000
delay_auth_decision = True
[filter:keystoneauth]
use = egg:swift#keystoneauth
operator_roles = admin,user
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:cache]
memcache_servers = controller:11211
use = egg:swift#memcache
[filter:ratelimit]
use = egg:swift#ratelimit
[filter:domain_remap]
use = egg:swift#domain_remap
[filter:catch_errors]
use = egg:swift#catch_errors
[filter:cname_lookup]
use = egg:swift#cname_lookup
[filter:staticweb]
use = egg:swift#staticweb
[filter:tempurl]
use = egg:swift#tempurl
[filter:formpost]
use = egg:swift#formpost
[filter:name_check]
use = egg:swift#name_check
[filter:list-endpoints]
use = egg:swift#list_endpoints
[filter:proxy-logging]
use = egg:swift#proxy_logging
[filter:bulk]
use = egg:swift#bulk
[filter:slo]
use = egg:swift#slo
[filter:dlo]
use = egg:swift#dlo
[filter:container-quotas]
use = egg:swift#container_quotas
[filter:account-quotas]
use = egg:swift#account_quotas
[filter:gatekeeper]
use = egg:swift#gatekeeper
[filter:container_sync]
use = egg:swift#container_sync
[filter:xprofile]
use = egg:swift#xprofile
[filter:versioned_writes]
use = egg:swift#versioned_writes
編輯檔案/etc/swift/swift.conf 洗掉原有內容,添加如下內容
# vi /etc/swift/swift.conf
[swift-hash]
swift_hash_path_suffix = changeme
swift_hash_path_prefix = changeme
[storage-policy:0]
name = Policy-0
default = yes
aliases = yellow, orange
[swift-constraints]
查看空盤
lsblk

每個盤劃分一個空白磁區
# fdisk /dev/sdb
# fdisk /dev/sdc


創建掛載目錄
[root@controller ~]# mkdir -p /swift/sdb
[root@controller ~]# mkdir -p /swift/sdc

指定磁區格式

掛載磁區到目錄

添加到/etc/fstab組態檔中
[root@controller ~]# vi /etc/fstab
/dev/sdb1 /swift/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
/dev/sdc1 /swift/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 0

編輯組態檔 /etc/rsyncd.conf
[root@controller ~]# vi /etc/rsyncd.conf

啟動服務
[root@controller ~]# systemctl start rsyncd.service
[root@controller ~]# systemctl enable rsyncd.service

6.賦權:
# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift
# chmod -R 775 /var/cache/swift
# chown -R swift:swift /swift
# chown -R root:swift /etc/swift
編輯三個組態檔account container object
1.編輯 /etc/swift/account-server.conf 檔案,洗掉原有內容,直接添加以下內容
#vi /etc/swift/account-server.conf
[DEFAULT]
bind_ip = 192.168.100.10
bind_port = 6002
user = swift
swift_dir = /etc/swift
devices = /swift
mount_check = false
[pipeline:main]
pipeline = healthcheck recon account-server
[app:account-server]
use = egg:swift#account
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[account-replicator]
[account-auditor]
[account-reaper]
[filter:xprofile]
use = egg:swift#xprofile
2.編輯``/etc/swift/container-server.conf``檔案,洗掉原有內容,直接添加以下內容:
# vi /etc/swift/container-server.conf
[DEFAULT]
bind_ip = 192.168.100.10
bind_port = 6001
user = swift
swift_dir = /etc/swift
devices = /swift
mount_check = false
[pipeline:main]
pipeline = healthcheck recon container-server
[app:container-server]
use = egg:swift#container
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[container-replicator]
[container-updater]
[container-auditor]
[container-sync]
[filter:xprofile]
use = egg:swift#xprofile
3.編輯``/etc/swift/object-server.conf``檔案,洗掉原有內容,直接添加以下內容:
# vi /etc/swift/object-server.conf
[DEFAULT]
bind_ip = 192.168.100.10
bind_port = 6000
user = swift
swift_dir = /etc/swift
devices = /swift
mount_check = false
[pipeline:main]
pipeline = healthcheck recon object-server
[app:object-server]
use = egg:swift#object
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock
[object-replicator]
[object-reconstructor]
[object-updater]
[object-auditor]
[filter:xprofile]
use = egg:swift#xprofile
2.Compute安裝和配置存盤節點
1.安裝軟體包[root@compute ~]# yum -y install xfsprogs rsync openstack-swift-account openstack-swift-container openstack-swift-object
搭建Swift Compute節點需要兩塊空盤,此處我們查看添加的空盤
# lsblk

創建磁區
# fdisk /dev/sdc
# fdisk /dev/sdd


指定檔案格式
# mkfs.xfs /dev/sdc1
# mkfs.xfs /dev/sdd1

3.創建掛載點目錄結構:
[root@compute ~]# mkdir -p /swift/sdc
[root@compute ~]# mkdir -p /swift/sdd

掛載磁區到目錄
[root@compute ~]# mount /dev/sdc1 /swift/sdc/
[root@compute ~]# mount /dev/sdd1 /swift/sdd/

4.編輯/etc/fstab檔案并添加以下內容:
vi /etc/fstab
/dev/sdc1 /swift/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
/dev/sdd1 /swift/sdd xfs noatime,nodiratime,nobarrier,logbufs=8 0 0

5.編輯/etc/rsyncd.conf檔案并添加以下內容:
[root@compute ~]#vi /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = swift
gid = swift
address = 192.168.100.20
[account]
path = /swift
read only = false
write only = no
list = yes
incoming chmod = 0644
outgoing chmod = 0644
max connections = 25
lock file = /var/lock/account.lock
[container]
path = /swift
read only = false
write only = no
list = yes
incoming chmod = 0644
outgoing chmod = 0644
max connections = 25
lock file = /var/lock/container.lock
[object]
path = /swift
read only = false
write only = no
list = yes
incoming chmod = 0644
outgoing chmod = 0644
max connections = 25
lock file = /var/lock/object.lock

6.啟動 “rsyncd” 服務和配置它隨系統啟動:
# systemctl start rsyncd.service
# systemctl enable rsyncd.service
6.賦權:
# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift
# chmod -R 775 /var/cache/swift
# chown -R swift:swift /swift
# chown -R root:swift /etc/swift
編輯組態檔 account container object
1.編輯 /etc/swift/account-server.conf 檔案,洗掉原有內容,直接添加以下內容
#vi /etc/swift/account-server.conf
[DEFAULT]
bind_ip = 192.168.100.20
bind_port = 6002
user = swift
swift_dir = /etc/swift
devices = /swift
mount_check = false
[pipeline:main]
pipeline = healthcheck recon account-server
[app:account-server]
use = egg:swift#account
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[account-replicator]
[account-auditor]
[account-reaper]
[filter:xprofile]
use = egg:swift#xprofile
2.編輯``/etc/swift/container-server.conf``檔案,洗掉原有內容,直接添加以下內容:
# vi /etc/swift/container-server.conf
[DEFAULT]
bind_ip = 192.168.100.20
bind_port = 6001
user = swift
swift_dir = /etc/swift
devices = /swift
mount_check = false
[pipeline:main]
pipeline = healthcheck recon container-server
[app:container-server]
use = egg:swift#container
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[container-replicator]
[container-updater]
[container-auditor]
[container-sync]
[filter:xprofile]
use = egg:swift#xprofile
3.編輯``/etc/swift/object-server.conf``檔案,洗掉原有內容,直接添加以下內容:
# vi /etc/swift/object-server.conf
[DEFAULT]
bind_ip = 192.168.100.20
bind_port = 6000
user = swift
swift_dir = /etc/swift
devices = /swift
mount_check = false
[pipeline:main]
pipeline = healthcheck recon object-server
[app:object-server]
use = egg:swift#object
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock
[object-replicator]
[object-reconstructor]
[object-updater]
[object-auditor]
[filter:xprofile]
use = egg:swift#xprofile
4.編輯檔案/etc/swift/swift.conf 洗掉原有內容,添加如下內容
# vi /etc/swift/swift.conf
[swift-hash]
swift_hash_path_suffix = changeme
swift_hash_path_prefix = changeme
[storage-policy:0]
name = Policy-0
default = yes
aliases = yellow, orange
[swift-constraints]

3.Controller 和 Compute節點安裝并配置組件
4.Controller節點創建,分發并初始化rings
1.創建賬戶ring
1.切換到 ``/etc/swift``目錄,創建基本 account.builder 檔案:
# cd /etc/swift
# swift-ring-builder account.builder create 18 1 1
2.添加每個節點到 ring 中:
# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6002 --device sdc1 --weight 100
# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6002 --device sdd1 --weight 100
# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6002 --device sdc1 --weight 100
# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6002 --device sdb1 --weight 100
2.驗證ring內容
# swift-ring-builder account.builder
3.平衡ring
# swift-ring-builder account.builder rebalance

2.創建ring容器
1.切換到 ``/etc/swift``目錄,創建基本``container.builder``檔案:
# cd /etc/swift
# swift-ring-builder container.builder create 10 1 1
2.添加每個節點到 ring 中:
# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6001 --device sdc1 --weight 100
# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6001 --device sdd1 --weight 100
# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6001 --device sdc1 --weight 100
# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6001 --device sdb1 --weight 100
3.驗證 ring 的內容:
# swift-ring-builder container.builder
4.平衡 ring:
# swift-ring-builder container.builder rebalance

3.創建Ring物件
1.切換到 ``/etc/swift``目錄,創建基本``object.builder``檔案:
# swift-ring-builder object.builder create 10 1 1
2.添加每個節點到 ring 中:
# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6000 --device sdc1 --weight 100
# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6000 --device sdd1 --weight 100
# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6000 --device sdc1 --weight 100
# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6000 --device sdb1 --weight 100
3.驗證 ring 的內容:
# swift-ring-builder object.builder
4.平衡 ring:
# swift-ring-builder object.builder rebalance

4.Compute節點復制Controller的組態檔
復制``account.ring.gz``,container.ring.gz``和``object.ring.gz 檔案到每個存盤節點和其他運行了代理服務的額外節點的 /etc/swift 目錄,
[root@compute ~]# scp controller:/etc/swift/*.ring.gz /etc/swift/

5.啟動服務
#### 1.在控制節點``Controller``上,啟動物件存盤代理服務及其依賴服務,并將它們配置為隨系統啟動:# systemctl start openstack-swift-proxy.service memcached.service
# systemctl enable openstack-swift-proxy.service memcached.service

2.在存盤節點Controller 和 Compute 兩個節點上,啟動物件存盤服務,并將其設定為隨系統啟動
兩個節點均需操作
# systemctl start openstack-swift-account.service openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.service
# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.service
# systemctl start openstack-swift-container.service openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service
# systemctl enable openstack-swift-container.service openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service
# systemctl start openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service
# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service
6.Controller執行驗證操作
#### 1.匯入demo憑證# . /root/admin-openrc
2. 顯示服務狀態:
# swift stat

3.創建容器 container1
# openstack container create container1

4.上傳一個測驗檔案到container1容器
# openstack object create container1 /root/demo-openrc

5.列出container1容器里的所有檔案
# openstack object list container1

6.從container1容器里下載一個測驗檔案
# openstack object save container1 /root/demo-openrc

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/51597.html
標籤:其他
