序章

Rancher は、本番環境でコンテナーを実行および簡単に管理するための、オープンソースの自己ホスト型の完全なプラットフォームです。 Dockerイメージ自体であるため、RancherサーバーはDockerが使用可能なすべてのLinuxホストで動作します。

ランチャーを魅力的なソリューションにする主な機能のいくつかは次のとおりです。

  • クロスホストネットワーク:Rancherに追加されたすべてのサーバーがリンクされ、コンテナー間の安全な通信が可能になります。
  • 負荷分散:負荷分散サービスが含まれており、コンテナー間または複数のクラウド間でさえワークロードを分散します。
  • サービス検出:Rancherには内部DNSシステムが含まれており、コンテナーとサービスを名前で識別できるため、ネットワーク上の他のサービス内で使用できます。
  • インフラストラクチャ管理:Rancherを使用すると、任意のクラウドプロバイダーからのコンピューティングリソースを追加、監視、および管理できます。
  • オーケストレーションエンジン:Rancherは、Cattle、Swarm、Kubernetes、Mesosなどの最も人気のあるコンテナーオーケストレーションフレームワークをサポートする唯一のコンテナー管理プラットフォームです。 したがって、インフラストラクチャがこれらのフレームワークの1つですでに機能している場合は、Rancherを簡単に使用できます。
  • オープンソース:Rancherは無料で、オープンで、透過的です。 インフラストラクチャを完全に制御できます。

このガイドでは、 MongoDB を使用したデータストレージをサポートする、負荷分散されたNode.jsアプリケーションをデプロイするためのRancherクラスターを構築します。

このチュートリアルの最後に、単純なNode.jsアプリケーションの4つの負荷分散されたインスタンスと、永続ストレージ用に分離されたデータコンテナーを備えたMongoDBサーバーがあります。

前提条件

  • ランチャーがインストールされた1GBのUbuntu14.04ドロップレット。 ランチャーを使用して、それぞれ1GBのRAMを備えた6つの追加のドロップレットを作成します。 Ubuntu 14.04でRancherとDockerMachineを使用してマルチノード展開を管理する方法の前提条件とステップ1に従って、Rancherを使用して最初のドロップレットをセットアップします。
  • データストレージにMongoDBを使用するNode.jsアプリケーション。 Hapi.js ライブラリを使用した簡単な例を示します。これは、独自のアプリケーションをまだ準備していない場合に使用できます。 このサンプルアプリケーションは、このGithubリポジトリにあります。
  • Gitがローカルマシンにインストールされているため、サンプルアプリケーションのクローンを作成できます。 この前提条件を満たす必要がある場合は、公式のGitインストールドキュメントに従ってください。
  • Dockerがローカルマシンにインストールされているため、デプロイするアプリケーションイメージをビルドできます。 これについては、公式ドキュメントに従うことができます。
  • Docker Hub のアカウント。これは、Dockerイメージの無料のパブリックレジストリです。 ここでアプリケーションコードをホストし、Rancherを使用して複数のホストにデプロイできるようにします。 このチュートリアルの手順を完了するには、DockerHubのユーザー名が必要です。
  • 読み取りアクセスと書き込みアクセスの両方を備えたDigitalOceanアクセストークン。これは、 アプリケーションとAPI ページ。 追加のホストを作成するには、Rancherにトークンを入力する必要があるため、このトークンをコピーします。

また、コンテナ、イメージ、DockerfileなどのDockerの概念に関する基本的な知識も必要です。 Ubuntu16.04にDockerをインストールして使用する方法を参照してください。

ステップ1—Node.jsアプリケーションの探索

このチュートリアルでは、Hapi.jsフレームワークに基づく単純なNode.jsアプリケーションを使用して、メッセージを受信して記録し、以前に送信されたすべてのメッセージを一覧表示します。 アプリケーションがどのように機能し、構成値を受け取る方法を調べて、イメージを作成するときにDockerでそれらの値を設定できるようにします。

サーバーではなく、ローカル開発マシンでアプリケーションとDockerイメージを準備します。

次のコマンドを使用して、サンプルアプリケーションをローカルマシンに複製します。

  1. git clone https://github.com/do-community/hapi-example

次に、プロジェクトディレクトリに移動します。

  1. cd hapi-example

アプリケーションのメインファイルserver.jsを見てみましょう。 これには、MongoDB接続とサーバーを初期化するためのコードが含まれています。 このファイルをローカルのテキストエディタで開くと、次の内容が表示されます。

server.js
const Hapi = require('hapi');
const mongojs = require('mongojs');

// Loads environment variables
// Used only in development
require('dotenv').config({silent: true});

const server = new Hapi.Server();
server.connection({ port: process.env.PORT || 3000 });

// Connect with the database
server.app.db = mongojs(process.env.MONGO_HOST + '/api');

// Add the routes
server.register(require('./routes'), (err) => {

  if (err) {
    console.error('Failed to load plugin:', err);
  }

  // Start the server
  server.start((err) => {
    if (err) {
      throw err;
    }

    console.log('Server running at:', server.info.uri);
  });
});

ルートのコードは、このチュートリアルのスペースを節約するためにHapi.jsプラグインとしてカプセル化されていますが、興味がある場合は、ファイルroutes.jsを調べることができます。

server.jsファイルの重要な部分は次のとおりです。

require('dotenv').config({silent: true});

これは、dotenv Node.jsパッケージを使用して、.envファイルから環境変数をロードします。 dotenvパッケージのドキュメントを確認できます。 このファイルには、開発プロセスのためだけに変数を保存します。 ターミナルで変数を手動で書き込むよりも簡単です。 本番環境では、Rancherを介してDockerから変数を取得します。

次に、変数が定義されていない場合に備えて、PORTという環境変数を使用し、フォールバック値を3000にして、サーバーのポートを設定します。

server.connection({ port: process.env.PORT || 3000 });

ポート3000は、Node.jsアプリケーションの一般的な規則です。 この値は必要に応じて変更できます。 唯一の要件は、1023より上で65535より下である必要があることです。

最後に、ルートを読み込んでサーバーを起動する前に、MONGO_HOSTという環境変数を使用してMongoDBサーバーに接続します。

server.app.db = mongojs(process.env.MONGO_HOST + '/api');

この環境値は、MongoDBコンテナーを作成すると、MongoDBサーバーのホスト名を使用してRancherを介して定義されます。 値apiは、接続するデータベースの名前であり、データベースが存在しない場合は自動的に設定されます。

アプリが何を探しているのか、ポートとデータベース接続をどのように構成するのかについての背景がわかったところで、Dockerを紹介しましょう。

ステップ2—Dockerイメージを構築する

RancherはDockerイメージを使用してアプリケーションをサーバーにデプロイするので、アプリケーション用のDockerイメージを作成しましょう。 アプリのDockerイメージをビルドするには、Dockerfileというファイルが必要です。このファイルには、イメージをビルドするときにDockerが実行する一連の手順が含まれています。 このファイルは、複製したアプリケーションリポジトリにすでに含まれています。 その内容を見て、どのように機能するかを理解しましょう。 テキストエディタで開くと、次のコードが表示されます。

Dockerfile
FROM node:6
MAINTAINER James Kolce <[email protected]>

RUN mkdir -p /usr/api
COPY . /usr/api
WORKDIR /usr/api
RUN npm install --production

ENV PORT 3000
EXPOSE  $PORT

CMD ["npm", "start"]

各ステップを詳しく見ていきましょう。 まず、次の行が表示されます。

FROM node:6

この行は、DockerHubの公式Node.jsイメージの上にイメージが構築されていることを宣言しています。アプリはその中でのみ利用可能なES6機能を使用しているため、Node.jsのバージョン6を選択しています。バージョン以上。 アプリを壊す可能性のある変更を回避するために、本番環境で latest を使用するのではなく、特定のバージョンを選択することをお勧めします。

その行の後に、作業ディレクトリを設定します。

RUN mkdir -p /usr/api
COPY . /usr/api
WORKDIR /usr/api

まず、mkdirコマンドを実行して、アプリケーションが存在する/usr/apiという新しいディレクトリを作成します。 -pフラグは、mkdirが必要に応じて中間ディレクトリを作成することを意味します。 次に、画像の内容をそのディレクトリにコピーします。 次に、この新しいディレクトリを作業ディレクトリとして設定し、後続のコマンドがそのディレクトリから実行されるようにします。

次の行は、npmコマンドを実行し、アプリの本番依存関係をインストールします。

RUN npm install --production

次に、次の2行が表示されます。

ENV PORT 3000
EXPOSE  $PORT

最初の行は、アプリケーションがリスニングポートに使用するPORTという環境変数を定義しています。 この変数が定義されていない場合に備えて、デフォルト値として3000を設定します。 次に、そのポートを公開して、コンテナの外部からアクセスできるようにします。 環境変数を使用すると、アプリケーションコードを書き直すことなく、これを簡単に変更できます。 また、アプリケーションはこれらの環境変数を使用するように設計されていることを忘れないでください。

Dockerfileの最後のステップでは、Node.jsサーバーを実行します。

CMD ["npm", "start"]

このファイルからアプリケーションのDockerイメージを作成するには、ターミナルのhapi-exampleフォルダーにいることを確認し、次のコマンドを実行します。

  1. docker build -t your_dockerhub_username/hapi-example .

このコマンドは、Dockerfileを使用してDockerイメージを作成します。 コマンドの最後にあるドットに注意してください。 これは、現在のフォルダーにあるDockerfileへのパスを指定します。 -tフラグは画像のタグを設定し、タグにはyour_dockerhub_username/hapi-exampleを使用します。これは画像に適用するラベルであり、画像からコンテナインスタンスを作成するために使用できます。画像。 テスト後にこのイメージを公開する準備をしているため、Docker Hubのユーザー名をプレフィックスとして使用します。また、DockerイメージのローカルタグはDockerHubのリポジトリ名と一致する必要があります。

このコマンドを実行したときにCannot connect to the Docker daemon. Is the docker daemon running on this host?というメッセージが表示された場合は、Dockerアプリが実行されており、Dockerが起動していることを確認してください。 その後、コマンドを再実行してください。

次に、作成したイメージをテストして、すべてが期待どおりに機能していることを確認します。 前に見たように、アプリケーションはMongoDBに依存しているので、アプリがデータを格納するために使用できるMongoDBコンテナーを作成しましょう。 次のコマンドを実行して、公式のMongoDBDockerイメージに基づいてMongoDBコンテナーを作成して開始します。

  1. docker run --name testdb -p 27017:27017 -d mongo:3

--nameオプションを使用してコンテナに一時的な名前を割り当てます。 アプリケーションのテストが終了したら、その名前を使用してサーバーを停止します。 また、ホストポート27017をコンテナーによって公開されているポートにバインドして、ローカルWebブラウザーを使用してMongoDBが実行されていることをテストできるようにします。 最後に、使用する画像を指定します。 アプリケーションが開発されたのと同じバージョンのMongoDBを使用して、すべてが期待どおりに機能することを確認することをお勧めします。この場合、バージョン3を指定します。

そのコマンドを実行した後、ブラウザでhttp://localhost:27017にアクセスすると、MongoDBが実行されていることを意味するIt looks like you are trying to access MongoDB over HTTP on the native driver portというメッセージが表示されます。

次に、アプリケーションコンテナーを実行し、次のコマンドを実行して、アプリケーションコンテナーをMongoDBコンテナーにリンクします。

  1. docker run --name hapi-app -p 3000:3000 -d -e MONGO_HOST=testdb --link testdb your_dockerhub_username/hapi-example

このコマンドは、MongoDBコンテナーを起動するために使用したコマンドに似ていますが、今回はアプリケーションイメージ(your_dockerhub_username/hapi-example)を使用し、ホストのポート3000をコンテナーによって公開されたポートにマップします。 。 これは、Dockerfileを作成したときに使用したものと同じポートです。 また、データベースサーバーに接続するためにアプリケーションが使用するMongoDBコンテナーの名前を指定するMONGO_HOSTという環境変数を追加します。 --link testdbパラメーターを使用すると、データベースコンテナーの名前を、アプリケーションのコンテナー内のホストとして使用できます。

コマンドを実行した後、ブラウザでhttp://localhost:3000にアクセスしてアプリケーションをテストします。 エラーなしで空のページが表示されるはずです

http://localhost:3000にアクセスすると、Firefoxで空の配列([ ])またはJSONビューが表示される場合もあります。 これらの結果のどちらも大丈夫です。

Dockerイメージがローカルで機能することが証明されたので、ローカルコンテナーを停止して削除しましょう。 コンテナを削除することは、画像を削除することと同じではないことに注意してください。 イメージはそのまま残り、後でコンテナを再作成したり、イメージをRancherにプッシュしたりできます。これは、ローカル環境をクリーンアップした後に実行します。

まず、前に定義した名前を使用してデータベースコンテナを停止します。

  1. docker stop testdb

コンテナが停止したので、もう必要ないので、マシンからコンテナを削除できます。

  1. docker rm testdb

アプリケーションコンテナに対して同じ手順を繰り返します。 最初に停止してから削除します。

  1. docker stop hapi-app && docker rm hapi-app

それでは、Rancherで使用できるように、作業イメージを公開しましょう。

ステップ3—イメージをDockerHubにアップロードする

Rancherを使用してコンテナーをデプロイするには、 Dockerレジストリにアクセスする必要があります。ここで、Dockerイメージを格納するためのリポジトリを作成できます。 Dockerの公式レジストリであるDockerHubを使用します。 Docker Hubは、パブリックリポジトリに無料で使用できます。

ユーザー名とパスワードを使用してDockerHubにログインします。 ログインしたら、画面右側のリポジトリ作成ボタンをクリックします。 次のようにフィールドに入力します。

  • 名前(必須):リポジトリの名前。この場合はhapi-exampleです。
  • 説明:将来的に画像をすばやく識別するための簡単な説明。
  • 完全な説明:画像の参照としてここにマークダウンドキュメントを追加できますが、アプリケーションは非常に単純なので、このフィールドを空のままにしておくことができます。
  • 可視性:画像を、自分だけがアクセスできるプライベートとして設定することも、誰もが画像を使用できるパブリックとして設定することもできます。 このチュートリアルでは、パブリックリポジトリを作成します。

リポジトリをプライベートとして設定する場合は、RancherUIのインフラストラクチャ->レジストリページでDockerHubのクレデンシャルを追加する必要があります。

すべての必須フィールドに入力したら、作成ボタンをクリックします。 プロセスが完了すると、新しいリポジトリサイトにリダイレクトされます。

Dockerイメージをアップロードするには、dockerコマンドを使用してDockerHubにログインする必要があります。 ターミナルに戻り、次のコマンドを実行します。

  1. docker login

ユーザー名とパスワードの入力を求められます。 ほとんどのCLIツールと同様に、入力時にパスワードは表示されません。

ログインしたら、次のコマンドを使用してイメージをDocker Hubにアップロードします。このコマンドにより、すべてのファイルがリポジトリにアップロードされます。

  1. docker push your_dockerhub_username/hapi-example

ローカルインターネット接続によっては、画像のプッシュに数分かかる場合があります。 画像が正常に公開されたら、Rancherを使用してホストを設定できます。

ステップ4—ホストサーバーの作成とラベル付け

Rancherを使用して、サービスを展開するために必要なすべてのホストを作成しましょう。 Node.jsアプリケーション用に2つ、MongoDBサーバー用に1つ、ロードバランサー用に1つ必要です。 DigitalOceanのAPIを使用して、RancherUI内でこれらすべてを実行します。

http://your_rancher_ip_addressにアクセスしてブラウザのRancherインターフェイスにアクセスし、次の手順に従って、必要な4つのホストを作成します。

  1. インフラストラクチャ>ホストに移動し、ページ上部のホストの追加ボタンをクリックします。
  2. ホストプロバイダーとしてDigitalOceanを選択します。
  3. 数量スライダーを4ホストに移動します。
  4. 名前を割り当てます。 hostと入力すると、host1からhost4までの名前が自動的に生成されます。
  5. 生成したDigialOceanアプリケーショントークンをアクセストークンフィールドに貼り付けます。
  6. Image には、デフォルト値のubuntu-14-04-x64を使用します。
  7. サイズには、デフォルト値の1GBを使用します。
  8. 作成ボタンをクリックし、サーバーが作成されてRancherに追加されるまで数分待ちます。

ランチャーがすべてのホストの作成を完了したら、各ホストにラベルを追加してタイプを分類し、各コンポーネントを配置する場所を整理できるようにします。 ホストにラベルを付けることで、サーバーのタイプに応じてサーバーを拡張することもできます。 たとえば、アプリケーションに対する需要が多すぎる場合は、そのタイプのサーバーの数を増やすことができ、Rancherは適切なDockerコンテナーを自動的にデプロイします。 作成するラベルは、loadbalancerapplication、およびdatabaseです。

最初のラベルloadbalancerを作成しましょう。

  1. インフラストラクチャ>ホストに移動し、最初のホストhost1を選択します。
  2. オプションボタン(3つのドットが付いたアイコン)をクリックし、編集オプションを選択します。
  3. ラベルの追加ボタンをクリックし、キー入力にtypeという単語を入力し、loadbalancerと入力します。入力。
  4. 保存ボタンをクリックします。

次に、アプリケーションホストにラベルを付けます。 次の2つのホストで前のプロセスを繰り返しますが、今回はValue入力でapplicationを使用します。

最後のホストについて、プロセスをもう一度繰り返しますが、Value入力でdatabaseを使用します。

4つのホストすべてにラベルが付いているはずなので、サービスを設定しましょう。 データベースから始めましょう。

ステップ5—MongoDBサーバーをデプロイする

DockerHubの公式MongoDBDockerイメージを使用して、データベースサーバーをデプロイします。 MongoDBコンテナーには、すべてのデータを格納するためのsidekickコンテナーもあります。 両方のコンテナーは、databaseというラベルの付いたホストにデプロイされます。

これを行うには、Rancherユーザーインターフェイスで次の手順に従います。

  1. スタックメニューを選択し、ユーザーオプションを選択して、サービスの追加ボタンをクリックします。
  2. サービスの追加ページで、スケールスライダーが1コンテナーの実行に設定されていることを確認します。
  3. サービス名はMongoDBを使用してください。
  4. 画像にはmongo:3と入力します。
  5. 上部のサイドキックコンテナの追加ボタンをクリックします。
  6. この新しいコンテナにDataという名前を付けます。 このコンテナーは、MongoDBデータを格納するためのボリュームとして使用されます。
  7. このコンテナはデータのみに使用するため、busyboxイメージを使用してください。
  8. 下のコマンドタブで、 AutorestartオプションをNever(Start Once)に切り替えます。これは、このコンテナーをストレージにのみ使用するためです。
  9. ボリュームタブに切り替え、 + ボタンをクリックして新しいボリュームを追加し、表示されるテキストフィールドに/data/dbと入力します。 これは、MongoDBがデータを保存するデフォルトのパスです。
  10. Scheduling タブに切り替えて、次のパラメーターを使用して新しいスケジューリングルールを追加します:The Host must have a host label of type = database。 ドロップダウンを使用して、このルールを作成します。
  11. 戻ってMongoDBサービスタブをクリックし、 Command タブまでスクロールダウンして、AutorestartオプションをAlwaysに設定します。
  12. Volumes タブに切り替え、 VolumesFromオプションでDataを選択します。
  13. Scheduling タブに切り替えて、次のパラメーターを使用して新しいスケジューリングルールを追加します:The Host must have a host label of type = database
  14. 最後に、下部にある作成ボタンをクリックし、サービスがアクティブになるまで数分待ちます。

次に、アプリケーションサービスを構成しましょう。

ステップ6—Node.jsサーバーをデプロイする

同様のアプローチを使用して、前に準備したNode.jsアプリケーションをデプロイします。 Docker Hubに保存したイメージは、applicationというラベルの付いたホストにデプロイされ、データを保存してアクセスするためにMongoDBサービスにリンクされます。 したがって、Rancherユーザーインターフェイスで次の手順に従います。

  1. スタックメニューを選択し、ユーザーオプションを選択して、サービスの追加ボタンをクリックします。
  2. Scale セクションで、オプション常にこのコンテナーの1つのインスタンスをすべてのホストで実行するオプションを選択します。
  3. このサービスに使用する名前はNodeJSです。
  4. イメージには、DockerHubにデプロイしたイメージを使用します。 your_dockerhub_username/hapi-exampleと入力します。
  5. サービスリンクセクションで、宛先サービスを選択し、MongoDBを選択します。 次に、名前を選択し、dbと入力すると、NodeJSサービスがMongoDBサービスにアクセスできるようになります。
  6. ページ下部のコマンドタブで、環境変数の追加を選択し、MONGO_HOSTという名前の変数をdbの値で追加します。前の手順で使用した宛先サービス名にマップします。 私たちのアプリケーションは、データベースサーバーを見つけるためにこの環境変数に依存していることを忘れないでください。
  7. Scheduling タブに切り替え、 Add Scheduling Rule ボタンをクリックし、ドロップダウンを使用してThe Host must have a host label of type = applicationというルールを作成します。
  8. 最後に、 [作成]をクリックして、Rancherがサービスをセットアップするのを待ちます。

しばらくすると、applicationというラベルの付いた両方のホストがこの新しいサービスを実行していることがわかります。 複数あるので、これらのホストの両方を効果的に使用できるようにロードバランサーを設定しましょう。

ステップ7—ロードバランサーのデプロイ

ロードバランサーはNodeJSサービスにリンクされ、アプリケーションホスト全体のすべてのコンテナー間でワークロードのバランスを取ります。

  1. ロードバランサーを作成するには、 Stacks メニューを選択し、 User オプションを選択しますが、今回は AddServiceボタンの矢印をクリックします。 ドロップダウンリストからロードバランサーの追加を選択します。
  2. 名前LoadBalancerと入力します。
  3. ソースポート80に設定し、デフォルトのターゲットポート3000に設定します。これは、NodeJSコンテナが公開しているポートです。 。
  4. ターゲットサービスオプションで、最近作成したサービスであるNodeJSを選択します。
  5. ページ下部のSchedulingタブで、 Add Scheduling Rule ボタンをクリックし、The Host must have a host label of type = loadbalancerというルールを作成します。
  6. 最後に、 [作成]をクリックして、Rancherがサービスをアクティブ化するまで待ちます。

サービスを作成するたびに、作成したラベルを使用して、サービスのデプロイ方法を決定しました。 これにより、将来、追加のホストを簡単に管理できるようになります。 それでは、物事が機能することを確認しましょう。

ステップ8—アプリケーションのテスト

アプリケーションをテストするには、ロードバランサーホストのアドレスを取得する必要があります。 LoadBalancer サービスを選択すると、ポートタブにIPアドレスが表示されます。

アプリケーションが機能していることをテストするには、ターミナルで次のコマンドを実行します。

curl LoadBalancerIP

このコマンドは、サーバーにGET要求を送信します。 データベースが空であるため、空の配列([])を含む応答が表示されます。

次に、データベースにメッセージを追加して、アプリケーションがデータを保存できることを確認します。 次のコマンドを実行します。

curl -i -X POST -H "Content-Type:application/json" LoadBalancerIP -d '{"message":"This is a test"}'

このコマンドは、値がmessageキーを含むJSONオブジェクトを使用してPOSTリクエストをサーバーに送信します。これはテストです。 このアプリケーションはmessageキーのみを受け入れるため、他の名前は破棄されます。 リクエストを送信した後、MongoDBから_idとともに、レスポンスとして送信したのと同じメッセージを受信するはずです。 これは、MongoDBサーバーとの接続が機能しており、アプリケーションがデータを保存したことを意味します。

ここで、アプリケーションが正しく機能することを再確認するために、最初のコマンドを再度実行すると、前の手順で追加したメッセージが表示されます。

curl LoadBalancerIP

出力は次のようになります。

HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
cache-control: no-cache
content-length: 61
Date: Tue, 12 Jul 2016 20:07:02 GMT
Connection: keep-alive

{"message":"This is a test","_id":"e64d85579aee7d1000b075a2"}

このサンプルアプリケーションは安全ではありません。 アドレスとAPIを知っている人なら誰でも、システムにメッセージを追加できます。 このチュートリアルが終了したら、Rancherのサービスを削除してこのアプリケーションを無効にすることをお勧めします。

この時点で、2つのアプリケーションサーバー、データベース、およびロードバランサーが構成され、使用できるようになります。 より多くのトラフィックを処理するためにサービスを拡張する方法を見てみましょう。

ステップ9—Node.jsサーバーのスケーリング

アプリケーションが多くの需要を獲得し始め、サーバーが負荷を処理できない場合、Node.jsサーバーの数を増やすことができ、負荷はアプリケーションホスト全体のコンテナー間で自動的に分散されます。 次の手順に従って、アプリケーションをスケーリングします。

  1. インフラストラクチャ>ホストページに移動し、ホストの追加ボタンをクリックします。
  2. 必要な数量を選択します。 この場合、2ホストを追加します。
  3. 最後に作成したホストはhost4であったため、最初の新しいホストの名前としてhost5を使用します。 2つの新しいホストを作成するため、Rancherは次のホストに自動的にhost6という名前を付けます。
  4. 同じ名前のフィールドにDigitalOceanアクセストークンを追加します。
  5. Image には、デフォルト値のubuntu-14-04-x64を使用します。
  6. サイズには、デフォルト値の1GBを使用します。
  7. ラベルの追加ボタンをクリックし、キー入力にtypeと入力し、入力にapplicationと入力します。
  8. 作成ボタンをクリックし、新しいホストがアクティブ化されてRancherに追加されるまで待ちます。

新しいホストがオンラインになると、アプリケーションホストとしてラベル付けされるため、NodeJSアプリケーションの新しいインスタンスが自動的に構成およびデプロイされ、ロードバランサーが4つのコンテナー間で4つのホスト間でワークロードを分散します。

結論

このチュートリアルでは、MongoDBを使用したデータストレージをサポートする機能的なNode.jsアプリケーションを準備、デプロイ、スケーリングする方法を学びました。 ご覧のとおり、RancherとそのGUIを使用すると、プロセスは非常に直感的であり、完全なアプリケーションを簡単にスケーリングできます。 また、Rancherのスケジューリング機能のおかげで、アプリが大ヒットしたときに、負荷を簡単に処理できるようになります。