mesos概览

一. mesos架构组成

  1. mesos的顶层概念是framework,每个framework就是一个应用。framework有下面2邠组成
    (1)master上的scheduler:注册器,记录资源分配
    (2)agent上的executor:

  2. Resource Offer架构图:
    此处输入图片的描述
    (1)agent1向master搞搞自己有4CPU和4GB内存空闲,master调用allocation policy模块,告知framework1应该被分配的所有资源
    (2)master发送一个resource offer给framework1,这个resource offer给出了agent1上可用的资源
    (3)framework的schedule回应master,这两个任务分别在agent1上分配的资源(2cpu1gb,1cpu2gb)
    (4)master向agent发送开启任务的命令,并声明给这2个任务分配的资源。剩余的1cpu1gb内存可以分配给framework2

  3. agent恢复
    (1)当mesos-agen进程被杀死后,所有被他管理的executors/tasks也将被杀死
    (2)但是如果一个framework开启了checkpointing,则属于这个framework的executors会自动连接到新的mesos-agen
    (3)重连配置:
    agent重连模式配置

  4. mesos配置项
    mesos配置项

二. Mesos Containerizer(容器化)

  1. 配置agent

    sudo mesos-agent \
      --containerizers=mesos \
      --image_providers=appc,docker \
      --isolation=filesystem/linux,docker/runtime
    

(1)--image_providers:container images的类型
(2)--isolation:隔离器,filesystem/linux:文件系统root权限,docker/runtime:docker运行时

  1. Test it Out!
    (1)启动master
    $ sudo mesos-master --work_dir=/tmp/mesos/master  --hostname=cloud.zetyun.com  
    

(2)启动agent

```shell
$ sudo GLOG_v=1 mesos-agent \
  --master=<MASTER_IP>:5050 \
  --containerizers=mesos,docker 
  --isolation=docker/runtime,filesystem/linux \
  --work_dir=/tmp/mesos/agent \
  --image_providers=docker \
  --executor_environment_variables="{}"
  --executor_registration_timeout=60mins --resources='ports:[40001-44000]'
```

(3)用mesos-execute启动docker的container

```shell
# shell=fasle: 使用docker image的默认entrypoint和cmd
$ sudo bin/mesos-execute \
  --master=<MASTER_IP>:5050 \
  --name=test \
  --docker_image=library/redis \
  --shell=false
  
  
# 验证:redis-client
$ sudo docker run -ti --net=host redis redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
```
  1. Docker Support and Current Limitations
  2. 用docker作为任务镜像的设置方法
    (1)启动命令中加入docker参数:mesos-agent --containerizers=docker,mesos
    (2)每个agent节点都要装有docker cli

三. Mesos master的高可用

  1. 配置
    (1)启动zookeeper集群
    (2)mesos-master开启参数:--zk=zk://host1:port1,host2:port2,.../path
    (3)mesos-agent开启参数 : --master=zk://host1:port1,host2:port2,.../path
posted @ 2017-04-06 10:38  moon_lord  阅读(588)  评论(0编辑  收藏  举报