教程 - 使用 CPU 和内存的自动扩展 Marathon 服务

使用 CPU 和内存自动扩展 Marathon 服务

重要: Mesosphere 不支持本教程、相关脚本或命令,它们不提供任何形式的保证。本教程的目的是为了演示功能,可能不适合在生产环境中使用。在您的环境中使用类似的解决方案之前,您必须进行调整、验证和测试。

您可以使用 Python 服务 marathon-autoscale.py 根据 Mesos 报告的利用率指标自动扩展您的 Marathon 应用程序。您可以从 DC/OS 群集中运行此服务。marathon-autoscale.py 旨在演示在 DC/OS 上运行服务时可能出现的情况。

marathon-autoscale.py 将定期监控组成指定 Marathon 服务的所有任务的总 CPU 和内存利用率。达到阈值时,marathon-autoscale.py 将增加您 Marathon 服务的任务数量。

先决条件

在节点上安装 Marathon Autoscale 应用程序

通过 SSH 连接到您将运行 marathon-autoscale.py 并安装它的系统。

  1. SSH 到您要运行的节点marathon-autoscale.py,其中节点 ID(<mesos-id>)是您要运行该应用程序的节点。

    dcos node ssh --master-proxy --mesos-id=<mesos-id>
    

    运行 dcos node 以获取可用的节点 ID。

  2. autoscale Github r存储库 克隆到您的节点。

    git clone https://github.com/mesosphere/marathon-autoscale.git
    

运行 Autoscale 应用程序

  1. 导航至 marathon-autoscale 存储库:

    cd marathon-autoscale
    
  2. 输入此命令以运行应用程序:

    python marathon-autoscale.py
    

    系统将提示您查看以下参数:

    # Fully qualified domain name or IP of the Marathon host (without http://).
    Enter the DNS hostname or IP of your Marathon Instance : ip-**-*-*-***
    # The name of the Marathon app to autoscale (without "/").
    Enter the Marathon Application Name to Configure Autoscale for from the Marathon UI : testing
    # The percentage of average memory utilization across all tasks for the target Marathon app before scaleout is triggered.
    Enter the Max percent of Mem Usage averaged across all Application Instances to trigger Autoscale (ie. 80) : 5
    # The average CPU time across all tasks for the target Marathon app before scaleout is triggered.
    Enter the Max percent of CPU Usage averaged across all Application Instances to trigger Autoscale (ie. 80) : 5
    # 'or' or 'and' determines whether both CPU and memory must be triggered or just one or the other.
    Enter which metric(s) to trigger Autoscale ('and', 'or') : or
    # The number by which current instances will be multiplied. This determines how many instances to add during scaleout.
    Enter Autoscale multiplier for triggered Autoscale (ie 1.5) : 2
    # The ceiling for the number of instances to stop scaling out EVEN if thresholds are crossed.
    Enter the Max instances that should ever exist for this application (ie. 20) : 10
    

欲了解更多信息,请参阅 Marathon-Autoscale GitHub 存储库。