为什么要使用"主机管理"?

“集群”,顾名思义,是由多个计算机组成,但不仅仅是机器的堆砌;作为一个整体,集群用来提供高质量不间断的服务,具有很高的容错性;而集群中的单个节点(一般指机器)实现功能上相同或者互补的服务,一旦宕机,可以瞬间被其它节点取代。而docker的出现,大大简化了分布式程序的部署,也更凸显了集群在资源分配、负载均衡和提供持续不间断服务的优势。下面以一个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平台上部署应用快速方便,出错率低,可以节省很多人力和财力,同时需要您付出一点点灵活性作为代价。我们的工程师也在努力提供更多的模式和可定制方式。

猜你喜欢

转载自san-yun.iteye.com/blog/2260642