MesosおよびMarathon環境でのNetScaler CPXの展開

この展開では、MesosおよびMarathon環境を使用して、アプリケーションの起動や、スケールアップまたはスケールダウンを行えます。Mesosでは、分散アプリケーションまたはフレームワーク間のリソース分離およびリソース共有ができます。Marathonは、アプリケーションの起動や、スケールアップまたはスケールダウンを行えるアプリケーションオーケストレーションフレームワークです。MesosとMarathonについて詳しくは、https://docs.mesosphere.com/gettingstarted/overview/を参照してください。

MesosおよびMarathon環境でNetScaler CPXを展開するには、次のタスクを完了する必要があります。

  1. MesosおよびMarathonのマスター-スレーブクラスターをセットアップします。各アプリケーションとNetScaler CPXインスタンスをUbuntuホスト上に構成し、これらのホストをMesosスレーブとして構成する必要があります。1つのUbuntuホストをMesosマスターとして構成し、Mesosマスター上にMarathonをインストールする必要があります。詳しくは、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スレーブとその他のリソースをアプリケーションに割り当てます。次に、割り当てられたMesosスレーブ上でMarathonがアプリケーションを起動します。この例のCPX、App1、およびApp2は、それぞれUbuntuホストUH2、UH3、およびUH4で起動されます。

Marathon CLIまたはMarathon GUIを使用して、アプリケーションとNetScaler CPXインスタンスを起動できます。

Marathon CLIを使用した、アプリケーションとNetScaler CPXの起動

アプリケーションまたはNetScaler CPXインスタンスを起動するには、JSONスクリプトを作成する必要があります。JSONスクリプトには、ID、インスタンス数、コンテナの種類、アプリケーションイメージファイル名、ポートマッピング、ネットワーク、ラベル、およびヘルスチェックの仕様などの詳細を含める必要があります。JSONスクリプトを作成したら、Mesosマスターで実行してアプリケーションと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 GUIにアクセスするには、ブラウザーでMarathon IPアドレスとポートを入力します。デフォルトでは、Marathonポートは8080です。

アプリケーションとNetScaler CPXインスタンスを起動するには:

  1. Marathon GUIにログオンします。

  2. [Applications] タブの左上ペインで、[Create] をクリックします。

  3. [New Application] 画面の [Docker container settings][Environment variables][Labels][Health checks]、および [Optional settings] の各セクションでパラメーターを指定します。

ローカライズされた画像

注:

MesosおよびMarathon環境では、ホストネットワークモードでのNetScaler CPXインスタンスの実行のみがサポートされます。このため、NetScaler CPXインスタンスを起動する場合は、[Docker container settings]セクションの[Network]一覧で、[Host]を選択します。

1.[+ Create] をクリックします。

  1. 起動したアプリケーションが [Applications] に表示されます。

ローカライズされた画像