Product Documentation

在 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