Openstack Mitaka安裝手順(9)對象存儲服務

九、對象存儲服務node

9.一、安裝並配置控制器節點python

9.1.一、建立服務憑證和API端點git

9.1.1.一、得到 admin 憑證來獲取只有管理員能執行的命令的訪問權限:swift

$ . admin-openrc緩存

9.1.1.二、要建立身份認證服務的憑證,完成這些步驟:安全

建立 swift 用戶:服務器

$ openstack user create --domain default --password-prompt swift網絡

設置密碼:P@ssw0rd架構


給 swift 用戶添加 admin 角色:app

$ openstack role add --project service --user swift admin

註解:這個命令執行後沒有輸出。


建立 swift 服務條目:

$ openstack service create --name swift --description "OpenStack Object Storage" object-store

image.png


9.1.1.三、建立對象存儲服務 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


控制節點防火牆開放端口:8080

# firewall-cmd --permanent --add-port=8080/tcp

# firewall-cmd --reload


確認端口開放成功

# firewall-cmd --list-all


9.1.二、安全並配置組件

9.1.2.一、安裝軟件包:

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


9.1.2.二、從對象存儲的倉庫源中獲取代理服務的配置文件:

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

註解:本次沒有下載到這個文件,就用安裝後的默認配置文件進行配置了。


9.1.2.三、編輯文件 vi /etc/swift/proxy-server.conf 並完成以下動做:

在 [DEFAULT] 部分,配置綁定端口,用戶和配置目錄。

bind_port = 8080

user = swift

swift_dir = /etc/swift

image.png

註解:默認有配置,只增長了swift_dir這一行


在``[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

以上內容爲官方文檔配置,通過本次實測,多是沒有下載配置文件而是使用默認配置的緣由,也多是安裝組件不全的緣由,按照上面配置始終服務沒法啓動,而且報錯!

通過查看/var/log/messages內容發現以下報錯(注意紅框內容):

image.png


通過比對是versioned_writes沒有找到,多是沒有安裝,也多是模塊順序不對。由於是第一次部署,因此很粗暴的把這個模塊從配置去掉,而後再次重啓服務。

可是再次報錯了,再次有新的模塊未找到,而後繼續刪減模塊,最終配置以下圖所示:

image.png

註解:註釋掉默認配置,同時不要改變配置中的模塊順序。


在 [app:proxy-server] 部分,啓動自動帳戶建立。

[app:proxy-server]

use = egg:swift#proxy

account_autocreate = True

image.png

註解:默認已存在


在 [filter:keystoneauth] 部分,配置操做員角色。

[filter:keystoneauth]

use = egg:swift#keystoneauth

operator_roles = admin,user

image.png

註解:本部分爲新增,和上面的[filter:keystone]配置有重合部分,暫時不清楚關係就新增了。


在 [filter:authtoken] 部分,配置認證服務訪問。

[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 = P@ssw0rd

delay_auth_decision = True

image.png

註解:註釋或者刪除掉在 [filter:authtoken] 部分的全部其餘的內容。


在 [filter:cache] 部分,配置 memcached 的位置:

[filter:cache]

use = egg:swift#memcache

memcache_servers = controller:11211

image.png

註解:默認有一個相同配置註釋掉


9.二、安裝和配置存儲節點

本章節描述怎樣爲操做賬號,容器和對象服務安裝和配置存儲節點。

環境所限,這裏配置一個存儲節點(就是計算節點),包含三個空本地塊存儲設備。這個嚮導用的是 /dev/sdc、 /dev/sdd、/dev/sde

9.2.一、先決條件

9.2.1.一、安裝支持的工具包:

# yum install -y xfsprogs rsync


9.2.1.二、使用XFS格式化三個設備:

# mkfs.xfs /dev/sdc

# mkfs.xfs /dev/sdd

# mkfs.xfs /dev/sde


9.2.1.三、建立掛載點目錄結構:

# mkdir -p /srv/node/sdc

# mkdir -p /srv/node/sdd

# mkdir -p /srv/node/sde


9.2.1.四、編輯``/etc/fstab``文件並添加如下內容:

/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

/dev/sde /srv/node/sde xfs noatime,nodiratime,nobarrier,logbufs=8 0 2

image.png


9.2.1.五、掛載設備:

# mount /srv/node/sdc

# mount /srv/node/sdd

# mount /srv/node/sde

image.png


9.2.1.六、建立並編輯 vi /etc/rsyncd.conf 文件幷包含如下內容:

uid = swift

gid = swift

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

address = 111.111.111.202


[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


address爲存儲節點管理網絡的IP地址。

 

註解:``rsync``服務不須要認證,因此考慮將它安裝在私有網絡的環境中

9.2.1.七、啓動 「rsyncd」 服務和配置它隨系統啓動:

# systemctl enable rsyncd

# systemctl start rsyncd

# systemctl status rsyncd


9.2.二、安全並配置組件

註解:在每一個存儲節點上執行這些步驟。


9.2.2.一、安裝軟件包:

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


9.2.2.二、從對象存儲源倉庫中獲取accounting, container以及object服務配置文件

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

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

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

本次操做未從網上下載配置文件,使用默認配置文件。


9.2.2.三、編輯 vi /etc/swift/account-server.conf 文件並完成下面操做:

在``[DEFAULT]`` 部分,配置綁定IP地址,綁定端口,用戶,配置目錄和掛載目錄:

bind_ip = 111.111.111.202

bind_port = 6002

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = True

image.png

bind_ip爲存儲節點管理網絡的IP地址。


在 [pipeline:main] 部分,啓用合適的模塊:

[pipeline:main]

pipeline = healthcheck recon account-server


上面爲官方文檔配置,也是啓動服務報錯有模塊找不到,刪除healthcheck模塊後就啓動成功了,配置以下圖所示:

[pipeline:main]

pipeline = recon account-server

image.png


在 [filter:recon] 部分,配置recon (meters)緩存目錄:

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift



9.2.2.四、編輯 vi /etc/swift/container-server.conf 文件並完成下列操做:

在``[DEFAULT]`` 部分,配置綁定IP地址,綁定端口,用戶,配置目錄和掛載目錄:

bind_ip = 111.111.111.202

bind_port = 6001

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = True

image.png

bind_ip爲存儲節點管理網絡的IP地址。


在 [pipeline:main] 部分,啓用合適的模塊:

[pipeline:main]

pipeline = healthcheck recon container-server


上面爲官方文檔配置,也是啓動服務報錯有模塊找不到,刪除healthcheck模塊後就啓動成功了,配置以下圖所示:

[pipeline:main]

pipeline = recon container-server


在 [filter:recon] 部分,配置recon (meters)緩存目錄:

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift


9.2.2.五、編輯 vi /etc/swift/object-server.conf 文件並完成下列操做:

在 [DEFAULT] 部分,配置綁定IP地址,綁定端口,用戶,配置目錄和掛載目錄:

bind_ip = 111.111.111.202

bind_port = 6000

user = swift

swift_dir = /etc/swift

devices = /srv/node

mount_check = True

image.png

bind_ip爲存儲節點管理網絡的IP地址。


在 [pipeline:main] 部分,啓用合適的模塊:

[pipeline:main]

pipeline = healthcheck recon object-server


上面爲官方文檔配置,也是啓動服務報錯有模塊找不到,刪除healthcheck模塊後就啓動成功了,配置以下圖所示:

[pipeline:main]

pipeline = recon object-server

image.png


在 [filter:recon] 部分,配置recon(meters)緩存和lock目錄:

[filter:recon]

use = egg:swift#recon

recon_cache_path = /var/cache/swift

recon_lock_path = /var/lock


9.2.2.六、確認掛載點目錄結構是否有合適的全部權:

# chown -R swift:swift /srv/node


9.2.2.七、建立 「recon」 目錄和確保它有合適的全部權:

# mkdir -p /var/cache/swift

# chown -R root:swift /var/cache/swift

# chmod -R 775 /var/cache/swift


計算節點防火牆開放端口:6000、600一、6002

firewall-cmd --permanent --add-port=6000/tcp

firewall-cmd --permanent --add-port=6001/tcp

firewall-cmd --permanent --add-port=6002/tcp

firewall-cmd --reload


確認端口開放成功

# firewall-cmd --list-all

***********************************分割線***********************************

報錯排錯:

報錯一:

image.png

image.png

image.png


這三個服務所有有報錯:

openstack-swift-account-replicator      Can't find itself 127.0.0.1 with port 6202 in ring file, not replicating

openstack-swift-container-replicator    Can't find itself 127.0.0.1 with port 6201 in ring file, not replicating

openstack-swift-object-replicator        Can't find itself 127.0.0.1 with port 6200 in ring file, not replicating


通過排錯:

分別將三個配置文件/etc/swift/account-server.conf、/etc/swift/container-server.conf、/etc/swift/object-server.con中的

默認bind_ip = 127.0.0.1 bind_port = 620二、默認bind_ip = 127.0.0.1 bind_port = 620一、默認bind_ip = 127.0.0.1 bind_port = 6200

這個配置註釋掉,而後重啓三個服務就能夠了。以下圖所示是吧account-server.conf 的示例:

image.png


報錯二:

image.png

上面這個報錯從內容看是sde這塊盤存在問題,立刻想起來本次計算節點開始只准備了2塊虛擬硬盤作對象存儲,可是後來報錯顯示須要2塊以上,因此臨時加了一塊虛擬硬盤就是sde。

而後全部配置都作了,就是漏了 9.2.2.6 這一步沒作:chown -R swift:swift /srv/node,通過查看以下圖所示權限缺失:

image.png

從新執行chown -R swift:swift /srv/node便可:

image.png

最後記得重啓openstack-swift-object-replicator服務:

image.png

***********************************分割線***********************************


9.三、建立,分發並初始化rings

註解:在控制節點上執行這些步驟。

9.3.一、建立帳戶ring

賬戶服務器使用賬戶 ring 來維護一個容器的列表。

9.3.1.一、切換到 /etc/swift 目錄。


9.3.1.二、建立基本 account.builder 文件:

# swift-ring-builder account.builder create 10 3 1

image.png

註解:這個命令執行後沒有輸出。


9.3.1.三、添加每一個節點到 ring 中:

# swift-ring-builder account.builder \

  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6002 \

  --device DEVICE_NAME --weight DEVICE_WEIGHT


將 STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替換爲存儲節點管理網絡的IP地址。將 DEVICE_NAME``替換爲同一個存儲節點存儲設備名稱。例如,使用 :ref:`swift-storage` 中的第一個存儲節點的 ``/dev/sdb 存儲設備,大小爲100:

# swift-ring-builder account.builder add \

  --region 1 --zone 1 --ip 10.0.0.51 --port 6002 --device sdb --weight 100


在每一個存儲節點上面重複執行這個命令。在這個例子的架構中,使用該命令的三個變量:

# swift-ring-builder account.builder add \

  --region 1 --zone 1 --ip 111.111.111.202 --port 6002 --device sdc --weight 100

 

# swift-ring-builder account.builder add \

  --region 1 --zone 2 --ip 111.111.111.202 --port 6002 --device sdd --weight 100


# swift-ring-builder account.builder add \

  --region 1 --zone 3 --ip 111.111.111.202 --port 6002 --device sde --weight 100

image.png

注意:本次操做是在控制節點和存儲節點上都執行了!!!!! 


9.3.1.四、驗證 ring 的內容:

# swift-ring-builder account.builder

image.png


9.3.1.五、平衡 ring:

# swift-ring-builder account.builder rebalance

image.png


9.3.二、建立容器ring

容器服務器使用容器環來維護對象的列表。可是,它不跟蹤對象的位置。

9.3.2.一、切換到 /etc/swift``目錄。

9.3.2.二、建立基本``container.builder``文件:

# swift-ring-builder container.builder create 10 3 1

image.png

註解:這個命令執行後沒有輸出。


9.3.2.三、添加每一個節點到 ring 中:

# swift-ring-builder container.builder \

  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6001 \

  --device DEVICE_NAME --weight DEVICE_WEIGHT


將 STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替換爲存儲節點管理網絡的IP地址。將 DEVICE_NAME``替換爲同一個存儲節點存儲設備名稱。例如,使用 :ref:`swift-storage` 中的第一個存儲節點的 ``/dev/sdb 存儲設備,大小爲100:

# swift-ring-builder container.builder add \

  --region 1 --zone 1 --ip 10.0.0.51 --port 6001 --device sdb --weight 100


在每一個存儲節點上面重複執行這個命令。在這個例子的架構中,使用該命令的三個變量:

# swift-ring-builder container.builder add \

  --region 1 --zone 1 --ip 111.111.111.202 --port 6001 --device sdc --weight 100

 

# swift-ring-builder container.builder add \

  --region 1 --zone 2 --ip 111.111.111.202 --port 6001 --device sdd --weight 100

 

# swift-ring-builder container.builder add \

  --region 1 --zone 3 --ip 111.111.111.202 --port 6001 --device sde --weight 100

image.png


9.3.2.四、驗證 ring 的內容:

# swift-ring-builder container.builder

image.png


9.3.2.五、平衡 ring:

# swift-ring-builder container.builder rebalance

image.png


9.3.三、建立對象ring

對象服務器使用對象環來維護對象在本地設備上的位置列表。


9.3.3.一、切換到 ``/etc/swift``目錄。


9.3.3.二、建立基本``object.builder``文件:

# swift-ring-builder object.builder create 10 3 1

註解:這個命令執行後沒有輸出。


9.3.3.三、添加每一個節點到 ring 中:

# swift-ring-builder object.builder \

  add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6000 \

  --device DEVICE_NAME --weight DEVICE_WEIGHT


將 STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替換爲存儲節點管理網絡的IP地址。將 DEVICE_NAME``替換爲同一個存儲節點存儲設備名稱。例如,使用 :ref:`swift-storage` 中的第一個存儲節點的 ``/dev/sdb 存儲設備,大小爲100:

# swift-ring-builder object.builder add \

  --region 1 --zone 1 --ip 10.0.0.51 --port 6000 --device sdb --weight 100


在每一個存儲節點上面重複執行這個命令。在這個例子的架構中,使用該命令的三個變量:

# swift-ring-builder object.builder add \

  --region 1 --zone 1 --ip 111.111.111.202 --port 6000 --device sdc --weight 100


# swift-ring-builder object.builder add \

  --region 1 --zone 2 --ip 111.111.111.202 --port 6000 --device sdd --weight 100


# swift-ring-builder object.builder add \

  --region 1 --zone 3 --ip 111.111.111.202 --port 6000 --device sde --weight 100

image.png


9.3.3.四、驗證 ring 的內容:

# swift-ring-builder object.builder

image.png


9.3.3.五、平衡 ring:

# swift-ring-builder object.builder rebalance

image.png


9.3.四、分發環配置文件(本次測試就一個存儲節點,並且我把控制節點和存儲節點都執行了命令)

複製``account.ring.gz``,container.ring.gz``和``object.ring.gz 文件到每一個存儲節點和其餘運行了代理服務的額外節點的 /etc/swift 目錄。


9.四、完成安裝

9.4.一、從對象存儲源倉庫中獲取 /etc/swift/swift.conf 文件:

# curl -o /etc/swift/swift.conf \

  https://git.openstack.org/cgit/openstack/swift/plain/etc/swift.conf-sample?h=stable/mitaka

註解:本次沒有下載,直接使用默認配置文件


9.4.二、編輯 vi /etc/swift/swift.conf 文件並完成如下動做:

在``[swift-hash]``部分,爲你的環境配置哈希路徑前綴和後綴:

[swift-hash]

...

swift_hash_path_suffix = LEO_TEST_SUFFIX

swift_hash_path_prefix = LEO_TEST_PREFIX


將其中的 HASH_PATH_PREFIX和 HASH_PATH_SUFFIX替換爲惟一的值。

警告:這些值要保密,而且不要修改或丟失。


在``[storage-policy:0]``部分,配置默認存儲策略:

[storage-policy:0]

name = Policy-0

default = yes



9.4.三、複製``swift.conf`` 文件到每一個存儲節點和其餘容許了代理服務的額外節點的 /etc/swift 目錄。

註解:本次操做已經在兩個節點都配置好了。

20200313:最終仍是把計算節點的三個builder文件所有刪除,而後把控制節點的ring文件傳過來了。


9.4.四、在全部節點上,確認配置文件目錄是否有合適的全部權:

# chown -R root:swift /etc/swift


9.4.五、在控制節點和其餘運行了代理服務的節點上,啓動對象存儲代理服務及其依賴服務,並將它們配置爲隨系統啓動:

# systemctl enable openstack-swift-proxy memcached

# systemctl start openstack-swift-proxy memcached

# systemctl status openstack-swift-proxy memcached

image.png

註解:本次只在控制節點運行了代理服務,計算節點沒有運行。


9.4.六、在存儲節點上,啓動對象存儲服務,並將其設置爲隨系統啓動:

# systemctl enable openstack-swift-account openstack-swift-account-auditor \

  openstack-swift-account-reaper openstack-swift-account-replicator 

# systemctl start openstack-swift-account openstack-swift-account-auditor \

  openstack-swift-account-reaper openstack-swift-account-replicator

# systemctl status openstack-swift-account openstack-swift-account-auditor \

  openstack-swift-account-reaper openstack-swift-account-replicator


# systemctl enable openstack-swift-container openstack-swift-container-auditor \

  openstack-swift-container-replicator openstack-swift-container-updater

# systemctl start openstack-swift-container openstack-swift-container-auditor \

  openstack-swift-container-replicator openstack-swift-container-updater

# systemctl status openstack-swift-container openstack-swift-container-auditor \

  openstack-swift-container-replicator openstack-swift-container-updater


# systemctl enable openstack-swift-object openstack-swift-object-auditor \

  openstack-swift-object-replicator openstack-swift-object-updater

# systemctl start openstack-swift-object openstack-swift-object-auditor \

  openstack-swift-object-replicator openstack-swift-object-updater

# systemctl status openstack-swift-object openstack-swift-object-auditor \

  openstack-swift-object-replicator openstack-swift-object-updater


9.五、驗證操做

9.5.一、導入``demo``憑證

$ . demo-openrc


9.5.二、顯示服務狀態:

$ swift stat

有報錯:

image.png


使用命令查看報錯:

swift stat --debug

image.png

20200313官方文檔可能存在問題,須要從新尋找部署教程。暫停實驗環境。

次日啥都沒幹,重啓後就行了。。。

image.png


9.5.三、建立``container1``容器

$ openstack container create container1

9.5.四、上傳一個測試文件到``container1``容器

$ openstack object create container1 FILE


9.5.五、列出``container1``容器裏的全部文件

$ openstack object list container1


9.5.六、從``container1``容器裏下載一個測試文件

$ openstack object save container1 FILE

註解:這個命令執行後沒有輸出。

相關文章
相關標籤/搜索