marathon, 在scale的顶层,部署和管理容器( 包括 Docker )

分享于 

16分钟阅读

GitHub

  繁體 雙語
Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
  • 源代码名称:marathon
  • 源代码网址:http://www.github.com/mesosphere/marathon
  • marathon源代码文档
  • marathon源代码下载
  • Git URL:
    git://www.github.com/mesosphere/marathon.git
    Git Clone代码到本地:
    git clone http://www.github.com/mesosphere/marathon
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/mesosphere/marathon
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    马拉松Build StatusIssues

    马拉松是一个生产证明 Apache框架用于容器编排。dc/os 是开始使用马拉松的最简单方式。 问题是在 JIRA中的轨迹。

    马拉松为启动。停止和缩放应用程序提供了一个 REST API 插件。 马拉松是用 Scala 编写的,可以运行多个副本在高可用模式下运行。 运行任务的状态被存储在Mesos状态抽象中。

    马拉松是一个元框架: 你可以启动其他Mesos框架,比如Chronos或者 Storm,以确保它们能够在机器故障。 它可以启动任何可以在标准 shell 中启动的东西。 实际上,你甚至可以通过马拉松来启动其他马拉松实例。

    Marathon版和Mesos版,你可以轻松地部署。运行和扩展 Docker 容器,方便地支持本地支持。

    特性

    • 如果你能运行任意数量的马拉松调度器,但是只有一个被选为领导者,你的请求就会被代理到当前领导者。
    • 约束 - 比如,每个 rack。node 等应用程序的一个实例。
    • 服务发现&负载平衡通过HAProxy或者事件 API ( 请参见下面)。
    • 运行状况检查: 通过HTTP或者TCP检查检查应用程序的健康状况。
    • 基于web的事件订阅允许你为接收通知提供HTTP端点,比如与外部负载均衡器集成。
    • 马拉松 UI。
    • json/REST API,便于集成和 scriptability
    • 基础认证和 SSL
    • 度量: 以JSON格式查询它们,或者将它们推至

    文档

    马拉松文档可以在马拉松GitHub网页站点上使用。

    关于安装和配置完整中间层栈的文档,包括Mesos和马拉松,可以在中间层网站上找到。

    问题跟踪

    马拉松使用 JIRA 跟踪问题。 你可以使用你的GitHub帐户浏览现有问题或者文件a。!

    对于GitHub问题的用户: 已经迁移并关闭所有现有问题,并将对相关 JIRA的引用添加为注释。 我们将GitHub问题留给我们参考。 请继续使用 JIRA

    我们竭诚欢迎有关马拉松文档的外部贡献。 文档应该提交到 master 分支,并使用文档/README.md 文档中的指令发布到我们的GitHub页面站点。

    设置和运行马拉松

    依赖项

    马拉松具有以下编译时依赖关系:

    • sbt - Scala的构建工具。 你可以在这里找到为 Mac OS X 和Linux安装sbt的说明,这里是。
    • JDK 1.8 +

    对于运行时间,马拉松具有以下依赖关系:

    • libmesos - 用于与Mesos主机通信的JNI绑定。 查看安装 Mesos 部分以获取有关获取libmesos的说明。
    • 你可以用一个单独的Zookeeper安装,或者你也可以使用Mesos使用的相同的动物园。

    安装

    正在开始使用 dc/os

    get跑马拉松最简单的方式是使用 dc/os。 马拉松被预先捆绑到 dc/os

    安装 Mesos

    马拉松需要 libmesos,一个共享对象库,它包含用于马拉松的JNI绑定和Mesos主机。 libmesos 作为 Apache Mesos安装的一部分。 安装Apache有三种选择。

    从预先打包的发行版中安装 Mesos

    关于如何安装Mesos发行版的说明在马拉松文档中提供了

    从源代码构建 Mesos

    注意:只有在构建马拉松的时候才选择这个选项,否则可能会有版本不兼容的马拉松版本和来自源代码的Mesos版本。

    你可以在的get中找到编译Mesos的指令。 如果希望Mesos在非缺省位置安装库和可执行文件,请在配置过程中使用--prefix选项,如下所示:

    ./configure --prefix=<path to Mesos installation>

    make install 将在安装目录中安装 libmesos ( Linux上的libmesos.so 和 Mac OS X 上的libmesos.dylib )。

    使用Mesos版本管理器

    注意:只有在构建马拉松的时候才选择这个选项,否则可能会有版本不兼容的马拉松版本和来自源代码的Mesos版本。

    Mesos版本管理器( mvm ) 编译。配置和管理Apache的多个版本。 它允许在版本之间快速切换,使它可以轻松地对不同版本的ipqos进行测试。

    先决条件

    Mesos版本管理器假定 Apache Mesos的所有依赖项都可以安装。
    有关如何设置构建环境的说明,请参考 Apache Mesos getting文档

    MVM默认使用SSL支持编译 Mesos,这需要安装openssl和 libevent。
    在 macOS 上,可以使用brew安装软件包: brew install openssl libevent
    在CentOS上,软件包可以使用yum安装: sudo yum install -y libevent-devel openssl-devel

    用法

    脚本可以按如下方式运行:

    
     cd marathon
    
    
     cd scripts
    
    
    . /mvm.sh <VERSION> [SHELL]
    
    
    
    

    以下命令将启动一个为 Mesos 1.2.0配置的bash shell: ./mvm.sh 1.2.0 bash

    你应该考虑将脚本放入 shell的PATH 文件夹中,如果你经常使用它的话。

    mvm脚本接受三种不同的格式作为版本名称:

    • Mesos库中的版本标签。 使用 ./mvm.sh --tags 来获取可用标签的列表。
    • 从Mesos知识库提交散列。
    • --latest 标志,自动选择最新的开发版本: ./mvm.sh --latest

    如果需要,MVM将自动下载 & Mesos。 然后它会生成一个新的bash shell,并激活Mesos的选择版本。
    有关详细信息,请参阅 ./mvm.sh --help

    注意 : 如果你想在关闭后使用 Mesos,你必须运行脚本。 有关如何永久配置 shell的信息,请参阅 ./mvm.sh --help 信息以避免。

    安装马拉松

    有关如何安装预打包版本的说明,请参阅马拉松文档中的 或者,你可以从源代码构建马拉松。

    基于源代码的

    要从源代码构建马拉松,请查看这里 repo 并使用sbt构建通用:

    
    git clone https://github.com/mesosphere/marathon.git
    
    
    cd marathon
    
    
    sbt 'run --master localhost:5050 --zk zk://localhost:2181/marathon'
    
    
    
    

    故障排除

    在检索本地计算机的IP地址失败时会导致错误,可能如下所示:

    Failed to obtain the IP address for '<local-machine>'; the DNS service may not be able to resolve it: nodename nor servname provided, or not known

    确保已经设置 LIBPROCESS_IP 环境变量。

    
    export LIBPROCESS_IP="127.0.0.1"
    
    
    
    

    如果未设置 MESOS_NATIVE_JAVA_LIBRARY 环境变量,则可能发生以下错误,

    java.lang.UnsatisfiedLinkError: no mesos in java.library.path...

    确保已经设置 MESOS_NATIVE_JAVA_LIBRARY 环境变量。

    
    export MESOS_NATIVE_JAVA_LIBRARY="/path/to/mesos/lib/libmesos.dylib"
    
    
    
    

    运行 sbt universal:packageZipTarball 以将马拉松打包为包含 bin/马拉松的txz文件。

    为本地马拉松 Docker 映像运行 sbt docker:publishLocal

    正在开发模式下运行

    Mesos本地模式允许你运行马拉松而无需启动整个Mesos集群。 它用于实验,而不推荐用于生产用途。 请注意,你仍然需要运行ZooKeeper来存储状态。 下面的命令在本地模式的Mesos上启动马拉松。 将你的网络浏览器指向 http://localhost:8080 以查看马拉松界面。

    
     mesos-local
    
    
     sbt 'run --master localhost:5050 --zk zk://localhost:2181/marathon'
    
    
    
    

    有关如何在生产和配置选项中运行马拉松的更多信息,请参阅文档

    开发马拉松

    有关如何在虚拟机内运行马拉松的文档,请参阅文档。

    在 Docker 上运行的

    • 注意:当前 Docker 容器因最新Mesos版本的奇怪行为而失败。 关于 work_dir的错误仍然是无法解析的,非常类似于:

      
       Failed to start a local cluster while loading agent flags from the environment: Flag 'work_dir' is required, but it was not provided
      
      
      
      

    构建它:

    
    sbt docker:publishLocal
    
    
    
    

    请注意版本 比如: [info] Built image mesosphere/marathon:1.5.0-SNAPSHOT-461-gf1cc63e => 1.5.0-SNAPSHOT-461-gf1cc63e

    如果没有一个正在运行的动物园zookeeper实例,则必须有一个可以用于以下用途的Docker 图像:

    
    docker run --name some-zookeeper --restart always -d zookeeper
    
    
    
    

    与动物园管理员容器一起运行:

    
    docker run --link some-zookeeper:zookeeper marathon-head --master local --zk zk://zookeeper:2181/marathon
    
    
    
    

    或者在没有管理员容器的情况下运行它:

    
    docker run marathon:{version} --master local --zk zk://localhost:2181/marathon
    
    
    
    

    如果要检查 Docker 容器的内容,请执行以下操作:

    
    docker run -it --entrypoint=/bin/bash marathon:{version} -s
    
    
    
    

    测试

    测试和集成通过以下方式测试运行:

    
    sbt test integration:test
    
    
    
    

    你必须设置Mesos测试IP并禁用Mac上的Docker 测试:

    
    MESOSTEST_IP_ADDRESS="127.0.0.1" 
    
    
    RUN_DOCKER_INTEGRATION_TESTS=false 
    
    
    RUN_MESOS_INTEGRATION_TESTS=false 
    
    
    sbt test integration:test
    
    
    
    

    Mac中不支持 Docker 集成测试。 测试开始和停止本地Mesos集群和马拉松实例。 有时在测试失败后进程泄露。 你可以用 ps aux | grep"python|java|mesos" 除非他们不属于生产环境,否则杀死所有 app_mock.py 进程。Mesos和马拉松实例。

    还可以看到 CI指令运行specfic构建管道目标。

    马拉松 UI

    在网络界面上开发马拉松用户界面的指令。

    马拉松客户

    使用马拉松的公司

    跨越所有的安装马拉松,在 100,000个上的节点上管理应用程序。 以下是一些使用它的公司:

    不在列表中打开请求请求并添加自己? !

    帮助

    你发现问题了? 你可以使用我们的 JIRA发布页面来报告它。 为了加速响应时间,我们要求你提供如何重现问题的详细信息。 如果问题在任何方式上与 web UI相关,我们请求你使用 gui 标签。

    如果你有问题,请在马拉松框架电子邮件列表中发帖。

    #marathon 频道,你可以找到马拉松支持,在 #mesos 通道中支持 Mesos,在 freenode ( IRC ) 上。 或者,也可以在 Mesos Slack中查看相同的频道 Slack。

    中的团队也很乐意回答任何问题。

    在发布之前,如果你想参与设计研究和测试新特性,请将你的NAME 添加到我们的研究下拉列表。

    作者

    马拉松由 Knaup和Florian Leibert created并继续由Mesosphere的团队和来自社区的许多贡献者 developed。

    确认

    YourKit,有限责任公司

    YourKit, LLC

    YourKit支持开放源代码项目,它的功能为 Java Profiler。 YourKit,LLC是 YourKit Java和YourKit. NET 分析器插件的创建者,是分析Java和. NET 应用程序的创新和智能工具。


    MAN  DOC  DEP  SCA  Docker  Apache  
    相关文章