Docker Mesos 项目.docx
- 文档编号:4362792
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:13
- 大小:98.17KB
Docker Mesos 项目.docx
《Docker Mesos 项目.docx》由会员分享,可在线阅读,更多相关《Docker Mesos 项目.docx(13页珍藏版)》请在冰豆网上搜索。
DockerMesos项目
DockerMesos项目
简介
Mesos是一个集群资源的自动调度平台,Apache开源项目,它的定位是要做数据中心操作系统的内核。
目前由Mesosphere公司维护,更多信息可以自行查阅 Mesos项目地址或 Mesosphere。
Mesos+Marathon安装与使用
Marathon是可以跟Mesos一起协作的一个framework,用来运行持久性的应用。
安装
一共需要安装四种组件,mesos-master、marathon、zookeeper需要安装到所有的主节点,mseos-slave需要安装到从节点。
mesos利用zookper来进行主节点的同步,以及从节点发现主节点的过程。
源码编译
下载源码
gitclonehttps:
//git-wip-us.apache.org/repos/asf/mesos.git
安装依赖
#jdk-7
sudoapt-getupdate&&sudoapt-getinstall-yopenjdk-7-jdk
#autotools
sudoapt-getinstall-yautoconflibtool
#Mesosdependencies.
sudoapt-get-yinstallbuild-essentialpython-devpython-botolibcurl4-nss-devlibsasl2-devmavenlibapr1-devlibsvn-dev
编译&安装
$cdmesos
#Bootstrap(Onlyrequiredifbuildingfromgitrepository).
$./bootstrap
$mkdirbuild
$cdbuild&&../configure
$make
$makecheck&&makeinstall
软件源安装
以ubuntu系统为例。
安装Docker,不再赘述,可以参考 这里。
#Setup
sudoapt-keyadv--keyserver--recvE56151BF
DISTRO=$(lsb_release-is|tr'[:
upper:
]''[:
lower:
]')
CODENAME=$(lsb_release-cs)
#Addtherepository
echo"debhttp:
//repos.mesosphere.io/${DISTRO}${CODENAME}main"|\
sudotee/etc/apt/sources.list.d/mesosphere.list
sudoapt-get-yupdate&&sudoapt-get-yinstallzookeepermesosmarathon
基于Docker
将基于如下镜像:
∙ZooKeeper:
∙Mesos:
∙Marathon:
其中mesos-master镜像将作为master和slave容器使用。
导出本地机器的地址到环境变量。
HOST_IP=10.11.31.7
启动Zookeepr容器。
dockerrun-d\
-p2181:
2181\
-p2888:
2888\
-p3888:
3888\
garland/zookeeper
启动MesosMaster容器。
dockerrun--net="host"\
-p5050:
5050\
-e"MESOS_HOSTNAME=${HOST_IP}"\
-e"MESOS_IP=${HOST_IP}"\
-e"MESOS_ZK=zk:
//${HOST_IP}:
2181/mesos"\
-e"MESOS_PORT=5050"\
-e"MESOS_LOG_DIR=/var/log/mesos"\
-e"MESOS_QUORUM=1"\
-e"MESOS_REGISTRY=in_memory"\
-e"MESOS_WORK_DIR=/var/lib/mesos"\
-d\
garland/mesosphere-docker-mesos-master
启动Marathon。
dockerrun\
-d\
-p8080:
8080\
garland/mesosphere-docker-marathon--masterzk:
//${HOST_IP}:
2181/mesos--zkzk:
//${HOST_IP}:
2181/marathon
启动Mesosslave容器。
dockerrun-d\
--namemesos_slave_1\
--entrypoint="mesos-slave"\
-e"MESOS_MASTER=zk:
//${HOST_IP}:
2181/mesos"\
-e"MESOS_LOG_DIR=/var/log/mesos"\
-e"MESOS_LOGGING_LEVEL=INFO"\
garland/mesosphere-docker-mesos-master:
latest
接下来,可以通过访问本地8080端口来使用Marathon启动任务了。
配置说明
ZooKeepr
ZooKeepr是一个分布式应用的协调工具,用来管理多个Master节点的选举和冗余,监听在2181端口。
配置文件在/etc/zookeeper/conf/目录下。
首先,要修改myid,手动为每一个节点分配一个自己的id(1-255之间)。
zoo.cfg是主配置文件,主要修改如下的三行(如果你启动三个zk节点)。
server.1=zookeeper1:
2888:
3888
server.2=zookeeper2:
2888:
3888
server.3=zookeeper3:
2888:
3888
主机名需要自己替换,并在/etc/hosts中更新。
第一个端口负责从节点连接到主节点的;第二个端口负责主节点的选举通信。
Mesos
Mesos的默认配置目录分别为:
∙/etc/mesos:
共同的配置文件,最关键的是zk文件;
∙/etc/mesos-master:
主节点的配置,等价于启动mesos-master时候的默认选项;
∙/etc/mesos-slave:
从节点的配置,等价于启动mesos-master时候的默认选项。
主节点
首先在所有节点上修改/etc/mesos/zk,为主节点的zookeeper地址列表,例如:
zk:
//ip1:
2181,ip2:
2181/mesos
创建/etc/mesos-master/ip文件,写入主节点监听的地址。
还可以创建/etc/mesos-master/cluster文件,写入集群的别名。
之后,启动服务:
sudoservicemesos-masterstart
更多选项可以参考这里。
从节点
在从节点上,修改/etc/mesos-slave/ip文件,写入跟主节点通信的地址。
之后,启动服务。
sudoservicemesos-slavestart
更多选项可以参考这里。
此时,通过浏览器访问本地5050端口,可以看到节点信息。
Marathon
启动marathon服务。
sudoservicemarathonstart
启动成功后,在mesos的web界面的frameworks标签页下面将能看到名称为marathon的框架出现。
同时可以通过浏览器访问8080端口,看到marathon的管理界面。
此时,可以通过界面或者RESTAPI来创建一个应用,Marathon会保持该应用的持续运行。
Mesos基本原理与架构
首先,Mesos自身只是一个资源调度框架,并非一整套完整的应用管理平台,本身是不能干活的。
但是它可以比较容易的跟各种应用管理或者中间件平台整合,一起工作,提高资源使用效率。
架构
master-slave架构,master使用zookeeper来做HA。
master单独运行在管理节点上,slave运行在各个计算任务节点上。
各种具体任务的管理平台,即framework跟master交互,来申请资源。
基本单元
master
负责整体的资源调度和逻辑控制。
slave
负责汇报本节点上的资源给master,并负责隔离资源来执行具体的任务。
隔离机制当然就是各种容器机制了。
framework
framework是实际干活的,包括两个主要组件:
∙scheduler:
注册到主节点,等待分配资源;
∙executor:
在slave节点上执行本framework的任务。
framework分两种:
一种是对资源需求可以scaleup或者down的(Hadoop、Spark);一种是对资源需求大小是固定的(MPI)。
调度
对于一个资源调度框架来说,最核心的就是调度机制,怎么能快速高效的完成对某个framework资源的分配(最好是能猜到它的实际需求)。
两层调度算法:
master先调度一大块资源给某个framework,framework自己再实现内部的细粒度调度。
调度机制支持插件。
默认是DRF。
基本调度过程
调度通过offer方式交互:
∙master提供一个offer(一组资源)给framework;
∙framework可以决定要不要,如果接受的话,返回一个描述,说明自己希望如何使用和分配这些资源(可以说明只希望使用部分资源,则多出来的会被master收回);
∙master则根据framework的分配情况发送给slave,以使用framework的executor来按照分配的资源策略执行任务。
过滤器
framework可以通过过滤器机制告诉master它的资源偏好,比如希望分配过来的offer有哪个资源,或者至少有多少资源。
主要是为了加速资源分配的交互过程。
回头机制
master可以通过回收计算节点上的任务来动态调整长期任务和短期任务的分布。
HA
master
master节点存在单点失效问题,所以肯定要上HA,目前主要是使用zookpeer来热备份。
同时master节点可以通过slave和framework发来的消息重建内部状态(具体能有多快呢?
这里不使用数据库可能是避免引入复杂度。
)。
framework通知
framework中相关的失效,master将发给它的scheduler来通知。
Mesos配置项解析
Mesos的 配置项 可以通过启动时候传递参数或者配置目录下文件的方式给出(推荐方式,一目了然)。
分为三种类型:
通用项(master和slave都支持),只有master支持的,以及只有slave支持的。
通用项
∙--ip=VALUE 监听的IP地址
∙--firewall_rules=VALUE endpoint防火墙规则,VALUE 可以是JSON格式或者存有JSON格式的文件路径。
∙--log_dir=VALUE 日志文件路径,默认不存储日志到本地
∙--logbufsecs=VALUE buffer多少秒的日志,然后写入本地
∙--logging_level=VALUE 日志记录的最低级别
∙--port=VALUE 监听的端口,master默认是5050,slave默认是5051。
master专属配置项
∙--quorum=VALUE 必备项,使用基于replicated-Log的注册表时,复制的个数
∙--work_dir=VALUE 必备项,注册表持久化信息存储位置
∙--zk=VALUE 必备项,zookeepr的接口地址,支持多个地址,之间用逗号隔离,可以为文件路径
∙--acls=VALUE ACL规则或所在文件
∙--allocation_interval=VALUE 执行allocation的间隔,默认为1sec
∙--allocator=VALUE 分配机制,默认为HierarchicalDRF
∙--[no-]authenticate 是否允许非认证过的framework注册
∙--[no-]authenticate_slaves 是否允许非认证过的slaves注册
∙--authenticators=VALUE 对framework或salves进行认证时的实现机制
∙--cluster=VALUE 集群别名
∙--credentials=VALUE 存储加密后凭证的文件的路径
∙--external_log_file=VALUE 采用外部的日志文件
∙--framework_sorter=VALUE 给定framework之间的资源分配策略
∙--hooks=VALUE master中安装的hook模块
∙--hostname=VALUE master节点使用的主机名,不配置则从系统中获取
∙--[no-]log_auto_initialize 是否自动初始化注册表需要的replicated日志
∙--modules=VALUE 要加载的模块,支持文件路径或者JSON
∙--offer_timeout=VALUE offer撤销的超时
∙--rate_limits=VALUE framework的速率限制,比如qps
∙--recovery_slave_removal_limit=VALUE 限制注册表恢复后可以移除或停止的slave数目,超出后master会失败,默认是100%
∙--slave_removal_rate_limit=VALUEslave 没有完成健康度检查时候被移除的速率上限,例如1/10mins代表每十分钟最多有一个
∙--registry=VALUE 注册表的持久化策略,默认为 replicated_log,还可以为 in_memory
∙--registry_fetch_timeout=VALUE 访问注册表失败超时
∙--registry_store_timeout=VALUE 存储注册表失败超时
∙--[no-]registry_strict 是否按照注册表中持久化信息执行操作,默认为false
∙--roles=VALUE 集群中framework可以所属的分配角色
∙--[no-]root_submissions root是否可以提交framework,默认为true
∙--slave_reregister_timeout=VALUE 新的leadmaster节点选举出来后,多久之内所有的slave需要注册,超时的salve将被移除并关闭,默认为10mins
∙--user_sorter=VALUE 在用户之间分配资源的策略,默认为drf
∙--webui_dir=VALUE webui实现的文件目录所在,默认为 /usr/local/share/mesos/webui
∙--weights=VALUE 各个角色的权重
∙--whitelist=VALUE 文件路径,包括发送offer的slave名单,默认为None
∙--zk_session_timeout=VALUE session超时,默认为10secs
∙--max_executors_per_slave=VALUE 配置了 --with-network-isolator 时可用,限制每个slave同时执行任务个数
slave专属配置项
∙--master=VALUE 必备项,master所在地址,或zookeeper地址,或文件路径,可以是列表
∙--attributes=VALUE 机器属性
∙--authenticatee=VALUE 跟master进行认证时候的认证机制
∙--[no-]cgroups_enable_cfs 采用CFS进行带宽限制时候对CPU资源进行限制,默认为false
∙--cgroups_hierarchy=VALUE cgroups的目录根位置,默认为 /sys/fs/cgroup
∙--[no-]cgroups_limit_swap 限制内存和swap,默认为false,只限制内存
∙--cgroups_root=VALUE 根cgroups的名称,默认为mesos
∙--container_disk_watch_interval=VALUE 为容器进行硬盘配额查询的时间间隔
∙--containerizer_path=VALUE 采用外部隔离机制(--isolation=external)时候,外部容器机制执行文件路径
∙--containerizers=VALUE 可用的容器实现机制,包括mesos、external、docker
∙--credential=VALUE 加密后凭证,或者所在文件路径
∙--default_container_image=VALUE 采用外部容器机制时,任务缺省使用的镜像
∙--default_container_info=VALUE 容器信息的缺省值
∙--default_role=VALUE 资源缺省分配的角色
∙--disk_watch_interval=VALUE 硬盘使用情况的周期性检查间隔,默认为1mins
∙--docker=VALUE docker执行文件的路径
∙--docker_remove_delay=VALUE 删除容器之前的等待时间,默认为6hrs
∙--[no-]docker_kill_orphans 清除孤儿容器,默认为true
∙--docker_sock=VALUE dockersock地址,默认为 /var/run/docker.sock
∙--docker_mesos_image=VALUE 运行slave的docker镜像,如果被配置,docker会假定slave运行在一个docker容器里
∙--docker_sandbox_directory=VALUE sandbox映射到容器里的哪个路径
∙--docker_stop_timeout=VALUE 停止实例后等待多久执行kill操作,默认为0secs
∙--[no-]enforce_container_disk_quota 是否启用容器配额限制,默认为false
∙--executor_registration_timeout=VALUE 执行应用最多可以等多久再注册到slave,否则停止它,默认为1mins
∙--executor_shutdown_grace_period=VALUE 执行应用停止后,等待多久,默认为5secs
∙--external_log_file=VALUE 外部日志文件
∙--frameworks_home=VALUE 执行应用前添加的相对路径,默认为空
∙--gc_delay=VALUE 多久清理一次执行应用目录,默认为1weeks
∙--gc_disk_headroom=VALUE 调整计算最大执行应用目录年龄的硬盘留空量,默认为0.1
∙--hadoop_home=VALUE hadoop安装目录,默认为空,会自动查找HADOOP_HOME或者从系统路径中查找
∙--hooks=VALUE 安装在master中的hook模块列表
∙--hostname=VALUE slave节点使用的主机名
∙--isolation=VALUE 隔离机制,例如 posix/cpu,posix/mem(默认)或者 cgroups/cpu,cgroups/mem
∙--launcher_dir=VALUE mesos可执行文件的路径,默认为 /usr/local/lib/mesos
∙--modules=VALUE 要加载的模块,支持文件路径或者JSON
∙--perf_duration=VALUE perf采样时长,必须小于perf_interval,默认为10secs
∙--perf_events=VALUE perf采样的事件
∙--perf_interval=VALUE perf采样的时间间隔
∙--recover=VALUE 回复后是否重连上旧的执行应用
∙--recovery_timeout=VALUE slave恢复时的超时,太久则所有相关的执行应用将自行退出,默认为15mins
∙--registration_backoff_factor=VALUE 跟master进行注册时候的重试时间间隔算法的因子,默认为1secs,采用随机指数算法,最长1mins
∙--resource_monitoring_interval=VALUE 周期性监测执行应用资源使用情况的间隔,默认为1secs
∙--resources=VALUE 每个slave可用的资源
∙--slave_subsystems=VALUE slave运行在哪些cgroup子系统中,包括memory,cpuacct等,缺省为空
∙--[no-]strict 是否认为所有错误都不可忽略,默认为true
∙--[no-]switch_user 用提交任务的用户身份来运行,默认为true
∙--fetcher_cache_size=VALUE fetcher的cache大小,默认为2GB
∙--fetcher_cache_dir=VALUE fetchercache文件存放目录,默认为/tmp/mesos/fetch
∙--work_dir=VALUE framework的工作目录,默认为/tmp/mesos
下面的选项需要配置 --with-network-isolator 一起使用
∙--ephemeral_ports_per_container=VALUE 分配给一个容器的临时端口,默认为1024
∙--eth0_name=VALUE public网络的接口名称,如果不指定,根据主机路由进行猜测
∙--lo_name=VALUE loopback网卡名称
∙--eg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Docker Mesos 项目