设为首页 收藏本站
查看: 1382|回复: 0

[经验分享] Openstack关于Regions和Availability Zones

[复制链接]

尚未签到

发表于 2017-6-26 22:49:21 | 显示全部楼层 |阅读模式
  在AWS中有Region和Availability Zones的概念,并且在openstack中也实现了两者,只是不太容易看出来。
  此文主要介绍他们的概念和关系,以及在openstack中的实现。
  如果没有特别强调,下文中Availability Zones简称az。

概述
  ===
  一般情况下region表示地理上隔离的两个区域,例如一个region放在美国,另外一个放在中国。换句话说一个region之间是相对独立的,一个region的死活和另外一个region没有任何关系。az是在region范围内的再次切分,只是工程上的独立,例如可以把一个机架上的机器划分在一个az中。划分az是为了提高容灾性和提供廉价的隔离服务。
    选择不同的region主要考虑哪个region靠近你的用户群体,如果用户主要在美国,那么自然选择离美国近的region。选择不同的az,是为了防止在所有instance一起挂掉。
  下图是两者之间的关系图
DSC0000.png


Region 和Availability Zones
  ======
  Region是最高等级的隔离,因为region是地理位置的隔离。例如一个美国,一个中国,那么当你的虚拟机分别跑在这两个region上,那么当美国不存在的时候,你在中国的虚拟机还在快乐的运行着。
  而且如果目标用户多数在中国,那么将虚拟机跑在中国也是很好的选择。
  az是低一级的隔离。例如我们可以在中国的datacenter划分为几个az,然后用户可以选择将这些虚拟机跑在同一个az中,或者不同az中。前者可以提供更快的网络,后者提供更好的容灾性。

Openstack实现
  在openstack中这两个概念都是存在的。一下将会介绍openstack是如何实现这两个概念的。

region
  因为Region是地理位置的隔离,那么不同的region意味着不同的endpoint,也就是说(nova-api,glance……)这些服务的ip地址是不同的。这些东西就体现在keystone的catalog中。
  以下是keystone的catalog配置文件:



catalog.RegionOne.identity.publicURL = http://keystone.cn:$(public_port)s/v2.0  
catalog.RegionOne.compute.publicURL = http://nova.cn:$(compute_port)s/v1.1/$(tenant_id)s  
catalog.RegionOne.volume.publicURL = http://cinder.cn:8776/v1/$(tenant_id)s  
catalog.RegionOne.ec2.publicURL = http://nova.cn:8773/services/Cloud  
catalog.RegionOne.image.publicURL = http://glance.cn:9292/v1  
  注意到catalog其实是分级的  <catalog>.<region>.<service>.<endpoint>,第二级的region就是上文提到的region。在这里我们可以设置不同的region和不同的service的endpoint。
  例如我们在美国加了一个datacenter,那么我们修改配置文件为



catalog.RegionOne.identity.publicURL = http://keystone.cn:$(public_port)s/v2.0  
catalog.RegionOne.compute.publicURL = http://nova.cn:$(compute_port)s/v1.1/$(tenant_id)s  
catalog.RegionOne.volume.publicURL = http://cinder.cn:8776/v1/$(tenant_id)s  
catalog.RegionOne.ec2.publicURL = http://nova.cn:8773/services/Cloud  
catalog.RegionOne.image.publicURL = http://glance.cn:9292/v1  
  
catalog.RegionUS.identity.publicURL = http://keystone.us:$(public_port)s/v2.0  
catalog.RegionUS.compute.publicURL = http://nova.us:$(compute_port)s/v1.1/$(tenant_id)s  
catalog.RegionUS.volume.publicURL = http://cinder.us:8776/v1/$(tenant_id)s  
catalog.RegionUS.ec2.publicURL = http://nova.us:8773/services/Cloud  
catalog.RegionUS.image.publicURL = http://glance.us:9292/v1
  这样以后我们就可以通过选择不同的region来访问不同的endpoint了。
  ps:现在horizon默认只提取keystone中catalog的regionOne中的endpoint,所以即使在keystone配置了多个region,在horizon也是体现不出来的。

Availability Zones
  az在openstack中其实是nova-scheduler来实现的,当新建虚拟机,调度器将会根据nova-compute设置的az来调度,例如在新建虚拟机的时候,用户设置了希望将虚拟机放在az-1中,那么调度器将会选择属于这个az的nova-compute来调度。如下图所示
DSC0001.png

  其实Region和Az的概念主要是隔离的等级问题,我们完全可以将一个datacenter根据机房划分region,然后根据机架划分az。
  这个就是仁者见仁的问题,完全可以根据各自的需要采取不同的部署方法。
  在介绍几个隔离方式

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)。

Host Aggregate
  除了AZ,计算结点也可以被逻辑上划分为主机集合,具有相同特性的集群,比如使用一个带有SSD磁盘的主机集合,或一个装有万兆网卡的主机集合。Host Aggregates是用户不可见的概念。
  小结一下:AZ用于让用户指定从哪个特定的服务器组合里发起虚拟机,主机集合主要用来为具有特定性能的主机分组以此让调度器根据某种特性在特定的集合中发起虚拟机。
  是否有基于硬件能力的隔离, 如果有很可能要使用HA。
DSC0002.png

  以上是一些openstack的区域分级的概念,当然keystone里面还有分domain,project,Telnet,user,role等的概念后面另外再介绍。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-388429-1-1.html 上篇帖子: how to read openstack code: action extension 下篇帖子: DevStack部署OpenStack开发环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表