为什么要使用"私有集群"?

“集群”,顾名思义,是由多个计算机组成,但不仅仅是机器的堆砌;作为一个整体,集群用来提供高质量不间断的服务,具有很高的容错性;而集群中的单个节点(一般指机器)实现功能上相同或者互补的服务,一旦宕机,可以瞬间被其它节点取代。而docker的出现,大大简化了分布式程序的部署,也更凸显了集群在资源分配、负载均衡和提供持续不间断服务的优势。

时速云平台上一键搭建私有集群

时速云平台上支持两种类型的私有集群:普通模式跨云模式

  1. 普通模式下,集群的Master节点和Node节点均在用户端,并处于同一个网段。添加主机时,默认第一个添加的主机作为Master节点。该模式下所有主机最好在同一内网,比如处在同一个数据中心,或者同一个局域网。即便是使用VMWare Workstations在笔记本上虚拟出来的多台机器,只要处于一个网段,也可以添加到一个集群中。由于Master和Node节点在同一个网段,网络通信均通过内网实现,速度也更快,集群本身和上层的应用也更为稳定、安全。
  2. 跨云模式模式下,时速云将提供集群的Master节点,用户仅需添加Node节点即可。该模式下,集群可跨越不同的数据中心或路由。不管是IaaS厂商(aws、阿里云等)上的机器,都可以添加到一个集群中。处在异构网络中的计算机通过overlay network组成一个局域网,可以实现跨数据中心的应用部署和管理。

示例

下面以一个LAMP实例来对比一下传统方式运行应用和主机管理使用docker集群的优劣。

LAMP服务传统构架: 2个mysql主从备份,2+个Apache运行web server,1个haproxy实现负载均衡,暂不考虑缓存和nginx方案,需要使用 5+台机器。 这种架构容错性不错,也能承载一定的访问量,基本满足小中型网站的需求。从用户的角度来看,除非代码写得很渣,用户体验不会太差。但是对运维的同胞们来说,还是有很多可以简(tou)化(lan)的地方。部署、升级一般涉及到大量的依赖安装和配置,很多时候能为一些低级的错误(磁盘、内存不足)浪费大半天时间。如果运维团队足够强大,恭喜省去了很多麻烦;如果不够强大,开发和运维两大团队的和谐就只是流于形式了。另外一个永远无法拒绝又无法逃避的问题是"宕(gua)机(le)",虽然运维和开发都喜欢踢皮球,但是踢完了还是要围在一张桌子周围发现问题商量解决方案,类似的内耗严重降低了团队对故障的响应速度,重点是不能根治。docker通过"容器化"应用从一定程度上解决部署难的问题,TenxCloud的"主机管理"功能基于docker实现,引入了docker集群管理功能。在TenxCloud平台上,创建集群、添加机器、部署应用都可以简单地实现。下面将简要介绍将应用部署在 TenxCloud平台上的优劣。

Docker化的LAMP服务构架:1个mysql容器,2+个Apache容器,1个haproxy容器(+ 1个php web镜像)。 容器化以后,3+台机器即可提供同等质量的服务。部署:首先,需要提前写一个php版本的Dockerfile,使用tce在自己机器上,或者使用tenxcloud平台build一个app镜像(后者需要将代码上传到github或者bitbucket上);其次创建容器,您可以使用tenxcloud平台创建(目前为公测版),也可以在您的私有集群里创建,创建一个mysql容器和2+个web容器并可用后,您可以通过暴露出的ip:port访问服务,无需任何配置,即可实现负载均衡。一旦其中一个服务宕掉,可以在web端查看容器监控并对其执行重启等操作。mysql宕掉以后,数据不会丢失,重启即可。可以通过需要升级时,只需要更新代码,编译新版本镜像、创建新容器、销毁旧容器。常用的操作均可在web端完成,极大减少对运维的依赖。在tenxcloud平台上部署应用快速方便,出错率低,可以节省很多人力和财力,同时需要您付出一点点灵活性作为代价。我们的工程师也在努力提供更多的模式和可定制方式。