OpenStack 搭建(三)

OpenStack存储模块-Cinder

在前两篇文档中介绍了OpenStack的一些基础搭建,但是并没有加入存储模块。这篇主要介绍一下openstack的存储模块Cinder.

存储主要分为三种:

  • 块存储:硬盘,存储设备,磁盘整列等。
  • 文件存储:如NFS,FTP等主要用于文件共享的存储。
  • 对象存储:分布式文件系统,swift等。有metadata(元数据)的数据描述作为支持的存储方式。

Cinder支持以上的多种存储方式。

Cinder组件

  • cinder-api: 接受API的请求,路由到cinder-volume来执行。
  • cinder-volume:响应请求,读取或写入数据库维护状态信息,通过消息队列机制与其它进程交互(如cinder-scheduler),也可以直接与上层块存储提供的硬件或软件进行交互。管理存储。
  • cinder-scheduler: 守护进程。类似于Nova-scheduler,为存储实例选择最优的块存储节点。
  • cinder-backup:守护进程。服务提供任何种类备份卷到一个备份存储提供者。就像``cinder-volume``服务,它与多种存储提供者在驱动架构下进行交互。

Cinder数据库配置和注册服务

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-controller-install.html

创建数据库并授权:

MariaDB [(none)]> CREATE DATABASE cinder;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder‘@‘localhost‘ IDENTIFIED BY ‘cinder‘;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder‘@‘%‘  IDENTIFIED BY ‘cinder‘;

创建服务证书,完成这些步骤:

# source  admin-openstack.sh 
# openstack user create --domain default --password-prompt 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          | 27b797388aaa479ea5542048df32b3d8 |
| name        | cinder                           |
| type        | volume                           |
+-------------+----------------------------------+
# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | 85f9890df5444a5d9a989c96b630c7a7 |
| name        | cinderv2                         |
| type        | volumev2                         |
+-------------+----------------------------------+

创建块设备存储服务的 API 入口点,需要注册两个版本:

 openstack endpoint create --region RegionOne  volume public http://172.16.10.50:8776/v1/%\(tenant_id\)s
 openstack endpoint create --region RegionOne  volume internal http://172.16.10.50:8776/v1/%\(tenant_id\)s
 openstack endpoint create --region RegionOne  volume admin http://172.16.10.50:8776/v1/%\(tenant_id\)s
 openstack endpoint create --region RegionOne volumev2 public http://172.16.10.50:8776/v2/%\(tenant_id\)s
 openstack endpoint create --region RegionOne volumev2 internal http://172.16.10.50:8776/v2/%\(tenant_id\)s
 openstack endpoint create --region RegionOne volumev2 admin http://172.16.10.50:8776/v2/%\(tenant_id\)s

Cinder安装配置

在控制节点安装cinder组件:

# yum install -y openstack-cinder

编辑 /etc/cinder/cinder.conf,同时完成如下动作:

配置数据库(密码为cinder):

connection =  mysql+pymysql://cinder:[email protected]/cinder

同步块设备服务的数据库:

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

确认数据库同步成功:

# mysql -h 172.16.10.50 -ucinder -pcinder -e "use cinder;show tables;"

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:

[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = 172.16.10.50
rabbit_userid = openstack
rabbit_password = openstack

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://172.16.10.50:5000
auth_url = http://172.16.10.50:35357
memcached_servers = 172.16.10.50:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = cinder

在 [oslo_concurrency] 部分,配置锁路径:

lock_path = /var/lib/cinder/tmp

编辑文件 /etc/nova/nova.conf 并添加如下到其中:

[cinder]
os_region_name= RegionOne

重启nova-api:

# systemctl restart openstack-nova-api.service

启动cinder-api(端口8776)和cinder-scheduler:

# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

安装配置存储节点

存储节点可以配置在计算节点上,也可以有其它的专用存储服务,这里使用计算机节点提供存储服务。

计算节点上需要有一个外挂磁盘。

创建LVM 物理卷 /dev/sdb:

创建 LVM 卷组 cinder-volumes:

# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
# 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/.*/``结束,过滤所有保留设备。您可以使用 :命令:`vgs -vvvv` 来测试过滤器。

在存储节点安装配置cinder

安装软件包:

yum install -y openstack-cinder targetcli python-keystone

配置存储节点的cinder:

在存储节点的cinder配置和在控制节点的配置差别不是很大,可以直接从控制节点拷贝并修改权限:

# scp /etc/cinder/cinder.conf  172.16.10.51:/etc/cinder/

在cinder.conf 的``[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 后端:

enabled_backends = lvm

启动块存储卷服务及其依赖的服务:

# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service

在控制节点验证是否配置成功,正常为up状态,如果不是UP状态则不能添加云硬盘:

# source  admin-openstack.sh 
# cinder service-list
+------------------+-----------+------+---------+-------+----------------------------+-----------------+
|      Binary      |    Host   | Zone |  Status | State |         Updated_at         | Disabled Reason |
+------------------+-----------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler |   node1   | nova | enabled |   up  | 2016-11-02T09:16:34.000000 |        -        |
|  cinder-volume   | [email protected] | nova | enabled |   up  | 2016-11-02T09:16:39.000000 |        -        |
+------------------+-----------+------+---------+-------+----------------------------+-----------------+

为虚拟机添加一个卷

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/launch-instance-cinder.html

之前已经安装了Horizon,可以直接通过dashboard添加云硬盘操作。也可以根据官方的文档命令行添加云硬盘。

如果在Web管理界面出现云硬盘信息,说明添加成功。

查看虚拟机上是否有此虚拟硬盘:

$ sudo fdisk -l

Disk /dev/vdb: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

格式化硬盘,并mount:

$ sudo fdisk /dev/vdb 
n p w
$ sudo mkfs.ext4 /dev/vdb1
$ sudo  mount /dev/vdb1 /data/

可以对正在运行的虚拟机上添加云硬盘,不建议动态的扩容或收缩硬盘容量,可能会造成数据丢失的情况。在实际生产环境中,不建议使用cinder的各种复杂功能。

时间: 2024-12-29 23:33:02

OpenStack 搭建(三)的相关文章

openstack I版的搭建三--Nova

安装Nova [[email protected] src]# cd ~ [[email protected] ~]# cd /usr/local/src/nova-2014.1 [[email protected] nova-2014.1]# python setup.py install [[email protected] nova]# pwd /usr/local/src/nova-2014.1/etc/nova [ro[email protected] nova]# ll 总用量 48

[LAMP环境搭建三]PHP安装

****说明:先全部看一遍,再开始安装**** 获取PHP源码包 http://cn2.php.net/get/php-5.5.10.tar.gz/from/this/mirrorwget 安装libxml2:wget ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz./configure --prefix=/usr/local/libxml2# yum -y install python-devel 安装zlib:wget http://zlib.n

Intellij Idea系列之Tomcat环境的搭建(三)

Intellij Idea系列之Tomcat环境的搭建(三) 一. 编写背景 Intellij Idea在刚上手的时候很多人吐槽,"god, 这么难用的IDE有谁用呀?",的确,Intellij在某些环境的搭建上对于初学者来说,是个费时费力的事.我身边的很多朋友和同事在学Intellij Idea的时候,一开始都是抱着高昂的热情来学习,在编写简单的代码的时候,都会由衷的感叹,果然比Eclipse好用,但是当他们学到tomcat环境的搭建的时候,大半都放弃了,不过那还是好几年前的事情了.

嵌入式框架Zorb Framework搭建三:列表的实现

我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系统 嵌入式框架Zorb Framework搭建二:环形缓冲区的实现 嵌入式框架Zorb Framework搭建三:列表的实现 嵌入式框架Zorb Framework搭建四:状态机的实现 嵌入式框架Zorb Framework搭建五:事件的实现 嵌入式框架Zorb Framework搭建六:定时器的实

OpenStack搭建企业私有云 三:计算服务(持续更新...)

计算服务概览 使用OpenStack计算服务来托管和管理云计算系统.OpenStack计算服务是基础设施即服务(Iaas)系统的主要部分,模块主要由python实现.OpenStack计算组件请求OpenStack Identity服务进行认证:请求OpenStack Image服务提供磁盘镜像:为OpenStack dashboard提供用户与管理员接口.磁盘镜像访问限制在项目与用户上:配额以每个项目进行设定(例如,每个项目下可以创建多少实例).OpenStack组件可以在标准硬件上水平大规模

OpenStack Ocata三节点实验环境部署

一.测试环境准备 主机节点准备及网络规划我物理节点是一台塔式服务器,40核CPU,64G内存,SSD盘800G,HDD盘4T.操作系统:win7 x64虚拟化软件:VMware WorkStation 11 系统环境准备--最小化安装CentOS7.2系统(CentOS-7-x86_64-Minimal-1511.iso)--关闭防火墙.关闭SELinux systemctl stop firewalld.service systemctl disable firewalld.service -

智能NDS服务器的搭建——三大运营商线路分流解析DNS

在我们中国电信运营商不止一家,有电信.移动.网通,但我们在访问互联网资源时,有时候就会现跨网访问的情况,但有时间跨网访问速度是奇慢的.所以我们的网站运营商,也会在网站的服务器上同时配上三大电信运营商的线路,如此一来,电信用户访问的时候就走电信的出口,移动用户访问的时候就走移动的出口,网通通用户访问的就走网通的出口,这样也就很好的解决了跨网访问速度奇慢的问题的了.但这里其实就用到了,如何让DNS在解析地址的过程中智能的去判断哪个运营商的用户走哪条线路了.今天在这里给大家模拟实现一下,智能DNS如何

openstack(三)AMQP(RabbitMQ)

一.简介 所有Red Hat Openstack服务之间都使用RabbitMQ(统一消息系统)进行通讯. 默认RabbitMQ监听5672端口,RabbitMQ支持基于账户与密码的访问并可以实现SSL加密,如果启用了SSL加密则端口需要修改为5671. RabbitMQ comes with default built-in settings which will most likely be sufficient for running your RabbitMQ server effecti

OpenStack 搭建(一)

OpenStack介绍 openstack是一个云平台管理项目,我们可以使用openstack来管理我们的资源池,在这个资源池中包含了很多的子项目.openstack是有多个不同的模块组成,不同的功能有相对应得不同模块负责.openstack三大核心分别是 计算.网络.存储.通过调用不同模块的API来对外提供交互. openstack 的版本发布很快,从最初的A版到现在的N版,官方一般会每隔六个月发布一个新的版本. openstack每个服务都有对应的项目名称,不同的项目就相当于一个提供单独服务