主流云技术比较引发的心目中 Cloud 实现随想

把这些技术(OpenStack, Neutron, Deis, flynn, coatine, Solum, Kolla, Kubernets, Rudder, CoreOS, OVs等)比较来比较去,最后还是感觉OpenStack + OpenStack Solum是离我心目中的Cloud长得最像的项目。路漫漫其修远兮啊。

心目中的Cloud:

1, 提供IaaS功能,支持同时提供Container, VM, BareMetal, OSv

2, 提供PaaS功能,既支持对单个应用全生命周期的管理,也支持对Bundle全生命周期的管理。

3, 良好的网络支持, 目前开源NaaS里Neutron应该算是对网络支持最好的。

4, 一个好的框架,如很容易的扩展对应用负载感知的调度实现,如其他监控等必要的组件。所以OpenStack在这方面也还是蛮有优势的,不管它有些组件成不成熟,起码它有,起码提供了一个好的框架让你去扩展。

OpenStack相比其他云的优势:

1, 框架好,基本架子都搭好了。像ceilometer, keystone等很多完整云必备的因素先不管它实现的好不好,起码它有,不必重新发明轮子,如果使用别的如什么Kubernets等,要开发的feature实在太多了。

2, 我个人认为Neutron是开源产品里对网络做得是最好的,尤其是DVR,L2pop, VRRP三个特性进社区之后Neutron的可用性是非常好的,其他的工程像Kubernets等在网络方面和Neutron根本就不是一个数量级的。

3, 使用OpenStack除了框架和网络的优点,还具备同时支持IaaS, PaaS的潜力, 更具备同时支持容器,虚机,裸机,OSv的潜力(前三项已实现,后一项可以扩展)。

不使用OpenStack的Only PaaS方案:

1, Deis是一个PaaS, 可以从git库中获取版本化的单个应用程序并做成docker镜像部署在CoreOS中的容器里。

2, 可以考虑Deis做二次开发,以支持部署Bundle应用集合。问题来了,如何不使用OpenStack,DBaaS, MQaaS如何提供? HAproxy+Tomcat Cluster + DB Cluster究竟如何Bundle ? 需不需要研究使用VxLAN+P2V工具将局域网整体系统移入云环境之中。

3, 如果觉得在CoreOS上使用容器不安全,可以考虑在CoreOS使用OSv操作系统,性能和安全性同时兼顾。

4, 如果说Docker(使用容器)类似于KVM(运行虚机)之上有了更好的应用分发机制,但它毕竟没有调度之类的工具,所以需要引入类似于OpenStack的Google kubernets容器集群管理工具。

5, 但Kubernets的网络很烂,可以结合使用类似于Neutron DVR特性的Rudder工具来提供对网络的支持.

6, 使用SoftLayer的API提供主机,并加入Kubernets集群,并采用CoreOS镜像部署之。

使用OpenStack同时提供IaaS+PaaS能力的方案:

1, 使用OpenStack可以通过扩展提供对容器、虚机、裸机、OSv四种的支持

2, OpenStack目前的Docker-Driver + Neutron可以提供容器,但不具备Docker中的应用分发机制

3, OpenStack Solum项目在做PaaS功能,可将git库,eclipse工具,SDK, CLI四个来源的应用通过Heat自动部署到OpenStack管理的容器中,并使用HEAT提供的LB功能为应用提供LB功能,仍然使用Neutron 提供对网络的支持(这是目前最好的方式,比Kuddler, Kubernets这些提供的网络都强的多),可以使用裸机Ironic服务部署CoreOS系统。见:https://wiki.openstack.org/wiki/Solum

4, OpenStack Kolla项目使用Kubernetes+Docker来管理OpenStack, 但这个工程还没有影了, https://wiki.openstack.org/wiki/Meetings/Kolla

5, HEAT只能部署一组部署分布式web应用的虚机,但不能直接部署应用,solum在其上继续提供部署应用的能力,但solum肯定不成熟,还有一个在 HEAT之上部署应用的开源程序,那就是redhat的openshift, 见:http://www.ibm.com/developerworks/cn/cloud/library/cl-open- architecture/

6, juju确实是一个好工具,底层可以由容器,虚机,或公有云提供IaaS层,也提供了在IaaS层上直接部署应用的能力,这点等价于HEAT, juju的思想看来非常好,唯一可惜的是限定在ubuntu平台上。

目前基于docker的PaaS(PaaS的本质是构建,发布,运行应用)有:

1, Deis, 基于CoreOS, 支持直接从git服务获取应用程序并做成docker的镜像部署在容器中。可支持不同的编程语言, 见:http://dockerone.com/article/124?utm_source=weibolife

2, flynn, 基于CoreOS

3, cocaine, 俄罗斯yadex的基于docker的paas,见:https://github.com/cocaine/cocaine-docs/blob/v0.11/doc/contents.md

CoreOS是什么?

1,精简化的Linux, 没有GUI。但不像OSv根本不使用Linux内核不区分用户态内核态。可以考虑在CoreOS同时运行Container和OSv。

2, 提供了etcd作为key-value,显然,它也能提供类似于zookeeper的分布式锁的能力

3, 提供fleet进行容器的生命周期的管理, 见:https://coreos.com/docs/launching-containers/launching/launching-containers-fleet/

4, 提供容器的自动迁移和LB功能

5, 提供了两个根文件系统,专门有一个根文件系统用于更新

6, 没有提供python解释器,但可以通过systemd-nspawn部署一个toolbox的fedora容器来使用

7, 通过ssh key认证, 没有LDAP之类的认证

8, 没有像Ubuntu Core一样提供了SELinux/Apparmor之类限制进程对资源的访问控制提供更强的容器安全性

相关推荐