zookeeper:是一个分布式环境下的协调工作和配置集中管理平台,它提供的功能包括:配置维护、域名服务、分布式同步、组服务等。mesos采用zookeeper来处理多节点情况下的failover问题,当master节点宕机时,zookeeper会选举出新的master节点。
marathon:一个mesos框架,能够支持运行长服务,比如web应用等。是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如Tomcat Play等等,可以集群的多进程管理。也是一种私有的Pass,实现服务的发现,为部署提供提供REST API服务,有授权和SSL、配置约束,通过HAProxy实现服务发现和负载平衡
本次部署的多节点环境如下:
--------------------
| zookeeper + marathon |
| 192.168.253.162 |
|—————————————————— —\
| \
| \
| \
------------- ------------- -------------
| mesos master | | mesos master | | mesos slave |
| 192.168.254.86 | | 192.168.254.87 | | 192.168.254.88 |
|———————————— | |———————————— | |———————————— |
这里需要注意的是,每台机器必须能根据hostname解析出该机器的实际IP地址!!!,为此可以在/etc/hosts中添加hostname和实际ip的对应关系,否则会出现framework和master无法通信的情况。
(1)在四台机器上分别部署mesos环境,具体参考:http://blog.csdn.net/weiyuanke/article/details/51207962
(2)在192.168.253.162上部署zookeeper
wgethttp://apache.claz.org/zookeeper/stable/zookeeper-3.4.8.tar.gz
tar xvf zookeeper-3.4.8.tar.gz
#采用默认设置
cp conf/zoo_sample.cfg conf/zoo.cfg
./bin/zkServer.sh start #启动zookeeper
zookeeper服务启动之后,我们可以连接上去查看当前的zookeeper状态,
./bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[mesos, zookeeper, marathon]
(2)在192.168.254.86上运行mesos master
/root/mesos-0.28.0/build/bin/mesos-master.sh --ip=192.168.254.86 --hostname=192.168.254.86 --zk=zk://192.168.253.162:2181/mesos --work_dir=/var/lib/mesos --quorum=1
这里因为zookeeper为一台,如果是集群zookeeper的话,—zk=zk:ip1:port1,ip2:port2/mesos
(3)在192.168.254.87上运行mesos master
/root/mesos-0.28.0/build/bin/mesos-master.sh --ip=192.168.254.87 --hostname=192.168.254.87 --zk=zk://192.168.253.162:2181/mesos --work_dir=/var/lib/mesos --quorum=1
(4)在192.168.254.88上运行mesos slave
/root/mesos-0.28.0/build/bin/mesos-slave.sh --master=zk://192.168.253.162:2181/mesos --ip=192.168.254.88 --hostname=192.168.254.88 --containerizers=docker,mesos
这里我们设置slave的容器类型为docker和mesos
(5)在192.168.253.162上运行marathon
wgethttp://downloads.mesosphere.com/marathon/v1.1.1/marathon-1.1.1.tgz
tar xvfmarathon-1.1.1.tgz
MESOS_NATIVE_JAVA_LIBRARY=/root/mesos-0.28.0/build/src/.libs/libmesos.so/root/marathon-1.1.0-RC1/bin/start --masterzk://192.168.253.162:2181/mesos
(6)登录marathon 192.168.253.162:8080
点击create application来创建应用,如果是运行一个容器的话,可以指定该容器的image,port映射,volume等