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配置项
配置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)启动mastershell $ sudo mesos-master --work_dir=/tmp/mesos/master --hostname=cloud.zetyun.com (2)启动agent
$ 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=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
转载于:https://www.cnblogs.com/moonlord/p/6672346.html