作者:张言,精灵云产品总监,虚拟化领域专家,曾任IBM和VMWare资深产品经理,对IaaS/PaaS产品有丰富的经验,实际参与国内多家IDC中心PaaS平台搭建工作。
现代应用程序被分解成更小更无耦合微服务。这样的微服务可更容易的在大型计算集群扩展。这种方式着重考虑2个关键的构架考虑:服务发现和负载均衡。
作为开发,构建他们的应用可扩展,他们需要考虑和设计在集群内外,每一个服务是如何被其他服务发现。此外,因为这些服务水平的在集群扩展, 他们应该被对等的用来做负载均衡。
最近我们发布了Ghostcloud Beta,它能够让组织在内部或者虚拟私有云上部署一个容器服务化(CaaS)平台。 CaaS 是一种由IT负责管理和保护的应用环境,开发可以通过它自己构建和部署应用。通过CaaS用户不需要购买云主机,直接将应用托管在容器中。通过Nginx等反向代理工具,可以赋予容器二级域名,然后用户可以直接使用二级域名访问服务。同时也可以在用户的域名解析里面增加一条CNAME解析到该二级域名,这样就能 直接通过顶级域名访问服务。
集群通畅包含运行应用容器多个节点和一个运行着互锁的专用的负载均衡器(一个事件驱动的服务注册机)和负载均衡器(NGINX or HAProxy)。一个实例应用将被用来演示部署一个分布式的应用到一个多主机的集群,该集群通过Docker的定义在编译文件里的原生多主机网络连接。 一旦配置和部署完毕,通过负载均衡器,所有由用户提交请求或者查看结果的请求会被调配到合适的服务。下面就是一个典型的负载均衡架构:
这是一个真实的案例,用户是一个微信开发商,他们会帮企业开发基于微信的活动,比如抢东西,发红包等等。因此他们在非活动期通常没有那么多的服务,但是活动期的话,流量会出现暴增。之前他们是手动调节nginx,人工监控,人工部署。通过架构的改进,他们的活动首先在主机层面可以动态水平伸缩,接着是容器可以动态伸缩。这个前提是他们的服务基本都是对等的,如果不是对等的服务,扩展会比较麻烦。同时,用户可以一键式的收集整个集群的日志。再配合子域名,能达到活动的动态分配。这里要提一下,nginx和HAProxy是两种不同的负载均衡,如果负载策略跟域名无关,可以使用HAProxy,如果跟域名相关可以使用Nginx,但都会涉及到配置的动态修改。