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 ...
随机推荐
- 解决使用maven jetty启动后无法加载修改过后的静态资源
jetty模式是不能修改js文件的,比如你现在调试前端js,发现在myeclipse/eclipse的源码里面无法修改文件,点都不让你点,所以,你只能采用一些办法,更改jetty的模式配置. Look ...
- 在cmd窗口输入命令遇到You must run this command from a command prompt with administrator privilege怎么办?
点开始菜单,找到Accessories(附件),找到Command Prompt窗口,点右键,选“run as administrator”(以管理员身份运行),之后再执行先前的命令就好了. 2017 ...
- nginx apache防盗链
要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件.换句 ...
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》移植到android手机
说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...
- HttpWebRequest.Proxy属性
HttpWebRequest.Proxy默认使用IE代理,可以设置“Internet选项-Internet属性-连接-局域网设置-代理服务器”.
- springMVC --@RequestParam注解(后台控制器获取參数)
在SpringMVC后台控制层获取參数的方式主要有两种,一种是request.getParameter("name"),第二种是用注解@RequestParam直接获取. 1.获取 ...
- vim 查找与替换
一.vim 查找 1. 正向查找 / 与 反向查找 ? 2. 退出查找 <Esc> 3. 跳转到下一处匹配 n ,跳转到上一处匹配 N 4. /<CR> 正向跳转到相同模式的下 ...
- 邮箱大师WPZ协议包
WIRELESS Z PACKET: i8-version(WZPUnit.getVersion() & 3 | WZPUnit.MAGIC_MASK = 1 & 3 | -48 = ...
- ss请cc来家里钓鱼,鱼塘可划分为n*m的格子,每个格子有不同的概率钓上鱼,cc一直在坐标(x,y)的格子钓鱼,而ss每分钟随机钓一个格子。问t分钟后他们谁至少钓到一条鱼的概率大?为多少?
include "stdafx.h" #include<iostream> #include<vector> #include<math.h> ...
- nginx - KeepAlive详细解释
最近工作中遇到一个问题,想把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器. Client可以是浏览器 ...