【摘要】Marathon是一个成熟的,轻量级的,扩展性很强的Apache Mesos的容器编排框架,它主要用来调度和运行常驻服务(long-running service),提供了友好的界面和Rest API来创建和管理应用。Mesosphere在最近刚刚发布的开源的DC/OS中把Marathon作为其默认的内置应用,可见它的重要性。为了能让大家快速的了解Marathon的主要的核心功能,作者将根据自己在Mesos和Marathon社区的的开发和实践经验,将提供一系列文章来介绍Marathon的主要的核心功能。本文是第一篇。
Marathon的安装部署
在介绍Marathon的核心功能之前,为了读者可以快速的体验Marathon的主要的功能,本章节将带领大家在Docker中快速的搭建一个Marathon的集群。
安装环境,作者准备了三台Ubuntu 14.04的虚拟机:
wangyongqiao1.eng.platformlab.ibm.com / 9.111.255.10 - Master
wangyongqiao2.eng.platformlab.ibm.com / 9.111.254.41 - Agent
wangyongqiao3.eng.platformlab.ibm.com / 9.111.255.50 - Agent
Step 1 安装Docker
由于下文我们将介绍如何在Marathon中运行Docker容器,因此必须先在计算节点上安装Docker,因为我们要把Marathon,ZK,Mesos服务运行在Docker中,所以我们也必须在Master节点上安装docker,因此需要在以上三个机器上执行如下命令,来安装docker:
apt-get update
apt-get install wget
wget -qO- https://get.docker.com/ | sh
service docker start
docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 10
Server Version: 1.11.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 83
Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: null host bridge
Kernel Version: 3.13.0-32-generic
Operating System: Ubuntu 14.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.852 GiB
Name: wangyongqiao1.eng.platformlab.ibm.com
ID: RJNG:KRN6:OUXI:Z6ND:MRN6:VC4A:3JRQ:F5XZ:4YIX:GEDZ:K5IF:PVHM
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Http Proxy: http://9.21.61.175:3128/
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Step 2 安装Zookeeper集群
因为Marathon会将运行时的一些状态state存储在Zookeeper中,同时在Marathon高可用模式下,Marathon Leader的选举也依赖于Zookeeper,所以首先我们必须先运行一个Zookeeper集群来为多个Marathon服务之间共享状态和Leader的选举。执行以下命令,在以上三个机器上安装ZK集群:
登陆wangyongqiao1.eng.platformlab.ibm.com执行以下命令:
# docker run -d \
-e MYID=1 \
-e SERVERS=9.111.255.10,9.111.254.41,9.111.255.50 \
--name=zookeeper \
--net=host \
--restart=always \
mesoscloud/zookeeper
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07bf2d5b3796 mesoscloud/zookeeper "/entrypoint.sh zkSer" 2 seconds ago Up 2 seconds zookeeper
登陆wangyongqiao2.eng.platformlab.ibm.com执行以下命令:
# docker run -d \
-e MYID=2 \
-e SERVERS=9.111.255.10,9.111.254.41,9.111.255.50 \
--name=zookeeper \
--net=host \
--restart=always \
mesoscloud/zookeeper
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03bf7c58ad53 mesoscloud/zookeeper "/usr/local/bin/dumb-" 2 seconds ago Up 1 seconds zookeeper
登陆wangyongqiao3.eng.platformlab.ibm.com执行以下命令:
# docker run -d \
-e MYID=3 \
-e SERVERS=9.111.255.10,9.111.254.41,9.111.255.50 \
--name=zookeeper \
--net=host \
--restart=always \
mesoscloud/zookeeper
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac459eb2adaa mesoscloud/zookeeper "/usr/local/bin/dumb-" 2 seconds ago Up 1 seconds zookeeper
Step 3 安装Mesos集群
因为Marathon是构建于Apache Mesos之上的一个框架,因此我们必须首先搭建Mesos集群。执行以下命令,在以上三个机器上安装Apache Mesos集群:
登陆wangyongqiao1.eng.platformlab.ibm.com执行以下命令运行Mesos master: