前言
最近开始对mesos非常的感兴趣,mesos和docker 一样是一个使用go语言编写的新兴且具有活力的项目,因为最近痴迷学习go语言,所以对使用go语言编写的项目都比较看好。本文先给出一个分布式部署的过程,在完成这种分布式部署的过程花费了我一个周末的时间,因为国内几乎没有找到分布式部署的实践过程记录,希望我的实践过程能够给有兴趣的小伙伴在进行分布式部署中提供一定的帮助。之后我会在本系列博文的后半部分综合阐述一下当前Docker的一些应用场景,以及未来基于Mesos+Zookeeper+Marathon+Docker分布式部署打造PaaS云平台的可行性。
## 本文中用到的项目组件介绍(全部摘自网络) ##
Mesos:Mesos采用与Linux kernerl相同的机制,只是运行在不同的抽象层次上。Mesos kernel利用资源管理和调度的API在整个数据中心或云环境中运行和提供引用(例如,Hadoop,Spark,Kafaka,Elastic Search)。
Zookeeper:zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
Marathon:marathon是一个mesos框架,能够支持运行长服务,比如web应用等。是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如Tomcat Play等等,可以集群的多进程管理。也是一种私有的Pass,实现服务的发现,为部署提供提供REST API服务,有授权和SSL、配置约束,通过HAProxy实现服务发现和负载平衡
Docker:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
## Mesos+Zookeeper+Marathon+Docker分布式部署过程记录# #
Mesos为了管理的简单也采用了master-slave的架构,因此我本次使用了6个ubuntu14.04的虚拟机作为部署节点。其中3个mastser节点,3个slave节点。为直观的理解,我简单的画了一张架构图:
如图所示其中master节点都需要运行zookeeper、mesos-master、marathon,在slave节点上只需要运行master-slave就可以了,但是需要修改zk的内容来保证slave能够被master发现和管理。为了节约时间和搞错掉,我在公司内部云平台上开一个虚拟机把所有的软件都安装上去,做成快照进行批量的创建,这样只需要在slave节点上关闭zookeeper、mesos-master服务器就可以了,在文中我是通过制定系统启动规则来实现的。希望我交代清楚了,现在开始部署。
## 一、准备部署环境 ##
1、在ubuntu14.04的虚拟机上安装所有用到软件,虚拟机可以上互联网。
2、安装python依赖
apt-get install curl python-setuptools python-pip python-dev python-protobuf
3、安装配置zookeeper
apt-get install zookeeperd
echo 1 | sudo dd of=/var/lib/zookeeper/myid<