在 Mesos 和 Marathon 环境中部署 NetScaler CPX

2016 年 6 月 30 日

在此部署中,可以使用 Mesos 和 Marathon 环境来启动和扩大或缩小您的应用程序。Mesos 支持在分布的应用程序或框架之间隔离和共享资源。Marathon 是应用程序调配框架,可以启动和扩大或缩小您的应用程序。有关 Mesos 和 Marathon 的详细信息,请参阅 https://docs.mesosphere.com/gettingstarted/overview/

要在 Mesos 和 Marathon 环境中部署 NetScaler CPX,必须完成以下任务:

  1. 设置 Mesos 和 Marathon 主从群集。必须在 Ubuntu 主机上配置每个应用程序和 NetScaler CPX 实例,且这些主机必须配置为 Mesos 从属主机。必须将 Ubuntu 主机配置为 Mesos 主要主机,并将 Marathon 安装在 Mesos 主要主机上。有关详细信息,请参阅 https://open.mesosphere.com/getting-started/install/
  2. 必须将您的应用程序和 NetScaler CPX 实例的映像存储在所有 Mesos 从属主机上。
  3. 之后可以使用 Marathon CLI 或 Marathon GUI 启动您的应用程序和 NetScaler CPX 实例。请注意,Marathon 是将 NetScaler CPX 实例作为应用程序启动。有关在 Marathon 上运行应用程序的详细信息,请参阅 https://mesosphere.github.io/marathon/docs/application-basics.html

下图说明了在 Mesos 和 Marathon 环境中所做的 NetScaler CPX 部署。

本地化后的图片

在此示例中,UH1 是配置为 Mesos 主要主机的 Ubuntu 主机。Ubuntu 主机 UH2、UH3 和 UH4 配置为 Mesos 从属主机。Marathon 安装在 Mesos 主要主机上。App1 和 App2 是您希望您的 NetScaler CPX 执行负载平衡的应用程序。为了启动应用程序,Mesos 主要主机为应用程序分配 Mesos 从属主机和其他资源,然后 Marathon 在分配的 Mesos 从属主机上启动应用程序。在此示例中,CPX、App1 和 App2 分别在 Ubuntu 主机 UH2、UH3 和 UH4 上启动。

可以使用 Marathon CLI 或 Marathon GUI 启动您的应用程序和 NetScaler CPX 实例。

使用 Marathon CLI 启动应用程序和 NetScaler CPX 实例

要启动应用程序或 NetScaler CPX 实例,必须编写 JSON 脚本。JSON 脚本必须包含 ID、实例数、容器类型、应用程序映像文件名、端口映射、网络、标签和运行状况检查规范之类的详细信息。之后必须在 Mesos 主要主机上运行 JSON 脚本以启动应用程序和 NetScaler CPX 实例。

要启动应用程序和 NetScaler CPX 实例,请执行以下操作

1. 为您要启动的每个应用程序和 NetScaler CPX 实例编写 JSON 脚本。

     例如,要启动应用程序,按以下示例脚本所示编写 JSON 脚本:

    {
      "id": "web-backend",
      "cpus": 0.1,
      "mem": 100.0,
      "instances": 2,
      "container": {
        "type": "DOCKER",
        "docker": {
          "image": "nginx_backend:latest",
          "forcePullImage": false,
          "network": "BRIDGE",
          "portMappings": [
            { "containerPort": 80, "hostPort": 0, "servicePort": 20002, "protocol": "tcp" }
          ]
        }
      },
      "labels": {
              "NETSCALER_GROUP":"BACKEND"
      },
      "healthChecks": [
        {
          "protocol": "HTTP",
          "portIndex": 0,
          "path": "/",
          "gracePeriodSeconds": 5,
          "intervalSeconds": 20,
          "maxConsecutiveFailures": 3
        }
      ]
    }

重要:

对于应用程序,请勿将标签设置为 NETSCALER_CPX。如果对于某个应用程序,您将标签参数设置为 NETSCALER_CPX,您就无法对 NetScaler CPX 实例配置该应用程序。

     例如,要启动 NetScaler CPX 实例,按以下示例脚本所示编写 JSON 脚本:

    {
      "id": "cpx",
      "cpus": 0.25,
      "mem": 512,
      "instances": 2,
      "container": {
        "type": "DOCKER",
        "docker": {
          "image": "cpx:10.5-53.535",
          "network": "HOST",
          "privileged": true,
          "parameters": [
            { "key": "tty", "value": "true" },
            { "key": "env", "value": "NS_NETMODE=HOST" },
            { "key": "env", "value": "NETSCALER_GROUP=BACKEND" },
            { "key": "env", "value": "marathon_url=http://10.102.103.222:8080" }
          ]
        }
      },
      "labels": {
              "NETSCALER_AS_APP": "true"
      }

    }

注意:

在 Mesos 和 Marathon 环境中,仅支持在主机网络连接模式下运行 NetScaler CPX 实例。因此,在 JSON 脚本中,必须将网络参数值设置为 HOST

2. 在 Mesos 主要主机上,运行以下命令来执行 JSON 脚本:

curl -X POST http://<Marathon_IP_Address>:<Marathon port>/v2/apps -d @<JSON_Script_Name>.json -H "Content-type: application/json"

          此外,也可以使用以下 docker run 命令来启动 NetScaler CPX 实例:

docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" --ulimit core=-1 -e marathon_url=“http://<Marathon_IP_Address>:<Marathon port>" cpx:7

          如果 Marathon 需要身份验证,可以使用以下 docker run 命令:

docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" --ulimit core=-1 marathon_url=“http://<Marathon_IP_Address>:<Marathon port>" –e marathon_user=abcd –e marathon_password=secret cpx:7

使用 Marathon GUI 启动应用程序和 NetScaler CPX 实例

可以在浏览器中键入 Marathon IP 地址和端口来访问 Marathon GUI。默认情况下,Marathon 端口是 8080。

要启动应用程序和 NetScaler CPX 实例,请执行以下操作

  1. 登录 Marathon GUI。

  2. Applications(应用程序)选项卡上的左上窗格中,单击 Create(创建)。

  3. New Application(新建应用程序)屏幕中的 Docker container settings(Docker 容器设置)、Environment variables(环境变量)、Labels(标签)、Health checks(运行状况检查)和 Optional settings(可选设置)部分中指定参数。

本地化后的图片

注意:

在 Mesos 和 Marathon 环境中,仅支持在主机网络连接模式下运行 NetScaler CPX 实例。因此,如果要启动 NetScaler CPX 实例,请在“Docker container settings”(Docker 容器设置)部分的“Network”(网络)列表中选择“Host”(主机)。

4. 单击 + Create(+ 创建)。

5. 启动的应用程序显示在 Applications(应用程序)下。

本地化后的图片

在 Mesos 和 Marathon 环境中部署 NetScaler CPX