8620-84511745

Blog Post

技术干货 | 初次微服务体验:从Docker容器农场说起

原创 2016-03-14 数人云独家翻译 数人云

这是一篇“温和有趣”的技术文章,如果你初识Docker,对微服务充满兴趣,不妨一读。或许你的第一次微服务体验,就从本文开始……

在本文中,Mesos、Zookeeper、Marathon、Bamboo + HaProxy、Logstash、MesosDns、ElasticSearch和Kibana + Nginx等纷纷亮相,并配有详细的代码说明。本文旨在从最初的安装和环境基础建立开始,一步步指引你搭建自己的集群,实现你的目标架构,并在其上运行分布式服务。

小数友情提示:本文篇幅很长,干货多多,值得收藏。

当开发者开始构建自己的第一款微服务应用程序时,大家通常不会过多考虑编排之类的问题。这时我们掌握的有两到四台服务器,而Ansible脚本已经能够解决大部分问题。不过一旦大家的应用程序规模更大,或者各位决定使用一套环境承载多个不同项目,那么必然需要更多服务器……还有一款用于管理各服务器之上运行的服务。

不过刚刚我们已经提到了Ansible,难道它还不足以解决问题?这个嘛……答案是否定的。Ansible只能解决一项难题——部署。利用它,大家仍然需要搞定其它多种与微服务相关的问题:我们必须记得每台服务器中还有多少剩余资源、手动管理各清单文件以匹配服务器容量、监控应用程序是否正常运行、当节点出现故障时进行服务回弹以及控制端口号冲突等等。如果大家拥有四台服务器与十项服务,那么这些问题就变得比较明显了。

而以此为基础,我们就需要求助于Mesos了。Mesos是什么?这是一款集群管理器,其能够帮助大家在分布式环境之下运行应用程序。Mesos的关键优势包括:

资源管理与使用效率; 应用程序生命周期控制; Docker容器支持能力。

最后一点也使得Mesos成为我们最为完美的解决方案选项。

安装

由于找到七台无需使用的服务器对于任何企业都是一项难题,因此我们在这里使用Vagrant(这是一款管理虚拟化流程的完美工具)在一台本地设备(惠普Z230,i7-4770 3.40 GHz,16 GB内存)上构建自己的集群。另外,我们也提到了Ansible是一种便捷的部署方式,因此我们完全可以将整个安装流程拆分成多个Ansible角色,从而封装其内部所需要使用的标准Linux命令。

环境 首先,我们需要建立Mesos集群基础——这是一系列虚拟机系统,供我们在以下步骤中使用。这项工作利用Vagrant能够轻松完成。

以下为来自Vargantfile的部分代码:

如大家所见,我们可以使用一点Ruby代码执行以下步骤:

基于CentOS 7.1镜像构建虚拟机; 设置各虚拟机的资源上限(CPU与内存); 将其与一套网络相结合; 利用每台主机上的一组预定义变量启动一套Ansible剧本(ansible/master.yml)。

简单来讲,Vagrant文件负责描述如何构建7套虚拟机系统:3套主虚拟机、3套从虚拟机与1套日志存储(从技术层面讲,这部分也应该进行分布处理,不过主机设备的资源较为有限)。大家需要做的是利用下面这条简单命令将其投入运行:

vagrant up

Posted in docker on Mar 15, 2016