搭建多OpenStack多节点私有云平台(九)(块存储服务)
安装和配置控制节点
在你安装和配置块存储服务之前,你必须创建数据库、服务证书和API端点。
-
完成下面的步骤以创建数据库:
-
用数据库连接客户端以
root用户连接到数据库服务器:$ mysql -u root -p -
创建
cinder数据库:CREATE DATABASE cinder; -
允许
cinder数据库合适的访问权限:GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \ IDENTIFIED BY 'CINDER_DBPASS'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \ IDENTIFIED BY 'CINDER_DBPASS';用合适的密码替换
CINDER_DBPASS -
退出数据库客户端。
-
-
获得
admin凭证来获取只有管理员能执行的命令的访问权限:$ . admin-openrc -
要创建服务证书,完成这些步骤:
-
创建一个
cinder用户:$ openstack user create --domain default --password CINDER_PASS cinder +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | e0353a670a9e496da891347c589539e9 | | enabled | True | | id | bb279f8ffc444637af38811a5e1f0562 | | name | cinder | +-----------+----------------------------------+ -
添加
admin角色到cinder用户上。$ openstack role add --project service --user cinder admin注解
这个命令执行后没有输出。
-
创建
cinder和cinderv2服务实体:$ openstack service create --name cinder \ --description "OpenStack Block Storage" volume +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | ab3bbbef780845a1a283490d281e7fda | | name | cinder | | type | volume | +-------------+----------------------------------+$ openstack service create --name cinderv2 \ --description "OpenStack Block Storage" volumev2 +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | eb9fd245bdbc414695952e93f29fe3ac | | name | cinderv2 | | type | volumev2 | +-------------+----------------------------------+ $ openstack service create --name cinderv3 \ --description "OpenStack Block Storage" volumev3 +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | a95acbacaefc4a79a6370943bc76346a | | name | cinderv3 | | type | volumev3 | +-------------+----------------------------------+
注解
块设备存储服务要求两个服务实体。
-
-
创建块设备存储服务的 API 入口点:
$ openstack endpoint create --region RegionOne \ volume public http://controller:8776/v1/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 03fa2c90153546c295bf30ca86b1344b | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | ab3bbbef780845a1a283490d281e7fda | | service_name | cinder | | service_type | volume | | url | http://controller:8776/v1/%(tenant_id)s | +--------------+-----------------------------------------+ $ openstack endpoint create --region RegionOne \ volume internal http://controller:8776/v1/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 94f684395d1b41068c70e4ecb11364b2 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | ab3bbbef780845a1a283490d281e7fda | | service_name | cinder | | service_type | volume | | url | http://controller:8776/v1/%(tenant_id)s | +--------------+-----------------------------------------+ $ openstack endpoint create --region RegionOne \ volume admin http://controller:8776/v1/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 4511c28a0f9840c78bacb25f10f62c98 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | ab3bbbef780845a1a283490d281e7fda | | service_name | cinder | | service_type | volume | | url | http://controller:8776/v1/%(tenant_id)s | +--------------+-----------------------------------------+$ openstack endpoint create --region RegionOne \ volumev2 public http://controller:8776/v2/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 513e73819e14460fb904163f41ef3759 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | eb9fd245bdbc414695952e93f29fe3ac | | service_name | cinderv2 | | service_type | volumev2 | | url | http://controller:8776/v2/%(tenant_id)s | +--------------+-----------------------------------------+ $ openstack endpoint create --region RegionOne \ volumev2 internal http://controller:8776/v2/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 6436a8a23d014cfdb69c586eff146a32 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | eb9fd245bdbc414695952e93f29fe3ac | | service_name | cinderv2 | | service_type | volumev2 | | url | http://controller:8776/v2/%(tenant_id)s | +--------------+-----------------------------------------+ $ openstack endpoint create --region RegionOne \ volumev2 admin http://controller:8776/v2/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | e652cf84dd334f359ae9b045a2c91d96 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | eb9fd245bdbc414695952e93f29fe3ac | | service_name | cinderv2 | | service_type | volumev2 | | url | http://controller:8776/v2/%(tenant_id)s | +--------------+-----------------------------------------+$ openstack endpoint create --region RegionOne \ volumev3 public http://controller:8776/v3/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 0cecef109ee143a282b672a7a5c7996f | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | a95acbacaefc4a79a6370943bc76346a | | service_name | cinderv3 | | service_type | volumev3 | | url | http://controller:8776/v3/%(tenant_id)s | +--------------+-----------------------------------------+ $ openstack endpoint create --region RegionOne \ volumev3 internal http://controller:8776/v3/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 10c8cff8ae1a409287af7671cd887090 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | a95acbacaefc4a79a6370943bc76346a | | service_name | cinderv3 | | service_type | volumev3 | | url | http://controller:8776/v3/%(tenant_id)s | +--------------+-----------------------------------------+ $ openstack endpoint create --region RegionOne \ volumev3 admin http://controller:8776/v3/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 81cf4fca80094795bde9564babb23303 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | a95acbacaefc4a79a6370943bc76346a | | service_name | cinderv3 | | service_type | volumev3 | | url | http://controller:8776/v3/%(tenant_id)s | +--------------+-----------------------------------------+注解
块设备存储服务每个服务实体都需要端点。
安全并配置组件¶
-
安装软件包:
# yum install openstack-cinder -y -
编辑
/etc/cinder/cinder.conf,同时完成如下动作:-
在
[database]部分,配置数据库访问:[database] ... connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder用你为块设备存储数据库选择的密码替换
CINDER_DBPASS。 -
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone my_ip = 192.168.25.141 [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。
-
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[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_PASS将
CINDER_PASS替换为你在认证服务中为cinder用户选择的密码。注解
在
[keystone_authtoken]中注释或者删除其他选项。 -
在
[DEFAULT部分,配置my_ip来使用控制节点的管理接口的IP 地址。[DEFAULT] ... my_ip = 192.168.25.141 -
在
[oslo_concurrency]部分,配置锁路径:[oslo_concurrency] ... lock_path = /var/lib/cinder/tmp
-
-
初始化块设备服务的数据库:
# su -s /bin/sh -c "cinder-manage db sync" cinder注解
忽略输出中任何不推荐使用的信息。
配置计算节点以使用块设备存储,2个计算节点都要
-
编辑文件
/etc/nova/nova.conf并添加如下到其中:[cinder] os_region_name = RegionOne
完成安装(在控制节点重启)
-
重启计算API 服务:
# systemctl restart openstack-nova-api.service -
启动块设备存储服务,并将其配置为开机自启:
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
安装和配置存储节点
在你安装和配置块存储服务之前,你必须准备好存储设备。
注解
在存储节点实施这些步骤。
-
安装支持的工具包:
-
安装 LVM 包:
# yum install lvm2 -y -
启动LVM的metadata服务并且设置该服务随系统启动:
# systemctl enable lvm2-lvmetad.service # systemctl start lvm2-lvmetad.service
注解
一些发行版默认包含了LVM。
-
-
创建LVM 物理卷
/dev/sdb:# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created注意:如果Device /dev/sdb not found.表示缺少硬盘,需要添加一块硬盘。20G
-
创建 LVM 卷组
cinder-volumes:# vgcreate cinder-volumes /dev/sdb Volume group "cinder-volumes" successfully created块存储服务会在这个卷组中创建逻辑卷。
-
只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描
/dev目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含cinder-volume卷组的设备。编辑/etc/lvm/lvm.conf文件并完成下面的操作:-
在
devices部分,添加一个过滤器,只接受/dev/sdb设备,拒绝其他所有设备:devices { ... filter = [ "a/sdb/", "r/.*/"]每个过滤器组中的元素都以
a开头,即为 accept,或以r开头,即为reject,并且包括一个设备名称的正则表达式规则。过滤器组必须以r/.*/[](https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-storage-install.html#id1)结束,过滤所有保留设备。您可以使用 :命令:vgs -vvvv来测试过滤器。警告
如果您的存储节点在操作系统磁盘上使用了 LVM,您还必需添加相关的设备到过滤器中。例如,如果
/dev/sda设备包含操作系统:(这个覆盖上面的)
filter = [ "a/sda/", "a/sdb/", "r/.*/"]类似地,如果您的计算节点在操作系统磁盘上使用了 LVM,您也必需修改这些节点上
/etc/lvm/lvm.conf文件中的过滤器,将操作系统磁盘包含到过滤器中。例如,如果/dev/sda设备包含操作系统:(2个计算节点要加下面这个)
filter = [ "a/sda/", "r/.*/"]
-
安全并配置组件
-
安装软件包:
# yum install openstack-cinder targetcli python-keystone -y -
编辑
/etc/cinder/cinder.conf,同时完成如下动作:-
在
[database]部分,配置数据库访问:[database] ... connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder用你为块设备存储数据库选择的密码替换
CINDER_DBPASS。 -
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone glance_api_servers = http://compute2:9292 enabled_backends = lvm glance_api_servers = http://compute2:9292 [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。
-
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[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_PASS将
CINDER_PASS替换为你在认证服务中为cinder用户选择的密码。注解
在
[keystone_authtoken]中注释或者删除其他选项。 -
在
[DEFAULT]部分,配置my_ip选项:[DEFAULT] ... my_ip = 192.168.25.144将其中的
MANAGEMENT_INTERFACE_IP_ADDRESS替换为存储节点上的管理网络接口的IP 地址,例如样例架构中所示的第一台节点 10.0.0.41 。 -
在
[lvm]部分,配置LVM后端以LVM驱动结束,卷组cinder-volumes,iSCSI 协议和正确的 iSCSI服务:[lvm] ... volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = lioadm -
在
[DEFAULT]部分,启用 LVM 后端:[DEFAULT] ... enabled_backends = lvm注解
后端名字是任意的。比如,本教程使用驱动的名字作为后端的名字。
-
在
[DEFAULT]区域,配置镜像服务 API 的位置:[DEFAULT] ... glance_api_servers = http://compute2:9292注意要映射主机名
vim /etc/hosts
192.168.25.145 compute2
-
在
[oslo_concurrency]部分,配置锁路径:[oslo_concurrency] ... lock_path = /var/lib/cinder/tmp
-
完成安装
-
启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:
# systemctl enable openstack-cinder-volume.service target.service # systemctl start openstack-cinder-volume.service target.service在控制节点验证操作
-
获得
admin凭证来获取只有管理员能执行的命令的访问权限:$ . admin-openrc -
列出服务组件以验证是否每个进程都成功启动:
$ cinder service-list +------------------+------------+------+---------+-------+----------------------------+-----------------+ | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | +------------------+------------+------+---------+-------+----------------------------+-----------------+ | cinder-scheduler | controller | nova | enabled | up | 2014-10-18T01:30:54.000000 | None | | cinder-volume | block1@lvm | nova | enabled | up | 2014-10-18T01:30:57.000000 | None | +------------------+------------+------+---------+-------+----------------------------+-----------------+
3.创建一个带有卷的实例,并且启动
查错代码:[root@controller ~]# vim /var/log/cinder/scheduler.log

浙公网安备 33010602011771号