openstack多region介绍与实践
版权声明:本文为原创文章,转载请注明出处。
概念介绍
所谓openstack多region,就是多套openstack共享一个keystone和horizon。每个区域一套openstack环境,可以分布在不同的地理位置,只要网络可达就行。个人认为目的就是为了提供环境隔离的功能,选择启虚拟机的时候可以根据自己所处的位置就近选择。
既然提到region了,那不如就此总结下openstack中其他的至上而下的不同的区域概念。

Region
每个region都有个完整的Openstack部署环境, 有自己的一套服务的endpoint(服务入口)。
不同的region共享一套keystone和horizon来提供访问控制与web操作,regions之间完全隔离,但是多个regions之间共享同一个keystone和dashboard。
Cells
cell英译细胞,主要解决openstack的扩展性和规模瓶颈(rabbitmq和database组件),通过每个cell引进自己独立的rabbitmq和db来解决。
cell被实现为树形的分级调度,在每个cell中引入cell的概念:
(1)Messages的路由,即父cell通过nova-cell将Messages路由到子cell的AMQP模块。
(2)分级调度功能,即调度某个instances的时候先要进行cell的选择,根据调度策略。
(3)资源统计,子cell定时的将自己的资源信息上报给父cell,用来给分级调度策略提供决策数据和基于cell的资源监控。
(4)cell之间的通信(通过rpc完成)
最后,所有的子cell公用底层cell的nova-api,子cell包含除了nova-api之外的其他nova服务,当然所有的cell都共用keystone服务。
(注:nova-*是指除了nova-api之外的其他nova服务,子cell + 父cell才构成了完整的nova服务)
小结一下:我的理解就是在原来的nova-api访其他服务之前加了一层,先选择哪个子cell来提供计算服务。父cell才有nova api服务,子cell提供nova的其他服务,cell之间通过nova-cell把消息传递到子cell的rabbitmq(AMQP)。
AZ(Availability Zones)
region中的计算结点可以被逻辑上划分为不同的availability zones,具有独立的电力供应设备,如下图。用户可见,在启动虚拟机时,可以指定特定的AZ来启动该虚拟机实例,通常你看到的就是默认nova。
修改availability zone,直接修改 nova.conf中的 字段node_availability_zone即可。
机器之间是否有明确的物理隔离,或者是考虑冗余。 如果的确有,则可考虑AZ。
Host Aggregate
除了AZ,计算结点也可以被逻辑上划分为主机集合,具有相同特性的集群,比如使用一个带有SSD磁盘的主机集合,或一个装有万兆网卡的主机集合。Host Aggregates是用户不可见的概念。
小结一下:AZ用于让用户指定从哪个特定的服务器组合里发起虚拟机,主机集合主要用来为具有特定性能的主机分组以此让调度器根据某种特性在特定的集合中发起虚拟机。
是否有基于硬件能力的隔离, 如果有很可能要使用HA。
以上是一些openstack的区域分级的概念,当然keystone里面还有分domain,project,Telnet,user,role等的概念后面另外再介绍。
多region的实践
openstack多region,就是多套openstack共享一个keystone和horizon,那么很容易想到,在一套openstack的keystone的服务实例中创建另外一个区域的服务入口点,只不过认证的服务endpoint一样罢了,horizon自动识别region。
环境介绍
以我自己的例子,先搭建了两套openstack环境,因为是为了实践,所以我简单的搞了两套allinone的。
A主机是10.133.47.95 ,定义成我的region one;
B主机是10.133.47.20,定义成我的region two。
配置
1.在A主机上创建nova、glance、cinder服务入口endpoint,定义为region two。
[root@zmg ~(keystone_admin)]# keystone endpoint-create --service-id $(keystone service-list | awk '/ compute / {print $2}') --publicurl http://10.133.47.95:5000/v2.0 --internalurl http://10.133.47.95:5000/v2.0 --adminurl http://10.133.47.95:35357/v2.0 --region RegionTwo
[root@zmg ~(keystone_admin)]# keystone endpoint-list|grep RegionTwo

注意:1.这里的endpoint地址都是主机B上的openstack环境中的服务endpoint。
2.glance,cinder以及其他服务,一样操作。
2.在主机B上对相应的服务配置修改
①编辑nova配置文件,在/etc/nova/nova.conf
auth_uri=http://10.133.47.95:5000/v2.0 identity_uri=http://10.133.47.95:35357 admin_token = 3a64046c0c9a4ef4af3d13819a451461 admin_user=nova admin_password=cd2b0a687cd14376 admin_tenant_name=services
注:1.原来uri这里是47.20,因为我们要和regionone共享keystone,所以认证url改为主机A上的keystone。
2.admin_token需要增加,也是主机Akeystone配置文件中的,必须要加不然认证没法通过,user和password要和A的文件中的一致。
[neutron]
url=http://10.133.47.20:9696admin_username=neutronadmin_password=072bdefd676644caadmin_tenant_name=servicesadmin_auth_url=http://10.133.47.95:5000/v2.0
2.修改cinder.conf文件
[keystone_authtoken]
auth_uri = http://10.133.47.95:5000/v2.0region_name = RegionTwoidentity_uri = http://10.133.47.95:35357admin_user = cinderadmin_password = e3cdaaf26e774509admin_token = 3a64046c0c9a4ef4af3d13819a451461admin_tenant_name = services
3.glance配置修改和nova cinder类似,只不过要改api.conf和register.conf。
[keystone_authtoken]auth_uri=http://10.133.47.95:5000/v2.0identity_uri=http://10.133.47.95:35357admin_user=glanceadmin_password=bdda12a1e36e4d70admin_tenant_name=servicesadmin_token = 3a64046c0c9a4ef4af3d13819a451461
[keystone_authtoken]auth_uri=http://10.133.47.95:5000/v2.0identity_uri=http://10.133.47.95:35357admin_user=glanceadmin_password=bdda12a1e36e4d70admin_token = 3a64046c0c9a4ef4af3d13819a451461admin_tenant_name=services
总结:要将B机器上所有的验证url都改成A的验证url,另外注意将B中各种配置文件中的token改成A中的admin_token。还有注意两台机器的时间一定要接近,不然还是会出现未授权的错误。
验证:
修改好之后就可以登录到horizon上去看了,horizon不需要修改,它可以自己识别多region。

Region one

Region two

至此,我们就可以通过一个horizon界面去操作不同环境的openstack去创建虚拟机,资源是完全隔离的,是不是很方便了。
以上,是我在完成后再写的步骤,细节的地方可能会有纰漏,但是思路基本就是这样。
另外,cell的实验会在后续介绍。
openstack多region介绍与实践的更多相关文章
- 管理openstack多region介绍与实践
转:http://www.cnblogs.com/zhoumingang/p/5514853.html 概念介绍 所谓openstack多region,就是多套openstack共享一个keyston ...
- openstack多region介绍与实践---转
概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以分布在不同的地理位置,只要网络可达就行.个人 ...
- 【云计算】OpenStack项目全面介绍
关于OpenStack孵化项目trove(DBaaS)之我见:http://blog.csdn.net/ddl007/article/details/17253751 OpenStack Trove将 ...
- 关于Axure RP软件的介绍——软件工程实践第二次个人作业
关于Axure RP软件的介绍——软件工程实践第二次个人作业 Axure RP是一个非常专业的快速原型设计的一个工具,客户提出需求,然后根据需求定义和规格.设计功能和界面的专家能够快速创建应用软件或W ...
- RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践
RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...
- 图像获取与采集及图像格式与Region介绍——第2讲
一.图像获取与采集 1.本地图片读取 ① 单张读取 直接传入图片路径即可,可以用绝对路径,也可以用相对路径: read_image (Image, 'C:/Users/Administrator/De ...
- OpenStack环境中的NFV实践
原文链接:http://www.99cloud.net/html/2016/jiuzhouyuanchuang_1103/250.html 在开始实践之前我们首先需要了解一些NFV概念和术语. NFV ...
- openstack架构简单介绍J版(更新中)
title : OPENSTACK架构简单介绍 openstack的发展及历史 openstack是什么? OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算软件,以A ...
- Openstack+Kubernetes+Docker微服务实践
Openstack+Kubernetes+Docker微服务实践 ..... Openstack+Kubernetes+Docker微服务实践之路--选型 posted @ 2016-11-15 ...
随机推荐
- SilverLight.3-Validation:一、银光验证。ValidatesOnExpression和NotifyOnValidationError
ylbtech-SilverLight-DataBindings_BindingADataObjects_Validation:一.银光验证.ValidatesOnExpression和NotifyO ...
- sublimetext3打造pythonIDE
虽然pycharm是非常好用的pythonIDE,用来开发项目很方便,但是修改调整单个或几个小程序就显得很笨重,这时候我们可以选择使用sublime. 一般来说要开发项目我都用pycharm,开发简单 ...
- Android - EditText 注意(缺少字符)
EditText 注意(缺少字符) 本文地址:http://blog.csdn.net/caroline_wendy EditText使用监听(Listener)addTextChangedListe ...
- 如何在vs2010中添加Picture控件
1.新建项目,并在对话框控件中拖入picture控件,并做如下设置 2.在picture控件的属性栏需要进行如下修改:ID需要修改,不能为static ID是控件的唯一标识,PictureCtrl(p ...
- Java 命名规则
http://lpacec.iteye.com/blog/25180包名:包名是全小写的名词,中间可以由点分隔开,例如:java.awt.event; 类名:首字母大写,通常由多个单词合成一个类名,要 ...
- 在Linux里环境变量设置的方法(export PATH)
一般来说,配置交叉编译工具链的时候须要指定编译工具的路径,此时就须要环境变量设置.比如我的mips-linux-gcc编译器在"/opt/au1200_rm/build_tools/bin& ...
- Apc缓存Opcode(转)
1.PHP执行 PHP的运行阶段也分成三个阶段: Parse.语法分析阶段. Compile.编译产出opcode中间码. Execute.运行,动态运行进行输出. ...
- 使用构建工具gradle打包时,遇到的中文问题和解决方式
1.使用gradle clean war 命令将项目打成war包.这一过程gradle没有提示报错. 2.将得到的myapp.war复制到tomcat下webapps(部署war包) 3.启动to ...
- 在IDEA建立Maven的多模块Web项目
由于要搭建的是Maven项目,考虑到后面可能会有扩展,因此项目搭建的分模块的. 下面一步一步的来搭建这个项目 打开IDEA集成开发环境,点击File ---> New ---> Proje ...
- Unix中库的使用
库有点像java中的jar包,但是使用起来要比jar包要麻烦一点. 库分为静态编程库和动态链接库两种. 库一旦设计出来就需要被可执行程序链接和调用. 可执行程序在编译时直接载入静态编程库,在运行时直接 ...