4.7 塊存儲服務配置(Block Storage Service Cinder)
部署節點:Controller Node
mysql -u root -p123456
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'cinder';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
openstack user create --domain default --password-prompt cinder
openstack role add --project service --user cinder admin
openstack service create --name cinder --description "OpenStack Block Storage" volume
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%\(tenant_id\)s
openstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%\(tenant_id\)s
openstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%\(tenant_id\)s
openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(tenant_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
安裝和配置Cinder服務元件
yum install openstack-cinder
修改配置檔案sudo vi /etc/cinder/cinder.conf
connection = mysql+pymysql://cinder:cinder@controller/cinder
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
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 = cinder
password = cinder
my_ip = 10.0.0.11
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
su -s /bin/sh -c "cinder-manage db sync" cinder
配置計算服務調用塊存儲服務
修改配置檔案sudo vi /etc/nova/nova.conf ,添加如下資訊:
[cinder]
os_region_name = RegionOne
systemctl restart openstack-nova-api.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
部署節點:BlockStorage Node
[root@blockstorage ~]# yum install lvm2
systemctl enable lvm2-lvmetad.service
systemctl start lvm2-lvmetad.service
[root@blockstorage ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created
配置隻有OpenStack執行個體才可以通路塊存儲卷
修改配置檔案sudo vi /etc/lvm/lvm.conf ,在devices 處添加一個過濾器,使OpenStack執行個體隻允許訪
問/dev/sdb 。
devices {
filter = [ "a/sdb/", "r/.*/"]
安裝配置塊存儲服務元件
yum install openstack-cinder targetcli python-keystone
[database]
rpc_backend = rabbit
my_ip = 10.0.0.41
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = tgtadm
enabled_backends = lvm
glance_api_servers = http://controller:9292
systemctl start openstack-cinder-volume.service target.service
systemctl enable openstack-cinder-volume.service target.service
[root@controller ~]# cinder service-list
+------------------+------------------+------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
| cinder-scheduler | controller | nova | enabled | up | 2016-09-03T14:19:51.000000 | - |
| cinder-volume | blockstorage@lvm | nova | enabled | up | 2016-09-03T14:19:27.000000 | - |
4.9 對象存儲服務配置(Object Storage Service Swift)
通過REST API 提供對象存儲和檢索服務。
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
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
yum install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached
從對象存儲軟體源倉庫下載下傳對象存儲代理服務配置檔案
curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/mitaka
修改配置檔案sudo vi /etc/swift/proxy‐server.conf 。
bind_port = 8080
user = swift
swift_dir = /etc/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
username = swift
password = SWIFT_PASS
delay_auth_decision = True
[filter:cache]
use = egg:swift#memcache
memcache_servers = controller:11211
部署節點:ObjectStorage Node
注:每個對象存儲節點都需執行以下步驟
yum install xfsprogs rsync -y
# mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc
# mkdir -p /srv/node/sdb
# mkdir -p /srv/node/sdc
/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
vim /etc/rsyncd.conf
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]
lock file = /var/lock/container.lock
[object]
lock file = /var/lock/object.lock
# systemctl enable rsyncd.service
# systemctl start rsyncd.service
yum install openstack-swift-account openstack-swift-container openstack-swift-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
修改配置檔案sudo vi /etc/swift/account‐server.conf 。
在[DEFAULT] 處配置綁定IP位址、綁定端口、使用者、目錄和挂載點:
注:将下面MANAGEMENT_INTERFACE_IP_ADDRESS 替換為對象存儲節點Management Network 網絡接口地
址10.0.0.51 或10.0.0.52
bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
bind_port = 6002
devices = /srv/node
mount_check = True
pipeline = healthcheck recon account‐server
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
修改配置檔案sudo vi /etc/swift/container‐server.conf
bind_port = 6001
pipeline = healthcheck recon container‐server
修改配置檔案sudo vi /etc/swift/object‐server.conf
bind_port = 6000
pipeline = healthcheck recon object‐server
recon_lock_path = /var/lock
chown -R swift:swift /srv/node
mkdir -p /var/cache/swift
chown -R root:swift /var/cache/swift
chmod -R 775 /var/cache/swift
建立和分發初始環
cd /etc/swift
建立基礎的account.builder 檔案:
[root@controller swift]# swift-ring-builder account.builder create 10 3 1
将每個對象存儲節點裝置添加到賬戶環:
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 替換為對象存儲節點Management Network 網絡接
口位址,将DEVICE_NAME 替換為對應的對象存儲節點上的儲存設備名稱,将DEVICE_WEIGHT 替換為實際權重
值。
注:重複以上指令,将每個存儲節點上的每個儲存設備添加到賬戶環。
例如,本文采用如下指令将每個存儲節點上的每個儲存設備添加到賬戶環:
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 10.0.0.51 --port 6002 --device sdc --weight 100
swift-ring-builder account.builder add --region 1 --zone 2 --ip 10.0.0.52 --port 6002 --device sdb --weight 100
swift-ring-builder account.builder add --region 1 --zone 2 --ip 10.0.0.52 --port 6002 --device sdc --weight 100
驗證
swift-ring-builder account.builder
平衡賬戶環:
[root@controller swift]# swift-ring-builder account.builder rebalance
Reassigned 3072 (300.00%) partitions. Balance is now 0.00. Dispersion is now 0.00
swift-ring-builder container.builder create 10 3 1
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 10.0.0.51 --port 6001 --device sdc --weight 100
swift-ring-builder container.builder add --region 1 --zone 2 --ip 10.0.0.52 --port 6001 --device sdb --weight 100
swift-ring-builder container.builder add --region 1 --zone 2 --ip 10.0.0.52 --port 6001 --device sdc --weight 100
swift-ring-builder container.builder
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder create 10 3 1
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 10.0.0.51 --port 6000 --device sdc --weight 100
swift-ring-builder object.builder add --region 1 --zone 2 --ip 10.0.0.52 --port 6000 --device sdb --weight 100
swift-ring-builder object.builder add --region 1 --zone 2 --ip 10.0.0.52 --port 6000 --device sdc --weight 100
swift-ring-builder object.builder
swift-ring-builder object.builder rebalance
分發環配置檔案
将環配置檔案account.ring.gz 、container.ring.gz 和object.ring.gz 拷貝到每個對象存儲節點以及代理
服務節點的/etc/swift 目錄。在每個存儲節點或代理服務節點執行以下指令:
scp root@controller:/etc/swift/*.ring.gz /etc/swift
本文将swift‐proxy 部署到controller節點,是以無需再講環配置檔案拷貝到代理服務節點的/etc/swift
目錄。若對象存儲代理服務swift‐proxy 部署在其他節點,則需将環配置檔案拷貝到該代理服務節
點/etc/swift 目錄下。
添加、分發swift 配置檔案
① 從對象存儲軟體源倉庫下載下傳配置檔案/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
② 修改配置檔案sudo vi /etc/swift/swift.conf
在[swift‐hash] 處哈希路徑字首和字尾
注:将HASH_PATH_PREFIX 和HASH_PATH_SUFFIX 替換為前面設計的唯一值。
[swift-hash]
swift_hash_path_suffix = HASH_PATH_SUFFIX
swift_hash_path_prefix = HASH_PATH_PREFIX
[storage‐policy:0]
name = Policy‐0
default = yes
③ 分發swift 配置檔案
将/etc/swift/swift.conf 拷貝到每個對象存儲節點以及代理服務節點的/etc/swift 目錄。在每個存儲節點
或代理服務節點執行以下指令:
scp root@controller:/etc/swift/swift.conf /etc/swift
④ 在所有存儲節點和代理服務節點上設定swift配置目錄所有權
chown -R root:swift /etc/swift
在Controller節點和其他Swift代理服務節點上執行
systemctl enable openstack-swift-proxy.service memcached.service
systemctl start openstack-swift-proxy.service memcached.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-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 start 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-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service
swift stat
本文轉自 295631788 51CTO部落格,原文連結:http://blog.51cto.com/hequan/1846096,如需轉載請自行聯系原作者