CentOS7安裝OpenStack-09.安裝Cinder存儲服務組件


9.0.Cinder概述

  • OpenStack塊存儲服務(cinder)為虛擬機添加持久的存儲,塊存儲提供一個基礎設施為了管理卷,以及和OpenStack計算服務交互,為實例提供卷。此服務也會激活管理卷的快照和卷類型的功能。

塊存儲服務通常包含下列組件:

  1. cinder-api:接受API請求,並將其路由到``cinder-volume``執行。
  2. cinder-volume:與塊存儲服務和例如``cinder-scheduler``的進程進行直接交互。它也可以與這些進程通過一個消息隊列進行交互。``cinder-volume``服務響應送到塊存儲服務的讀寫請求來維持狀態。它也可以和多種存儲提供者在驅動架構下進行交互。
  3. cinder-scheduler守護進程:選擇最優存儲提供節點來創建卷。其與``nova-scheduler``組件類似。
  4. cinder-backup守護進程:``cinder-backup``服務提供任何種類備份卷到一個備份存儲提供者。就像``cinder-volume``服務,它與多種存儲提供者在驅動架構下進行交互。
  5. 消息隊列:在塊存儲的進程之間路由信息。

9.1.在控制節點安裝cinder存儲服務

1)創建cinder數據庫

# 創建相關數據庫,授權訪問用戶

# 連接數據庫
mysql -u root -p

# 創建數據庫並授權
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';
flush privileges;

2)在keystone上面注冊cinder服務(創建服務證書)

# 在keystone上創建cinder用戶

cd /server/tools
source keystone-admin-pass.sh
openstack user create --domain default --password=cinder cinder
openstack user list

# 在keystone上將cinder用戶配置為admin角色並添加進service項目,以下命令無輸出

openstack role add --project service --user cinder admin

# 創建cinder服務的實體

openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
openstack service list

# 創建cinder服務的API端點(endpoint)

openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(project_id\)s

openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s
openstack endpoint list

3)安裝cinder相關軟件包

yum install openstack-cinder -y

4)快速修改cinder配置

openstack-config --set  /etc/cinder/cinder.conf database connection  mysql+pymysql://cinder:cinder@controller/cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url  rabbit://openstack:openstack@controller
openstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone 
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_uri  http://controller:5000
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_url  http://controller:5000
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken memcached_servers  controller:11211
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_type  password
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken project_domain_name  default 
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken user_domain_name  default
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken project_name  service 
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken username  cinder
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken password  cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT my_ip 192.168.182.143
openstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/nova/tmp 

# 檢查生效的cinder配置

egrep -v "^#|^$" /etc/cinder/cinder.conf
grep '^[a-z]' /etc/cinder/cinder.conf

5)同步cinder數據庫

su -s /bin/sh -c "cinder-manage db sync" cinder

# 驗證數據庫

mysql -h192.168.182.143 -ucinder -pcinder -e "use cinder;show tables;"

6)修改nova配置文件

# 配置nova調用cinder服務

openstack-config --set  /etc/nova/nova.conf cinder os_region_name  RegionOne

# 檢查生效的nova配置

grep '^[a-z]' /etc/nova/nova.conf |grep os_region_name

7)重啟nova-api服務

systemctl restart openstack-nova-api.service
systemctl status openstack-nova-api.service

8)啟動cinder存儲服務

systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl status openstack-cinder-api.service openstack-cinder-scheduler.service

systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl list-unit-files |grep openstack-cinder |grep enabled

# 至此,控制端的cinder服務安裝完畢,在dashboard上面可以看到項目目錄中多了一個卷服務

# 接下來安裝塊存儲節點服務器storage node

9.2.在存儲節點服務器安裝cinder存儲服務

# 存儲節點建議單獨部署服務器(最好是物理機),測試時也可以部署在控制節點或者計算節點
# 在本文,存儲節點使用LVM邏輯卷提供服務,需要提供一塊空的磁盤用以創建LVM邏輯卷
# 我這里在VMware虛擬機增加一塊20GB的磁盤

1)安裝LVM相關軟件包

yum install lvm2 device-mapper-persistent-data -y

2)啟動LVM的metadata服務並配置開機自啟動

systemctl start lvm2-lvmetad.service
systemctl status lvm2-lvmetad.service

systemctl enable lvm2-lvmetad.service
systemctl list-unit-files |grep lvm2-lvmetad |grep enabled

3)創建LVM邏輯卷

# 檢查磁盤狀態

fdisk -l

如果看不到/dev/sdb設備,則重啟虛擬機;或者執行下面命令重新掃描一下磁盤,注意查看/sys/class/scsi_host/目錄下有幾個host文件

echo '- - -' > /sys/class/scsi_host/host{0,1,2}/scan

# 創建LVM 物理卷 /dev/sdb

pvcreate /dev/sdb

# 創建 LVM 卷組 cinder-volumes,塊存儲服務會在這個卷組中創建邏輯卷

vgcreate cinder-volumes /dev/sdb

4)配置過濾器,防止系統出錯

# 默認只會有openstack實例訪問塊存儲卷組,不過,底層的操作系統也會管理這些設備並嘗試將邏輯卷與系統關聯。
# 默認情況下LVM卷掃描工具會掃描整個/dev目錄,查找所有包含lvm卷的塊存儲設備。如果其他項目在某個磁盤設備sda,sdc等上使用了lvm卷,那么掃描工具檢測到這些卷時會嘗試緩存這些lvm卷,可能導致底層操作系統或者其他服務無法正常調用他們的lvm卷組,從而產生各種問題,需要手動配置LVM,讓LVM卷掃描工具只掃描包含"cinder-volume"卷組的設備/dev/sdb,我這邊磁盤分區都是格式化的手工分區,目前不存在這個問題,以下是配置演示

vim /etc/lvm/lvm.conf
-----------------------------
devices {
filter = [ "a/sdb/", "r/.*/"]
}
-----------------------------

# 配置規則:

# 每個過濾器組中的元素都以a開頭accept接受,或以 r 開頭reject拒絕,后面連接設備名稱的正則表達式規則。
# 過濾器組必須以"r/.*/"結束,過濾所有保留設備。
# 可以使用命令:vgs -vvvv來測試過濾器。

# 注意:

# 如果存儲節點的操作系統磁盤/dev/sda使用的是LVM卷組,也需要將該設備添加到過濾器中,例如:
filter = [ "a/sda/", "a/sdb/", "r/.*/"]
# 如果計算節點的操作系統磁盤/dev/sda使用的是LVM卷組,也需要修改這些節點的/etc/lvm/lvm.conf,在過濾器中增加該類型的磁盤設備,例如:
filter = [ "a/sda/", "r/.*/"]

5)在存儲節點安裝配置cinder組件

yum install openstack-cinder targetcli python-keystone -y

6)在存儲節點快速修改cinder配置

openstack-config --set  /etc/cinder/cinder.conf database connection  mysql+pymysql://cinder:cinder@controller/cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT transport_url  rabbit://openstack:openstack@controller
openstack-config --set  /etc/cinder/cinder.conf DEFAULT auth_strategy  keystone 
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken www_authenticate_uri  http://controller:5000
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_url  http://controller:5000
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken memcached_servers  controller:11211
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken auth_type  password
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken project_domain_name  default 
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken user_domain_name  default
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken project_name  service 
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken username  cinder
openstack-config --set  /etc/cinder/cinder.conf keystone_authtoken password  cinder
openstack-config --set  /etc/cinder/cinder.conf DEFAULT my_ip 192.168.182.143
openstack-config --set  /etc/cinder/cinder.conf lvm volume_driver cinder.volume.drivers.lvm.LVMVolumeDriver
openstack-config --set  /etc/cinder/cinder.conf lvm volume_group cinder-volumes
openstack-config --set  /etc/cinder/cinder.conf lvm iscsi_protocol  iscsi
openstack-config --set  /etc/cinder/cinder.conf lvm iscsi_helper  lioadm
openstack-config --set  /etc/cinder/cinder.conf DEFAULT enabled_backends  lvm
openstack-config --set  /etc/cinder/cinder.conf DEFAULT glance_api_servers  http://controller:9292
openstack-config --set  /etc/cinder/cinder.conf oslo_concurrency lock_path  /var/lib/cinder/tmp

# 如果存儲節點是雙網卡,選項my_ip需要配置存儲節點的管理IP,否則配置本機IP
# 檢查生效的cinder配置

egrep -v "^#|^$" /etc/cinder/cinder.conf
grep '^[a-z]' /etc/cinder/cinder.conf

7)在存儲節點啟動cinder服務並配置開機自啟動

systemctl start openstack-cinder-volume.service target.service
systemctl status openstack-cinder-volume.service target.service

systemctl enable openstack-cinder-volume.service target.service
systemctl list-unit-files |grep openstack-cinder |grep enabled
systemctl list-unit-files |grep target.service |grep enabled

# 至此,在存儲節點安裝cinder服務就完成了

9.3.在控制節點進行驗證

1)獲取管理員變量

cd /server/tools/
source keystone-admin-pass.sh 

2)查看存儲卷列表

openstack volume service list

9.4.cinder雲磁盤使用建議

1)雲磁盤可以進行磁盤遷移,擴容,縮容等操作,但不建議在生產環境進行嘗試,測試環境可以嘗試,但也要注意備份數據

2)涉及重要數據的話盡量還是不使用雲磁盤,而采用本地磁盤存儲數據,如果出現問題至少各個磁盤數據是分開的,磁盤文件還在

3)總的來說,使用openstack部署企業私有雲,生產環境用本地磁盤就好,測試環境可以以嘗試使用雲磁盤

~~~cinder安裝配置完成~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM