mesos概览
一. mesos架构组成
-
mesos的顶层概念是framework,每个framework就是一个应用。framework有下面2邠组成
(1)master上的scheduler:注册器,记录资源分配
(2)agent上的executor: -
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 -
agent恢复
(1)当mesos-agen
进程被杀死后,所有被他管理的executors/tasks
也将被杀死
(2)但是如果一个framework开启了checkpointing,则属于这个framework的executors
会自动连接到新的mesos-agen
(3)重连配置:
agent重连模式配置 -
mesos配置项
mesos配置项
二. Mesos Containerizer(容器化)
-
配置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运行时
- 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>
```
- Docker Support and Current Limitations
- 用docker作为任务镜像的设置方法
(1)启动命令中加入docker参数:mesos-agent --containerizers=docker,mesos
(2)每个agent节点都要装有docker cli
三. Mesos master的高可用
- 配置
(1)启动zookeeper集群
(2)mesos-master开启参数:--zk=zk://host1:port1,host2:port2,.../path
(3)mesos-agent开启参数 :--master=zk://host1:port1,host2:port2,.../path