Skip to content
李志强 edited this page May 22, 2017 · 7 revisions

Mesos

Key components

  • zookeeper
  • master
  • slave
  • framework including scheduler and executor。
  1. Mesos-master是整个系统的核心,负责管理接入mesos的各个framework(由frameworks_manager管理)和slave(由slaves_manager管理),并将slave上的资源按照某种策略分配给framework

  2. Mesos-slave负责接收并执行来自mesos-master的命令、管理节点上的mesos-task,并为各个task分配资源。mesos-slave将自己的资源量发送给mesos-master,由mesos-master中的Allocator模块决定将资源分配给哪个framework。master存在单点故障问题,为此,mesos采用了zookeeper解决该问题。

  3. Framework是指外部的计算框架,如Hadoop,Mesos等,这些计算框架可通过注册的方式接入mesos,以便mesos进行统一管理和资源分配。Mesos要求可接入的框架必须有一个调度器模块,该调度器负责框架内部的任务调度。

  4. Executor主要用于启动框架内部的task。由于不同的框架,启动task的接口或者方式不同,当一个新的框架要接入mesos时,需要编写一个executor,告诉mesos如何启动该框架中的task。

Deploy Mesos using Docker images

  • mesoscloud/zookeeper
docker run -d \
-e MYID=1 \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
-e SERVERS=0.0.0.0 \
--name=zookeeper_t \
--net=host \
--restart=always \
mesoscloud/zookeeper
  • mesoscloud/mesos-master
docker run -d \
--net=host \
-e MESOS_HOSTNAME=${HOST_IP} \
-e MESOS_IP=${HOST_IP} \
-e MESOS_QUORUM=1 \
-e MESOS_ZK=zk://${HOST_IP}:2181/mesos \
--name mesos-master  \
--restart always \
mesoscloud/mesos-master
  • mesoscloud/marathon
docker run -d \
--net host \
-e MARATHON_HOSTNAME=${HOST_IP} \
-e MARATHON_HTTPS_ADDRESS=${HOST_IP} \
-e MARATHON_HTTP_ADDRESS=${HOST_IP} \
-e MARATHON_MASTER=zk://${HOST_IP}:2181/mesos \
-e MARATHON_ZK=zk://${HOST_IP}:2181/marathon \
--name marathon \
--restart always \
mesoscloud/marathon
  • mesoscloud/mesos-slave
docker run -d \
--net host \
-e MESOS_HOSTNAME=${HOST_IP} \
-e MESOS_IP=${HOST_IP} \
-e MESOS_MASTER=zk://${HOST_IP}:2181/mesos \
-v /sys/fs/cgroup:/sys/fs/cgroup \
-v /var/run/docker.sock:/var/run/docker.sock \
--name mesos-slave-2 \
--restart always \
--privileged \
mesoscloud/mesos-slave
  • mesoscloud/chronos
docker run -d \
-e CHRONOS_HTTP_PORT=4400 \
-e CHRONOS_MASTER=zk://${HOST_IP}:2181/mesos \
-e CHRONOS_ZK_HOSTS=${HOST_IP}:2181 \
--name chronos --net host --restart always mesoscloud/chronos

Marathon

{
  "id": "a1",
  "cmd": "npl",
  "cpus": 0.5,
  "mem": 256.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "121.14.117.251:5000/npl-keepwork",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 8080, "hostPort": 0, "servicePort": 9000, "protocol": "tcp" },
        { "containerPort": 161, "hostPort": 0, "protocol": "udp"}
      ]
    }
  }
}
Clone this wiki locally