Docker Mesos 项目.docx_第1页
Docker Mesos 项目.docx_第2页
Docker Mesos 项目.docx_第3页
Docker Mesos 项目.docx_第4页
Docker Mesos 项目.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Docker Mesos项目简介Mesos 是一个集群资源的自动调度平台,Apache 开源项目,它的定位是要做数据中心操作系统的内核。目前由 Mesosphere 公司维护,更多信息可以自行查阅Mesos 项目地址或Mesosphere。Mesos + Marathon 安装与使用Marathon 是可以跟 Mesos 一起协作的一个 framework,用来运行持久性的应用。安装一共需要安装四种组件,mesos-master、marathon、zookeeper 需要安装到所有的主节点,mseos-slave 需要安装到从节点。mesos 利用 zookper 来进行主节点的同步,以及从节点发现主节点的过程。源码编译下载源码git clone /repos/asf/mesos.git安装依赖#jdk-7sudo apt-get update & sudo apt-get install -y openjdk-7-jdk#autotoolssudo apt-get install -y autoconf libtool#Mesos dependencies.sudo apt-get -y install build-essential python-dev python-boto libcurl4-nss-dev libsasl2-dev maven libapr1-dev libsvn-dev编译&安装$ cd mesos# Bootstrap (Only required if building from git repository).$ ./bootstrap$ mkdir build$ cd build & ./configure$ make$ make check & make install软件源安装以 ubuntu 系统为例。安装 Docker,不再赘述,可以参考这里。# Setupsudo apt-key adv -keyserver -recv E56151BFDISTRO=$(lsb_release -is | tr :upper: :lower:)CODENAME=$(lsb_release -cs)# Add the repositoryecho deb http:/repos.mesosphere.io/$DISTRO $CODENAME main | sudo tee /etc/apt/sources.list.d/mesosphere.listsudo apt-get -y update & sudo apt-get -y install zookeeper mesos marathon基于 Docker将基于如下镜像: ZooKeeper:/u/garland/zookeeper/ Mesos:/u/garland/mesosphere-docker-mesos-master/ Marathon:/u/garland/mesosphere-docker-marathon/其中 mesos-master 镜像将作为 master 和 slave 容器使用。导出本地机器的地址到环境变量。HOST_IP=启动 Zookeepr 容器。docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 garland/zookeeper启动 Mesos Master 容器。docker run -net=host -p 5050: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。docker run -d -p 8080:8080 garland/mesosphere-docker-marathon -master zk:/$HOST_IP:2181/mesos -zk zk:/$HOST_IP:2181/marathon启动 Mesos slave 容器。docker run -d -name mesos_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 启动任务了。配置说明ZooKeeprZooKeepr 是一个分布式应用的协调工具,用来管理多个 Master 节点的选举和冗余,监听在 2181 端口。配置文件在 /etc/zookeeper/conf/ 目录下。首先,要修改 myid,手动为每一个节点分配一个自己的 id(1-255之间)。zoo.cfg 是主配置文件,主要修改如下的三行(如果你启动三个 zk 节点)。server.1=zookeeper1:2888:3888server.2=zookeeper2:2888:3888server.3=zookeeper3:2888:3888主机名需要自己替换,并在 /etc/hosts 中更新。第一个端口负责从节点连接到主节点的;第二个端口负责主节点的选举通信。MesosMesos 的默认配置目录分别为: /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 文件,写入集群的别名。之后,启动服务:sudo service mesos-master start更多选项可以参考这里。从节点在从节点上,修改 /etc/mesos-slave/ip 文件,写入跟主节点通信的地址。之后,启动服务。sudo service mesos-slave start更多选项可以参考这里。此时,通过浏览器访问本地 5050 端口,可以看到节点信息。Marathon启动 marathon 服务。sudo service marathon start启动成功后,在 mesos 的 web界面的 frameworks 标签页下面将能看到名称为 marathon 的框架出现。同时可以通过浏览器访问 8080 端口,看到 marathon 的管理界面。此时,可以通过界面或者 REST API 来创建一个应用,Marathon 会保持该应用的持续运行。Mesos 基本原理与架构首先,Mesos 自身只是一个资源调度框架,并非一整套完整的应用管理平台,本身是不能干活的。但是它可以比较容易的跟各种应用管理或者中间件平台整合,一起工作,提高资源使用效率。架构master-slave 架构,master 使用 zookeeper 来做 HA。master 单独运行在管理节点上,slave 运行在各个计算任务节点上。各种具体任务的管理平台,即 framework 跟 master 交互,来申请资源。基本单元master负责整体的资源调度和逻辑控制。slave负责汇报本节点上的资源给 master,并负责隔离资源来执行具体的任务。隔离机制当然就是各种容器机制了。frameworkframework 是实际干活的,包括两个主要组件: scheduler:注册到主节点,等待分配资源; executor:在 slave 节点上执行本framework 的任务。framework 分两种:一种是对资源需求可以 scale up 或者 down 的(Hadoop、Spark);一种是对资源需求大小是固定的(MPI)。调度对于一个资源调度框架来说,最核心的就是调度机制,怎么能快速高效的完成对某个 framework 资源的分配(最好是能猜到它的实际需求)。两层调度算法:master 先调度一大块资源给某个 framework,framework 自己再实现内部的细粒度调度。调度机制支持插件。默认是 DRF。基本调度过程调度通过 offer 方式交互: master 提供一个 offer(一组资源) 给 framework; framework 可以决定要不要,如果接受的话,返回一个描述,说明自己希望如何使用和分配这些资源(可以说明只希望使用部分资源,则多出来的会被 master 收回); master 则根据 framework 的分配情况发送给 slave,以使用 framework 的 executor 来按照分配的资源策略执行任务。过滤器framework 可以通过过滤器机制告诉 master 它的资源偏好,比如希望分配过来的 offer 有哪个资源,或者至少有多少资源。主要是为了加速资源分配的交互过程。回头机制master 可以通过回收计算节点上的任务来动态调整长期任务和短期任务的分布。HAmastermaster 节点存在单点失效问题,所以肯定要上 HA,目前主要是使用 zookpeer 来热备份。同时 master 节点可以通过 slave 和 framework 发来的消息重建内部状态(具体能有多快呢?这里不使用数据库可能是避免引入复杂度。)。framework 通知framework 中相关的失效,master 将发给它的 scheduler 来通知。Mesos 配置项解析Mesos 的配置项可以通过启动时候传递参数或者配置目录下文件的方式给出(推荐方式,一目了然)。分为三种类型:通用项(master 和 slave 都支持),只有 master 支持的,以及只有 slave 支持的。通用项 -ip=VALUE监听的 IP 地址 -firewall_rules=VALUEendpoint 防火墙规则,VALUE可以是 JSON 格式或者存有 JSON 格式的文件路径。 -log_dir=VALUE日志文件路径,默认不存储日志到本地 -logbufsecs=VALUEbuffer 多少秒的日志,然后写入本地 -logging_level=VALUE日志记录的最低级别 -port=VALUE监听的端口,master 默认是 5050,slave 默认是 5051。master 专属配置项 -quorum=VALUE必备项,使用基于 replicated-Log 的注册表时,复制的个数 -work_dir=VALUE必备项,注册表持久化信息存储位置 -zk=VALUE必备项,zookeepr 的接口地址,支持多个地址,之间用逗号隔离,可以为文件路径 -acls=VALUEACL 规则或所在文件 -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=VALUEmaster 中安装的 hook 模块 -hostname=VALUEmaster 节点使用的主机名,不配置则从系统中获取 -no-log_auto_initialize是否自动初始化注册表需要的 replicated 日志 -modules=VALUE要加载的模块,支持文件路径或者 JSON -offer_timeout=VALUEoffer 撤销的超时 -rate_limits=VALUEframework 的速率限制,比如 qps -recovery_slave_removal_limit=VALUE限制注册表恢复后可以移除或停止的 slave 数目,超出后 master 会失败,默认是 100% -slave_removal_rate_limit=VALUE slave没有完成健康度检查时候被移除的速率上限,例如 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_submissionsroot 是否可以提交 framework,默认为 true -slave_reregister_timeout=VALUE新的 lead master 节点选举出来后,多久之内所有的 slave 需要注册,超时的 salve 将被移除并关闭,默认为 10mins -user_sorter=VALUE在用户之间分配资源的策略,默认为 drf -webui_dir=VALUEwebui 实现的文件目录所在,默认为/usr/local/share/mesos/webui -weights=VALUE各个角色的权重 -whitelist=VALUE文件路径,包括发送 offer 的 slave 名单,默认为 None -zk_session_timeout=VALUEsession 超时,默认为 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=VALUEcgroups 的目录根位置,默认为/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=VALUEdocker 执行文件的路径 -docker_remove_delay=VALUE删除容器之前的等待时间,默认为 6hrs -no-docker_kill_orphans清除孤儿容器,默认为 true -docker_sock=VALUEdocker sock 地址,默认为/var/run/docker.sock -docker_mesos_image=VALUE运行 slave 的 docker 镜像,如果被配置,docker 会假定 slave 运行在一个 docker 容器里 -docker_sandbox_directory=VALUEsandbox 映射到容器里的哪个路径 -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=VALUEhadoop 安装目录,默认为空,会自动查找 HADOOP_HOME 或者从系统路径中查找 -hooks=VALUE安装在 master 中的 hook 模块列表 -hostname=VALUEslave 节点使用的主机名 -isolation=VALUE隔离机制,例如posix/cpu,posix/mem(默认)或者cgroups/cpu,cgroups/mem -launcher_dir=VALUEmesos 可执行文件的路径,默认为/usr/local/lib/mesos -modules=VALUE要加载的模块,支持文件路径或者 JSON -perf_duration=VALUEperf 采样时长,必须小于 perf_interval,默认为 10secs -perf_events=VALUEperf 采样的事件 -perf_interval=VALUEperf 采样的时间间隔 -recover=VALUE回复后是否重连上旧的执行应用 -recovery_timeout=VALUEslave 恢复时的超时,太久则所有相关的执行应用将自行退出,默认为 15mins -registration_backoff_factor=VALUE跟 master 进行注册时候的重试时间间隔算法的因子,默认为 1secs,采用随机指数算法,最长 1mins -resource_monitoring_interval=VALUE周期性监测执行应用资源使用情况的间隔,默认为 1secs -resources=VALUE每个 slave 可用的资源 -slave_subsystems=VALUEslave 运行在哪些 cgroup 子系统中,包括 memory,cpuacct 等,缺省为空 -no-strict是否认为所有错误都不可忽略,默认为 true -no-switch_user用提交任务的用户身份来运行,默认为 true -fetcher_cache_size=VALUEfetcher 的 cache 大小,默认为 2 GB -fetcher_cache_dir=VALUEfetcher cache 文件存放目录,默认为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论