YY游戏云平台第一版完全使用Openstack构建。计算服务使用Nova和KVM,网络服务使用Neutron和Provider Networking,没有使用分布式块存储服务。Cloud 1.0发生过一些问题,但也承载了数款游戏的运行,其中不乏峰值流量很高的游戏。促使我们远离Openstack的原因,主要还在于这个系统的不成熟、不稳定、扩展性差。
从全局看,Openstack存在的问题包括:
- 项目庞大复杂,过多的模块、扩展、功能让这个产品很难部署使用,出错时也难以调试。
- 发布质量一般。目前是按时间周期发布,每个版本维护时间过短,且旧版本不支持无缝升级到新版本。整个项目不注重生产环境可用性,更注重项目扩张和吸引眼球。
- 项目的代码量仍然在持续增长,但是不注重代码质量和功能完整性。很多部分实现的功能成为遗留代码。
- 可控性差,对运维的素质要求非常高。
如下是我们在生产环境面临的具体问题:
- 由于neutron租户网络存在l3-agent瓶颈,无法实现生产环境可用的租户隔离网络。
- metadata service存在明显性能问题。metadata 服务网络结构复杂,容易导致VM创建或者重启失败。
- 直到Icehouse版本,仍然不能在线无缝升级。升级不方便加上旧版本维护时间短,不适合生产环境大规模使用。
- 授权体系一直是软肋。默认的policy.json不安全,也不支持全局动态配置权限。
- 自身的bug影响稳定性,上游社区不重视。已知bug包括:
- keystone性能bug
- neutron定时任务执行稍有异常就清空OVS配置
- neutron DHCP 服务器(dnsmasq)性能问题
- 某些情况下,live migration不支持按region迁移
- live migration的实现没有考虑超时和网络不通时如何进行恢复
这些原因的存在,促使我们最终下定决心开发Cloud 2.0,从零开始打造一套适合自己的企业私有云系统。