cinder连接mysql数据库_Openstack入门篇(十六)之Cinder服务的部署与测试

1.理解块存储服务

操作系统获得存储空间的方式一般有两种:

通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直接使用裸硬盘存储数据(数据库)

通过 NFS、CIFS 等 协议,mount 远程的文件系统

第一种裸硬盘的方式叫做 Block Storage(块存储),每个裸硬盘通常也称作 Volume(卷)

第二种叫做文件系统存储。NAS 和 NFS 服务器,以及各种分布式文件系统提供的都是这种存储。

OpenStack 提供 Block Storage Service 的是 Cinder,其具体功能是:

①提供 REST API 使用户能够查询和管理 volume、volume snapshot 以及 volume type

②提供 scheduler 调度 volume 创建请求,合理优化存储资源的分配

③通过 driver 架构支持多种 back-end(后端)存储方式,包括 LVM,NFS,Ceph,GlusterFS

2.Cinder 架构以及块存储服务组件介绍

Cinder逻辑架构图:

70cf259e63183d151822ad0f62f025c4.png

cinder不是一个存储软件,而是属于管理存储软件。块存储服务通常包含下列组件:

cinder-api:接受API请求,调用 cinder-volume 执行操作。

cinder-volume:与块存储服务和例如“cinder scheduler”的进程进行交互

cinder-scheduler守护进程:scheduler 通过调度算法选择最合适的存储节点创建 volume,和nova-scheduler类似

cinder-backup daemon:备份进程

消息队列:Cinder 各个子服务通过消息队列实现进程间通信和相互协作。因为有了消息队列,子服务之间实现了解耦,这种松散的结构也是分布式系统的重要特征。

Database:Cinder 有一些数据需要存放到数据库中,一般使用 MySQL。数据库是安装在控制节点上的,比如实验环境中,可以访问名称为“cinder”的数据库。

3.物理部署方案

Cinder 的服务会部署在两类节点上,控制节点和存储节点。

查看当前计算节点cinder的相关服务

[root@linux-node1 ~]# ps -e |grepcinder1150 ? 01:19:09 cinder-api2025 ? 00:02:15 cinder-api3357 ? 00:17:16 cinder-schedule24069 ? 00:27:01 cinder-volume24089 ? 00:04:19 cinder-volume

cinder-api和cinder-schedule都部署在控制节点上,这无可厚非,思考:但是cinder-volume是否应该部署在存储节点上呢?

实际上,OpenStack是一个分布式系统,其每个组件的子服务都可以部署在任何节点上,只需要网络可通,这也表明了OpenStack的灵活性。无论哪个节点,只要运行了cinder-volume,它就是一个存储节点。同时,存储节点也可以部署其他组件的子服务。

4.安装组件并配置

(1)安装软件包

[root@linux-node1 ~]# yum install -y openstack-cinder

(2)修改配置:/etc/cinder/cinder.conf

[root@linux-node1 ~]# vim /etc/cinder/cinder.conf

[database]<==配置数据库访问

connection= mysql+pymysql://cinder:cinder@192.168.56.11/cinder

[DEFAULT]

transport_url= rabbit://openstack:openstack@192.168.56.11 <==配置RabbitMQ消息队列访问权限

auth_strategy = keystone <==启动用keystoen认证

[keystone_authtoken]<==配置认证服务访问

auth_uri= http://192.168.56.11:5000

auth_url = http://192.168.56.11:35357

memcached_servers = 192.168.56.11:11211auth_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

查看配置:

[root@linux-node1 ~]# grep "^[a-z]" /etc/cinder/cinder.conf

auth_strategy=keystone

transport_url= rabbit://openstack:openstack@192.168.56.11

connection = mysql+pymysql://cinder:cinder@192.168.56.11/cinder

auth_uri = http://192.168.56.11:5000

auth_url = http://192.168.56.11:35357

memcached_servers = 192.168.56.11:11211auth_type=password

project_domain_name=default

user_domain_name=default

project_name=service

username=cinder

password=cinder

lock_path= /var/lib/cinder/tmp

5.初始化块存储服务的数据库,并验证

[root@linux-node1 ~]# su -s /bin/sh -c "cinder-manage db sync"cinder

[root@linux-node1 ~]# mysql -h 192.168.56.11 -ucinder -pcinder -e "use cinder;show tables;"

6.配置计算服务以使用块设备存储

[root@linux-node1 ~]# vim /etc/nova/nova.conf

[cinder]

os_region_name=RegionOne

7.完成安装

[root@linux-node1 ~]# systemctl restart openstack-nova-api.service

[root@linux-node1 ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

[root@linux-node1 ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

8.创建cinder和cinderv2服务实体

[root@linux-node1 ~]# openstack service create --name cinder \> --description "OpenStack Block Storage"volume+-------------+----------------------------------+

| Field | Value |

+-------------+----------------------------------+

| description | OpenStack Block Storage |

| enabled | True |

| id | c63c93beff014724b036a811e2b0d591 |

| name | cinder |

| type | volume |

+-------------+----------------------------------+[root@linux-node1 ~]# openstack service create --name cinderv2 \> --description "OpenStack Block Storage"volumev2+-------------+----------------------------------+

| Field | Value |

+-------------+----------------------------------+

| description | OpenStack Block Storage |

| enabled | True |

| id | 6829915c1f9745409ca9bda364fe26c4 |

| name | cinderv2 |

| type | volumev2 |

+-------------+----------------------------------+

9.创建块设备存储服务的API入口点

[root@linux-node1 ~]# openstack endpoint create --region RegionOne \

volume public http://192.168.56.11:8776/v1/%\(tenant_id\)s

[root@linux-node1 ~]# openstack endpoint create --region RegionOne \

volume internal http://192.168.56.11:8776/v1/%\(tenant_id\)s

[root@linux-node1 ~]# openstack endpoint create --region RegionOne \

volume admin http://192.168.56.11:8776/v1/%\(tenant_id\)s

[root@linux-node1 ~]# openstack endpoint create --region RegionOne \

volumev2 public http://192.168.56.11:8776/v2/%\(tenant_id\)s

[root@linux-node1 ~]# openstack endpoint create --region RegionOne \

volumev2 internal http://192.168.56.11:8776/v2/%\(tenant_id\)s

[root@linux-node1 ~]# openstack endpoint create --region RegionOne \

volumev2 admin http://192.168.56.11:8776/v2/%\(tenant_id\)s

[root@linux-node1 ~]# openstack service list+----------------------------------+----------+----------+

| ID | Name | Type |

+----------------------------------+----------+----------+

| 18b41a6647e84ef68c5df6058c2f4eab | glance | image |

| 436e446b475a46fa978349211d6c64eb | keystone | identity |

| 613a3d7e61574fdbb7c330f6892a1b50 | neutron | network |

| 6829915c1f9745409ca9bda364fe26c4 | cinderv2 | volumev2 |

| 7347593df9034e369d27caf8f0240470 | nova | compute |

| c63c93beff014724b036a811e2b0d591 | cinder | volume |

+----------------------------------+----------+----------+[root@linux-node1 ~]# openstack endpoint list+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------------------------+

| ID | Region | Service Name | Service Type | Enabled | Interface | URL |

+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------------------------+

| 0ae3e6275b4c4c20a7e8619909726bd4 | RegionOne | cinder | volume | True | internal | http://192.168.56.11:8776/v1/%(tenant_id)s |

| 1fba971a2dc6424eaa06ef61c910e739 | RegionOne | cinder | volume | True | admin | http://192.168.56.11:8776/v1/%(tenant_id)s |

| 20222ecb6eeb4f378035e79c47810b08 | RegionOne | keystone | identity | True | public | http://192.168.56.11:5000/v3/ |

| 45fd632b46684fdca9782a1e23b91f8c | RegionOne | glance | image | True | admin | http://192.168.56.11:9292 |

| 64f9ee02b5d0489598f31e164d40e6df | RegionOne | nova | compute | True | public | http://192.168.56.11:8774/v2.1/%(tenant_id)s |

| 6cc75ee06e5245059e106e89e1643a92 | RegionOne | keystone | identity | True | internal | http://192.168.56.11:35357/v3/ |

| 77f141dede894dea877d505b60e60de7 | RegionOne | nova | compute | True | internal | http://192.168.56.11:8774/v2.1/%(tenant_id)s |

| 7883d0f227a54ac5a0db3ad3a02606df | RegionOne | nova | compute | True | admin | http://192.168.56.11:8774/v2.1/%(tenant_id)s |

| 7c7b33e8c2ac431aa7380ceeac80fb37 | RegionOne | keystone | identity | True | admin | http://192.168.56.11:35357/v3/ |

| 84e4273b741148e2a2d9c71d2c62da1e | RegionOne | cinder | volume | True | public | http://192.168.56.11:8776/v1/%(tenant_id)s |

| abd82401a31d453ca2e28fc17816fd6c | RegionOne | neutron | network | True | public | http://192.168.56.11:9696 |

| af72b7e0d3824c1e82663d06c1bd0205 | RegionOne | glance | image | True | internal | http://192.168.56.11:9292 |

| cb6a870ba8a543ee882afe4b07d3c087 | RegionOne | neutron | network | True | admin | http://192.168.56.11:9696 |

| e27bccfa73984db889f9373f288b4c67 | RegionOne | cinderv2 | volumev2 | True | internal | http://192.168.56.11:8776/v2/%(tenant_id)s |

| e3a7e437be8a4cf1968c82ceca932d57 | RegionOne | glance | image | True | public | http://192.168.56.11:9292 |

| e54250bd44384b15b5bbf1bb6eb34337 | RegionOne | cinderv2 | volumev2 | True | admin | http://192.168.56.11:8776/v2/%(tenant_id)s |

| eba3e70ff0a44ab28898169f4807145f | RegionOne | cinderv2 | volumev2 | True | public | http://192.168.56.11:8776/v2/%(tenant_id)s |

| f5c7dad4452840d788ed59c905efb3e7 | RegionOne | neutron | network | True | internal | http://192.168.56.11:9696 |

+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------

10.cinder-scheduler的调度

创建 Volume 时,cinder-scheduler 会基于容量、Volume Type 等条件选择出最合适的存储节点,然后让其创建 Volume。

Filter scheduler 是 cinder-scheduler 默认的调度器。

scheduler_driver = cinder.scheduler.filter_scheduler.FilterScheduler

scheduler 调度过程如下:

通过过滤器(filter)选择满足条件的存储节点(运行 cinder-volume)

通过权重计算(weighting)选择最优(权重值最大)的存储节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最后关于Pipeline完整的图如下:

最后关于Pipeline完整的图如下&#xff1a; 转载于:https://www.cnblogs.com/aaa6818162/p/5077988.html

amr 转mp3 java_JAVA 音频转换AMR 转MP3,OS,Linux cent os 7

场景近期在做微信开发时&#xff0c;需要获取用户发给公众服务号的语音留言。而从微信服务端下载来的语音格式却是amr的格式&#xff0c;同样的你手机录音、Android语音等也都是生成amr格式文件。但当你想在web页面去播放此文件时&#xff0c;就困难了。因为无论是当前HTML5的标…

dragloader.js帮助你在页面原生滚动下实现Pull Request操作

dragloader.js是一个面向移动Web开发的JavaScript库&#xff0c;帮助开发者在使用页面原生滚动时&#xff0c;模拟上/下拉手势&#xff0c;实现Pull Request操作。 在移动设备上&#xff0c;一般会使用 drag down 手势实现加载最新 使用 drag up 手势实现加载更多 dragloader样…

怎么运行java虚拟机_Java代码如何运行在Java虚拟机中

我们都知道要运行Java代码就必须要有JRE&#xff0c;也就是Java运行时环境&#xff0c;JRE中包含了Java程序的必需组件&#xff0c;包括Java虚拟机以及Java核心类库&#xff0c;然而运行C代码则不需要额外的运行时环境&#xff0c;只需要把代码编译成CPU能识别的指令即可&#…

【AJAX】AJAX实现搜索信息自己主动推荐并补全

好久没有继续看AJAX的视频教程了,今天就将最后一个教程案例做完。我们在搜索引擎中输入文字时文本框下会提示对应的信息&#xff0c;这个案例就是实现这样的基本功能&#xff0c;代码比較粗糙还须要进一步完好&#xff0c;当中有些地方也须要向大神们请教一下。完毕效果截图&am…

使用IntelliJ IDEA 14和Maven创建java web项目

安装Maven 下载安装 去maven官网下载最新版。 解压到安装目录。 配置 右键桌面的计算机图标&#xff0c;属性–>高级系统设置–>环境变量&#xff0c;添加M2_HOME的环境变量&#xff0c;然后将该变量加入的PATH中。 注意 必须要有JAVA_HOME和个环境变量&#xff0c;不然m…

工作那点小事

目录 工作那点小事总结回到顶部工作那点小事 离开了“火龙果”&#xff0c;领导&#xff0c;领导的领导&#xff0c;领导的领导的领导&#xff0c;同事&#xff0c;同事等等&#xff0c;给你上了一堂课。 面试时&#xff0c;问&#xff1a;为什么离开上一家公司&#xff1f;答&…

Testlink1.9.5的安装配置

前两天搭建了Testlink环境&#xff0c;在这里整理记录下过程中遇到的问题以及搭建流程。Testlink版本&#xff1a;1.9.5操作系统&#xff1a;Windows7 32bit 步骤一&#xff1a;安装XAMPP 下载解压xampp压缩包&#xff0c;点击安装包xampp-win32-1.8.0-VC9-installerservice se…

UIAutomator输入中文

之前一直是英文的测试环境&#xff0c;包括手机也是英文的&#xff0c;app也是英文的&#xff0c;涉及不到中文输入法的东西。但现在在写中文的app&#xff0c;所以需要输入中文。看到网上的解决办法如下: 下载https://github.com/sumio/uiautomator-unicode-input-helper源码 …

jni java返回数组_Android开发实践:Java层与Jni层的数组传递

Android开发中&#xff0c;经常会在Java代码与Jni层之间传递数组(byte[])&#xff0c;一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层&#xff0c;由Jni层的Socket代码发送出去&#xff0c;当然&#xff0c;Jni层也需要把从Socket接收到的数据流返回给Java层。我…

jsp mysql 注入_由Jsp+Mysql注入到root权限的全程展 【好久没有安全类文章了,转一篇看看】...

由JspMysql注入到root权限的全程展最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整.很多人可能都知道asp,php的编程要防止sql注入漏洞,而并不知道jsp编程同样也需要防备sql注入漏洞.其实,一旦jsp代码有注入漏洞,将直…

Divide and conquer:Dropping tests(POJ 2976)

最大化平均值 题目大意&#xff1a;给定你n个分数&#xff0c;从中找出k个数&#xff0c;使∑a/∑b的最大值 这一题同样的也可以用二分法来做&#xff08;用DP会超时&#xff0c;可见二分法是多么的实用呵&#xff01;&#xff09;&#xff0c;大体上是这样子&#xff1a;假设最…

java中标准封装结构_java中的构造,封装

今天给大家讲一下面向对象中的构造&#xff0c;封装&#xff1b;构造&#xff1a;构造方法有以下几个特点&#xff1a;1.方法名和类名一致。2.无返回类型。接下来的几种构造样式&#xff0c;直接上代码吧&#xff1a;//这是一个宠物类 有一个属性&#xff1a;名字(name)public …

《白日梦想家》观后感

To see the world, things dangerous to come to, To see behind walls, to draw closer, To find each other and to feel That is the Purpose of LIFE.” 这部片子我很喜欢&#xff0c;大概我在现实生活中&#xff0c;也就是一个梦想家吧。想过很多事&#xff0c;但是真正去…

linux隐藏tomcat版本_Ubuntu 14.04隐藏Tomcat-7.0.52的版本号与操作系统类型

一般情况下&#xff0c;软件的漏洞信息和特定版本&#xff0c;特定操作系统是相关的&#xff0c;因此&#xff0c;软件的版本号以及操作系统类型对攻击者来说是很有价值的。在默认情况下&#xff0c;Tomcat会在返回信息中把自身的版本号&#xff0c;操作系统类型都显示出来&…

自定义tabbar

/** * 注意&#xff1a;* 打开自定义tabbar的背景视图的交互* 选中的tabb视图高度为tabbar背景视图的高度/2-选中视图高度/2* 选中视图加载到tabbar背景视图上* label注意居中&#xff0c;imgView注意选择适应模式&#xff0c;都加载到tabbar背景视图* 设置点击手势的点击事件…

php7与apache整合,apache集成php7.3.5的详细步骤

安装 php首先安装 php 的压缩包&#xff0c;目前下载地址解压文件到这个路径下&#xff1a;D:Program Filesphp-7.3.5(自行选择合适的路径).然后将这个路径加入到环境变量 path 中。然后打开 cmd 运行php -version,输出类似如下&#xff0c;说明安装成功。PHP 7.3.5 (cli) (bui…

php后门 佛像,35张活的再久,也未必见过的照片,图2是佛像通过CT扫描后内部照...

今天这组照片可能很多人都是一次见到&#xff0c;包括小编本人看了也十分惊讶。最大的感触是&#xff0c;很多的商品居然是这么做出来的&#xff0c;看完了才有一种豁然开朗的感觉&#xff0c;废话不多说一起看看吧。鸡蛋里面套鸡蛋1000年前佛像&#xff0c;经过CT扫描后&#…

droidbox官网

droidbox官网&#xff0c;droidbox已经移植到github上了 https://github.com/pjlantz/droidbox 转载于:https://www.cnblogs.com/nightnine/p/5169261.html

java实现缓存中间件,Redis,分布式系统中不可少的缓存中间件

1.为什么要用缓存内存在整个计算机系统来说也就是一个缓存&#xff0c;CPU操作内存速度很快&#xff1b;因为操作数据的时候&#xff0c;先从硬盘中取出数据放到内存中&#xff0c;然后CPU操作数据缓存&#xff1a;提升访问效率&#xff0c;将一些频繁访问地放在缓存里面image.…