Dec 102015
 

到年底了,很多朋友找我聊天,经常问OpenStack企业使用过程中有啥问题。这些问题,目前有啥解决的办法,社区是如何考虑的。

现在的很多信息都在微信,微博里提到。这里就做一个总结。上周和朋友交流,突然发现3年前,我们在外面吹的功能,其实现在都已经实现。估计我们现在在吹的功能,需要3年后才能真正实现。

控制节点HA

Mirantis实现的控制节点的HA的方案,一直都是大家学习的对象,目前OpenStack控制节点的所有组件基本都实现了高可用,Mantis甚至把Zabbix也放到控制节点上,实现了高可用。

如果用户对控制节点进行严格测试,其实还是能发现有点美中不足的地方。当3个控制节点的其中一个挂掉后,你创建虚拟机,会有一部分失败。这其实也是Mirantis一直在解决。目前各家解决问题的方式不太一样,希望社区可以有一个完整的方案

朱荣泽做了一个很好的总结,大家好好看看http://way4ever.com/?p=3121

目前OpenStack的组件实现HA,Cinder的问题最多,红帽的官方文档专门提到,Cinder目前无法实现HA。

下面内容来自我的广东老乡Tobe 他的微博里的提到的

目前基于AMQP的cinder-volume active-active架构都是有问题,详情参考 http://gorka.eguileor.com/cinder-ha-aa-specs-for-review/

OpenStack有spec计划Mitaka可能解决这些问题 https://specs.openstack.org/openstack/cinder-specs/specs/mitaka/cinder-volume-active-active-support.html

Gorka大神还写过blog分析了RabbitMQ存在的问题不能只改host来解决

http://gorka.eguileor.com/a-cinder-road-to-activeactive-ha

 

计算节点HA

对于vmware用户来说,一个节点挂掉后,上面的虚拟机自动跑到别的机器上,这是一个很顺其自然的事情。Qingcloud其实也专门介绍过他们如何解决这个问题,每个机器都有一个机器人,机器人互相通讯,一旦有人失联,马上就知道,从集群里拿掉。以前青云一个节点挂掉后,从另外一个节点把机器把虚拟机启动起来,大概是5分钟左右。

对于OpenStack来说,确认一个节点挂掉,好像方法很多,监控,脚本,但是这些其实真正使用过程,你就会发现很多问题,还不如邮件通知,人工确认再迁移。

上个月海云捷迅的朋友在东京峰会上做了一个分享,基于Consul提出了一套分布式的健康检查的方案。Consul是一个在容器和微服务技术圈子里比较有名的项目,主要的功能是提供服务注册和发现、配制变更。

分布式健康检查:实现OpenStack计算节点高可用

九州云的荆留清的同学,也分享了在九州云的产品里,如何解决这个问题的思路,

OpenStack虚拟机HA方案

这两种思路,自己选择适合自己的。

 

增量快照和备份

对于企业用户来说,考虑最多的就是数据的安全。如何对虚拟机做快照和备份,就是一个经常问到的问题。

OpenStack的虚拟机的存储,一般有本地存储,cinder存储(lvm),分布式存储(Ceph),虚拟机的文件格式有QCOW2和Raw格式。如何实现快照,增量的快照,并且能把增量的部分备份出来。这是一个非常有挑战性的活。

在红帽的roadmap里,明年要实现内存快照 https://videos.cdn.redhat.com/summit2015/presentations/12752_red-hat-enterprise-virtualization-hypervisor-kvm-now-in-the-future.pdf

对于Cinder来说,有cinder backup,你可以把卷都备份到swift或者Ceph的对象存储上,能不能做到增量,还有qemu的快照是否可靠,这都是有挑战的活。

在Ceph上,社区也整整搞了两年的整合,目前据说这是最后一个壁垒 https://review.openstack.org/#/c/205282/

希望OpenStack可以早日实现备份的链条,图来自青云

Snap32

目前默认Openstack把快照变成一个镜像模板的做法,真的是有点恶心。

其实对我来说,Ceph跑分布式块存储,备份到swift的对象存储上,这样的方案,还是比较不错的。如果Ceph备份到自己的对象存储上,风险还是没有降低。

https://github.com/Akrog/cinderback

目前Horizon的UI,是有备份的功能,不过这个估计用的人太少,估计问题也不少。

存储管理

现在分布式存储,已经有要进入企业的趋势,例如Ceph,Swift。对于这些分布式的存储的维护工作,真的是一场恶梦。因为目前这些分布式群集的维护,其实都是通过命令行,例如你的群集增加,减少一个节点,哪怕增加一块硬盘,一块硬盘损坏,卸载掉,都是通过命令行来维护。

命令行维护,其实压力很大,一不小心,整个群集就完蛋。人都是难免出错。

Intel开源了一个Ceph可视化管理的项目 https://github.com/01org/virtual-storage-manager 做的非常不错,目前项目也非常活跃。web UI是采用Horizon,看起来很熟悉。

Swift,其实已经发布了五年,其实功能本是是足够稳定,不过你真的玩起来,你就会发现,没有专人维护,根本不行。swiftstack的公司,就是靠一套web管理的平台,养活了公司50号人,可以看出对存储系统的web管理,是刚需啊。

监控和测试

Mirantis是OpenStack的技术风向标,Fuel6.1开始引入InfluxDB/Grafana和ELK,完善OpenStack的监控。Grafana展示的效果是非常炫,结合Zabbix,那么在物理机器上的监控,已经算是比较完善。

对于用户来说,一直抱怨的就是虚拟机内存的数据监控不准确。这个问题一直都没有得到很好解决。

指望ceilometer,那基本是不靠谱。通常的做法就是通过qemu的agent,乐视的朋友分享过一篇文章

http://www.cloudcraft.cn/use-qemu-guest-agent-to-change-openstack-instance-root-password/

监控的数据的存储和展示,一直都是ceilometer社区折腾的问题。

OpenStack是否稳定可靠,不是靠拍胸口的。要保证OpenStack的稳定运行,监控和健康检查,其实是必不可少。这方面社区有项目Rally,还有Mirantis的Fuel,也集成了Tempest测试,用户可以选择空闲的时候,对群集进行测试,发现潜在问题。

http://www.ibm.com/developerworks/cn/cloud/library/1403_liuyu_openstacktempest/

把目前OpenStack的各种方案都用好,就是一件非常有意义的事情。

SDN

对于企业来说,目前OpenStack的网络功能,应该是基本够用,性能其实也都还可以。Neutron+vlan的方案,应该是能满足大部分企业的需求。

至于网络的QOS,目前其实也在逐步支持,OVS据说已经实现。linux bridge正在开发。

目前社区也就考虑逐步降低网络的复杂性,把文档里的OVS,替换成linux Bridge。这样至少对我来说,也感觉可控多了。

对于SDN需求,应该是物理机器的管理,这就是iRonic项目要做的事情。就是把物理机器当成虚拟机管理。

把物理机器装好系统,这目前来说,应该是很简单事情,关键的装完后,如何放到他希望的网络里。需要用neutron调用插件去管理交换机。当然也是需要和IPMI打交道。

Dec 022015
 

其实我本人网络方面一直都比较薄弱,为了逼自己学习,就是写写文档,帮助自己的理解。估计大家看完,就可以了解到我的Neutron网络的理解,还是比较肤浅。

Snap19

解析一个东西,写一堆,真的不如一个图,这个真的是深刻体会。这个图是老外的书里的。

Snap29

上面两张图,表达的意思,基本是一样的。

Neutron,其实和其他的OpenStack组件差不多,他都是一个中间层,自己基本不干具体的活,通过插件的机制,调用第三方的组件来完成相关的功能。

对于Neutron来说,在Havana版本前,支持Linux Bridge和Openvswitch两种插件。后来发现直接通过Neutron去调用插件的方式,有些不够理想

  1. linux bridge和ovs,实现功能的代码,其实有很大部分是重复的,这样让人感觉很不爽
  2. 出于功能和性能的考虑,有些场景下,需要同时使用linux bridge和OVS,采用这种直接调用插件的模式,是无法实现的。

在H版本以后,社区就推出一个Neutron插件 Modular Layer 2 (ml2) plugin,这个插件底下调用linux bridge和ovs两个Driver。

linuxbridge和OVS,可以干的活是支持不同的网络,目前这两种Driver,都可以实现下面几种网络功能。

  1. local
  2. flat
  3. vlan
  4. vxlan
  5. GRE (linux bridge 不支持)

那么这5种网络里,local网络,主要是用于测试,GRE网络,目前社区已经基本处于维护,大家基本也可以不考虑。所以大家只需要了解其中3种就可以。

OpenStack的网络里,可以有4种的网络流量

  1. 管理网络:消息队列和数据库访问的网络
  2. API网络:外部调用API
  3. External:连接外网(provider 网络)
  4. Guest:虚拟机互相通讯网络 (Tenant 网络)

4种网络里,和Neutron有关的就是External和Guest,Provider网络和Tenant 网络。

对于Provider 网络和Tenant 网络,技术实现基本都是一样的,区别仅仅在于

  • Provider 网络,是有管理员创建
  • Tenant 网络,是由用户自己创建

Provider 网络,常用的网络是:Flat和Vlan。vxlan基本是没有使用的可能性。

Tenant 网络,可以设置的选项就是 vlan,vxlan和flat,local主要是测试使用。

Nov 302015
 

目前OpenStack官方文档已经比较完善,不过Liberty版本的文档,有一个很大的变化,网络采用Linux Bridge,并没有使用OVS,这样使得安装的过程更加简单.

修改历史

2015年12月2日:经过大师兄的帮忙,终于把网络调试通过。文档已经可用。

2015年11月30日:尝试安装vlan模式,文档没有经过检验。

Continue reading »