1. 程式人生 > >OpenStack雙節點部署—M Swift(物件儲存服務)

OpenStack雙節點部署—M Swift(物件儲存服務)

Swift安裝

一、 環境配置

Controller節點

1.建立服務認證

# . admin-openrc
# openstack user create --domain default --password-prompt swift
# openstack role add --project service --user swift admin
# openstack service create --name swift --description "OpenStack Object Storage" object-store

在這裡插入圖片描述
2.建立服務端點

# openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(tenant_id\)s
# openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1/AUTH_%\(tenant_id\)s
# openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(tenant_id\)s

在這裡插入圖片描述

二、控制節點安裝並配置Swift

Controller節點

1.安裝Swift軟體包

# yum install -y openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached

2.獲取代理服務配置檔案
注:Mitaka.iso映象裡面有該檔案,你也可以通過命令下載到/etc/swift/目錄下

# curl -o /etc/swift/proxy-server.conf  \
       https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=mitaka-eol


或者通過https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=mitaka-eol連結下載至物理機,再上傳至controller節點

# find / -name proxy-server.conf
/etc/swift/proxy-server.conf
/opt/mitaka/swift/proxy-server.conf
# cp -rvf /opt/mitaka/swift/proxy-server.conf /etc/swift/
cp: overwrite ‘/etc/swift/proxy-server.conf’? y
‘/opt/mitaka/swift/proxy-server.conf’ -> ‘/etc/swift/proxy-server.conf’

在這裡插入圖片描述
3.編輯並配置Swift

# vi /etc/swift/proxy-server
[DEFAULT]
bind_port = 8080
swift_dir = /etc/swift
user = swift

[pipeline:main]部分,刪除’tempurl’和’tempauth’模組,並增加’authtoken’和’keystoneauth’模組
[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
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = swift
password = 123456
delay_auth_decision = True

[filter:cache]
use = egg:swift#memcache
memcache_servers = controller:11211

三、儲存節點安裝並配置Swift


1)先新增兩塊虛擬硬碟(不會新增點這,第四小部分有講解)
https://blog.csdn.net/qq_40791253/article/details/83660338
2) 由於swift需要兩個儲存節點,而我們只有兩臺虛擬機器,所以把Controller和Compute節點當作儲存節點進行配置

Controller節點

1.環境配置

# yum install -y xfsprogs rsync
# ls /dev/sd*    (檢視新增的磁碟)
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc
# mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc
# mkdir -p /srv/node/sdb
# mkdir -p /srv/node/sdc

在這裡插入圖片描述
2.編輯/etc/fstab配置檔案,在末尾新增如下內容,設定開機自動掛載

# vi /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

# mount /srv/node/sdb
# mount /srv/node/sdc
# df -hT

在這裡插入圖片描述
3.編輯/etc/rsyncd.conf檔案

# vi /etc/rsyncd.conf
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 192.168.100.10

[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   (若啟動失敗,重啟一下就OK了)

Compute節點

1.環境配置

# yum install -y xfsprogs rsync
# ls /dev/sd*    (檢視新增的磁碟)
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc
# mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc
# mkdir -p /srv/node/sdb
# mkdir -p /srv/node/sdc

在這裡插入圖片描述
2.編輯/etc/fstab配置檔案,在末尾新增如下內容,設定開機自動掛載

# vi /etc/fstab
/dev/sdc /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/dev/sdd /srv/node/sdc xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

# mount /srv/node/sdc
# mount /srv/node/sdd
# df -hT

在這裡插入圖片描述
3.編輯/etc/rsyncd.conf檔案

# vi /etc/rsyncd.conf
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 192.168.100.20   (儲存節點管理IP)

[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   

1.安裝並配置

Controller節點

1)安裝軟體包

# yum install -y openstack-swift-account openstack-swift-container openstack-swift-object

2)獲取accounting、container、object服務配置檔案
注:Mitaka.iso檔案自帶配置檔案,也可通過命令的方式聯網下載

# curl -o /etc/swift/account-server.conf  \
https://git.openstack.org/cgit/openstack/swift/plain/etc/account-server.conf-sample?h=mitaka-eol
# curl -o /etc/swift/container-server.conf  \
https://git.openstack.org/cgit/openstack/swift/plain/etc/container-server.conf-sample?h=mitaka-eol
# curl -o /etc/swift/object-server.conf  \
https://git.openstack.org/cgit/openstack/swift/plain/etc/object-server.conf-sample?h=mitaka-eol

在這裡插入圖片描述
3) 編輯accounting、container、object服務配置檔案

編輯/etc/swift/account-server.conf檔案

# vi /etc/swift/account-server.conf
[DEFAULT]
bind_ip = 192.168.100.10  (儲存節點管理IP:192.168.100.10、192.168.100.20)
bind_port = 6002
# bind_timeout = 30
# backlog = 4096
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

編輯/etc/swift/container-server.conf檔案

# vi /etc/swift/container-server.conf
[DEFAULT]
bind_ip = 192.168.100.10    (儲存節點管理IP:192.168.100.10、192.168.100.20)
bind_port = 6001
# bind_timeout = 30
# backlog = 4096
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

編輯/etc/swift/object-server.conf檔案

# vi /etc/swift/object-server.conf
[DEFAULT]
bind_ip = 192.168.100.10    (儲存節點管理IP:192.168.100.10、192.168.100.20)
bind_port = 6000
# bind_timeout = 30
# backlog = 4096
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

4)修改掛載目錄許可權

# chown -R swift:swift /srv/node/
# ls -l /srv/
total 0
drwxr-xr-x. 4 swift swift 26 Nov  2 11:27 node
# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift/
# chown -R 775 /var/cache/swift/

5)將配置檔案拷貝至compute節點的/root目錄

# scp /etc/swift/account-server.conf /etc/swift/container-server.conf /etc/swift/object-server.conf [email protected]:/root
The authenticity of host 'compute (192.168.100.20)' can't be established.
ECDSA key fingerprint is fc:c6:ce:fa:d7:95:90:b9:38:cf:96:61:a3:75:52:e7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'compute,192.168.100.20' (ECDSA) to the list of known hosts.
[email protected]'s password: 
account-server.conf                                                                                                       100% 6633     6.5KB/s   00:00    
container-server.conf                                                                                                     100% 7492     7.3KB/s   00:00    
object-server.conf                                                                                                        100%   12KB  12.0KB/s   00:00   

Compute節點

1)安裝軟體包

# yum install -y openstack-swift-account openstack-swift-container openstack-swift-object

2)編輯accounting、container、object服務配置檔案

# cp -rvf account-server.conf /etc/swift/
# cp -rvf container-server.conf /etc/swift/
# cp -rvf object-server.conf /etc/swift/

在這裡插入圖片描述

# vi /etc/swift/account-server.conf
[DEFAULT]
bind_ip = 192.168.100.20

# vi /etc/swift/container-server.conf 
[DEFAULT]
bind_ip = 192.168.100.20

# vi /etc/swift/object-server.conf 
[DEFAULT]
bind_ip = 192.168.100.20

3)修改掛載點目錄許可權

# chown -R swift:swift /srv/node/
# ls -l /srv/
total 0
drwxr-xr-x. 4 swift swift 26 Nov  4 14:35 node
# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift/
# chown -R 775 /var/cache/swift/

四、建立並分發Ring

Controller節點

1.建立賬戶Ring
1)建立account.builder檔案

# cd /etc/swift/
# swift-ring-builder account.builder create 10 2 1

2)新增所有儲存節點到Ring中

# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6002 --device sdc --weight 100
# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6002 --device sdd --weight 100
# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6002 --device sdc --weight 100
# swift-ring-builder account.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6002 --device sdb --weight 100
# swift-ring-builder account.builder
# swift-ring-builder account.builder rebalance

在這裡插入圖片描述
2.建立容器Ring
1)建立account.builder檔案

# cd /etc/swift/
# swift-ring-builder container.builder create 10 2 1

2)新增所有儲存節點到Ring中

# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6001 --device sdb --weight 100
# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6001 --device sdc --weight 100
# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6001 --device sdc --weight 100
# swift-ring-builder container.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6001 --device sdd --weight 100
# swift-ring-builder container.builder
# swift-ring-builder container.builder rebalance

在這裡插入圖片描述
2.建立物件Ring
1)建立account.builder檔案

# cd /etc/swift/
# swift-ring-builder object.builder create 10 2 1

2)新增所有儲存節點到Ring中

# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6000 --device sdb --weight 100
# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.10 --port 6000 --device sdc --weight 100
# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6000 --device sdc --weight 100
# swift-ring-builder object.builder add --region 1 --zone 1 --ip 192.168.100.20 --port 6000 --device sdd --weight 100
# swift-ring-builder object.builder
# swift-ring-builder object.builder rebalance

在這裡插入圖片描述

五、完成安裝

# scp /etc/swift/*.gz 192.168.100.20:/etc/swift/
# ls /opt/mitaka/swift/
# cp -rvf /opt/mitaka/swift/swift.conf /etc/swift/

在這裡插入圖片描述
:也可以通過命令下載配置檔案

# curl -o /etc/swift/swift.conf  \
  https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=mitaka-eol

1.編輯/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

# scp /etc/swift/swift.conf 192.168.100.20:/etc/swift/

2.啟動Swift服務並設定開機自啟

Controller節點

# chown -R root:swift /etc/swift
# systemctl enable openstack-swift-proxy.service memcached.service
# systemctl start openstack-swift-proxy.service memcached.service

Controller、Compute節點

# chown -R root:swift /etc/swift
# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service \
   openstack-swift-account-reaper.service openstack-swift-account-replicator.service

# systemctl enable openstack-swift-container.service \
   openstack-swift-container-auditor.service openstack-swift-container-replicator.service \
   openstack-swift-container-updater.service

# systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service \
   openstack-swift-object-replicator.service openstack-swift-object-updater.service

# systemctl start 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 start openstack-swift-object.service openstack-swift-object-auditor.service \
   openstack-swift-object-replicator.service openstack-swift-object-updater.service

六、驗證swift操作

Controller節點

# . /root/admin-openrc
# swift stat
# openstack container create container_hang
# touch file_test
# openstack object create container_hang file_test
# openstack object list container_hang
# openstack object save container_hang file_test

在這裡插入圖片描述