Ubuntu14.04でRancherを使用してNode.jsとMongoDBアプリケーションをデプロイする方法
序章
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にトークンを入力する必要があるため、このトークンをコピーします。
また、コンテナー、イメージ、DockerファイルなどのDockerの概念の基本的な知識も必要です。 Ubuntu16.04にDockerをインストールして使用する方法を参照してください。
ステップ1—Node.jsアプリケーションの探索
このチュートリアルでは、Hapi.jsフレームワークに基づく単純なNode.jsアプリケーションを使用して、メッセージを受信して記録し、以前に送信されたすべてのメッセージを一覧表示します。 アプリケーションがどのように機能し、構成値を受け取る方法を調べて、イメージを作成するときにDockerでそれらの値を設定できるようにします。
サーバーではなく、ローカル開発マシンでアプリケーションとDockerイメージを準備します。
次のコマンドを使用して、サンプルアプリケーションをローカルマシンにクローンします。
- git clone https://github.com/do-community/hapi-example
次に、プロジェクトディレクトリに移動します。
- cd hapi-example
アプリケーションのメインファイルを見てみましょう。 server.js
. これには、MongoDB接続とサーバーを初期化するためのコードが含まれています。 このファイルをローカルのテキストエディタで開くと、次の内容が表示されます。
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
動作に興味がある場合は、Githubリポジトリにパッケージ化してください。 このファイルには、開発プロセスのためだけに変数を保存します。 ターミナルで変数を手動で書き込むよりも簡単です。 本番環境では、Rancherを介してDockerから変数を取得します。
次に、と呼ばれる環境変数を使用して、サーバーのポートを設定します PORT
、フォールバック値は 3000
、変数が定義されていない場合:
server.connection({ port: process.env.PORT || 3000 });
ポート 3000
Node.jsアプリケーションの一般的な規則です。 この値は必要に応じて変更できます。 唯一の要件は、1023より上で65535より下である必要があることです。
最後に、ルートを読み込んでサーバーを起動する前に、MongoDBサーバーに接続します。 MONGO_HOST
:
server.app.db = mongojs(process.env.MONGO_HOST + '/api');
この環境値は、MongoDBコンテナーを作成すると、MongoDBサーバーのホスト名を使用してRancherを介して定義されます。 値 api
は接続するデータベースの名前であり、データベースが存在しない場合は自動的に設定されます。
アプリが何を探しているのか、ポートとデータベース接続をどのように構成するのかについての背景がわかったところで、Dockerを紹介しましょう。
ステップ2—Dockerイメージを構築する
RancherはDockerイメージを使用してアプリケーションをサーバーにデプロイするので、アプリケーション用のDockerイメージを作成しましょう。 アプリのDockerイメージを作成するには、次のファイルが必要です。 Dockerfile
これには、イメージをビルドするときにDockerが実行する一連の手順が含まれています。 このファイルは、複製したアプリケーションリポジトリにすでに含まれています。 その内容を見て、どのように機能するかを理解しましょう。 テキストエディタで開くと、次のコードが表示されます。
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
、これは私たちのアプリケーションが存在する場所です。 The -p
フラグはそれを意味します mkdir
必要に応じて中間ディレクトリを作成します。 次に、画像の内容をそのディレクトリにコピーします。 次に、この新しいディレクトリを作業ディレクトリとして設定し、後続のコマンドがそのディレクトリから実行されるようにします。
次の行は npm
コマンドを実行し、アプリの本番依存関係をインストールします。
RUN npm install --production
次に、次の2行が表示されます。
ENV PORT 3000
EXPOSE $PORT
最初の行は、と呼ばれる環境変数を定義します PORT
これをアプリケーションがリスニングポートに使用します。 この変数が定義されていない場合に備えて、 3000
デフォルト値として。 次に、そのポートを公開して、コンテナの外部からアクセスできるようにします。 環境変数を使用すると、アプリケーションコードを書き直すことなく、これを簡単に変更できます。 また、アプリケーションはこれらの環境変数を使用するように設計されていることを忘れないでください。
Dockerfileの最後のステップでは、Node.jsサーバーを実行します。
CMD ["npm", "start"]
このファイルからアプリケーションのDockerイメージを作成するには、 hapi-example
ターミナルのフォルダを開き、次のコマンドを実行します。
- docker build -t your_dockerhub_username/hapi-example .
このコマンドは、を使用してDockerイメージを作成します Dockerfile
. コマンドの最後にあるドットに注意してください。 これは、へのパスを指定します Dockerfile
、現在のフォルダにあります。 The -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コンテナーを作成して開始します。
- docker run --name testdb -p 27017:27017 -d mongo:3
コンテナに一時的な名前を割り当てます。 --name
オプション; アプリケーションのテストが終了したら、その名前を使用してサーバーを停止します。 ホストポートもバインドします 27017
ローカルWebブラウザーを使用して、MongoDBが実行されていることをテストできるように、コンテナーによって公開されているポートに接続します。 最後に、使用する画像を指定します。 アプリケーションが開発されたのと同じバージョンのMongoDBを使用して、すべてが期待どおりに機能することを確認することをお勧めします。この場合、バージョンを指定します。 3
.
そのコマンドを実行した後、 http://localhost:27017
ブラウザに次のメッセージが表示されます。 It looks like you are trying to access MongoDB over HTTP on the native driver port
これは、MongoDBが実行されていることを意味します。
次に、アプリケーションコンテナーを実行し、次のコマンドを実行して、アプリケーションコンテナーをMongoDBコンテナーにリンクします。
- 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
. また、という環境変数を追加します MONGO_HOST
これは、アプリケーションがデータベースサーバーに接続するために使用するMongoDBコンテナーの名前を指定します。 The --link testdb
パラメータを使用すると、データベースコンテナの名前をアプリケーションのコンテナ内のホストとして使用できます。
コマンドを実行した後、次のWebサイトにアクセスしてアプリケーションをテストします。 http://localhost:3000
ブラウザで。 エラーなしで空のページが表示されるはずです。
空の配列が表示される場合もあります([ ]
)または訪問したときのFirefoxのJSONビュー http://localhost:3000
. これらの結果のどちらも大丈夫です。
Dockerイメージがローカルで機能することが証明されたので、ローカルコンテナーを停止して削除しましょう。 コンテナを削除することは、画像を削除することと同じではないことに注意してください。 イメージはそのまま残り、後でコンテナを再作成したり、イメージをランチャーにプッシュしたりできます。これは、ローカル環境をクリーンアップした後に実行します。
まず、前に定義した名前を使用してデータベースコンテナを停止します。
- docker stop testdb
コンテナが停止したので、もう必要ないので、マシンからコンテナを削除できます。
- docker rm testdb
アプリケーションコンテナに対して同じ手順を繰り返します。 最初に停止してから削除します。
- docker stop hapi-app && docker rm hapi-app
それでは、Rancherで使用できるように、作業イメージを公開しましょう。
ステップ3—イメージをDockerHubにアップロードする
Rancherを使用してコンテナーをデプロイするには、 Dockerレジストリにアクセスする必要があります。ここで、Dockerイメージを格納するためのリポジトリを作成できます。 Dockerの公式レジストリであるDockerHubを使用します。 Docker Hubは、パブリックリポジトリに無料で使用できます。
ユーザー名とパスワードを使用してDockerHubにログインします。 ログインしたら、画面右側のリポジトリ作成ボタンをクリックします。 次のようにフィールドに入力します。
- 名前(必須):リポジトリの名前。この場合は、
hapi-example
. - 説明:将来的に画像をすばやく識別するための簡単な説明。
- 完全な説明:画像の参照としてここにマークダウンドキュメントを追加できますが、アプリケーションは非常に単純なので、このフィールドを空のままにしておくことができます。
- 可視性:画像を、自分だけがアクセスできるプライベートとして設定することも、誰もが画像を使用できるパブリックとして設定することもできます。 このチュートリアルでは、パブリックリポジトリを作成します。
リポジトリをプライベートとして設定する場合は、RancherUIのインフラストラクチャ->レジストリページでDockerHubのクレデンシャルを追加する必要があります。
すべての必須フィールドに入力したら、作成ボタンをクリックします。 プロセスが完了すると、新しいリポジトリサイトにリダイレクトされます。
Dockerイメージをアップロードするには、DockerHubにログインする必要があります。 docker
指図。 ターミナルに戻り、次のコマンドを実行します。
- docker login
ユーザー名とパスワードの入力を求められます。 ほとんどのCLIツールと同様に、入力時にパスワードは表示されません。
ログインしたら、次のコマンドを使用してイメージをDocker Hubにアップロードします。このコマンドにより、すべてのファイルがリポジトリにアップロードされます。
- docker push your_dockerhub_username/hapi-example
ローカルインターネット接続によっては、画像のプッシュに数分かかる場合があります。 画像が正常に公開されたら、Rancherを使用してホストを設定できます。
ステップ4—ホストサーバーの作成とラベル付け
Rancherを使用して、サービスを展開するために必要なすべてのホストを作成しましょう。 Node.jsアプリケーション用に2つ、MongoDBサーバー用に1つ、ロードバランサー用に1つ必要です。 DigitalOceanのAPIを使用して、RancherUI内でこれらすべてを実行します。
にアクセスして、ブラウザでランチャーインターフェイスにアクセスします http://your_rancher_ip_address
次の手順に従って、必要な4つのホストを作成します。
- インフラストラクチャ>ホストに移動し、ページ上部のホストの追加ボタンをクリックします。
- ホストプロバイダーとしてDigitalOceanを選択します。
- 数量スライダーを4ホストに移動します。
- 名前を割り当てます。 入る
host
、から名前を自動的に生成しますhost1
にhost4
. - 生成したDigialOceanアプリケーショントークンをアクセストークンフィールドに貼り付けます。
- Image には、デフォルト値のubuntu-14-04-x64を使用します。
- サイズには、デフォルト値の1GBを使用します。
- 作成ボタンをクリックし、サーバーが作成されてランチャーに追加されるまで数分待ちます。
ランチャーがすべてのホストの作成を完了したら、各ホストにラベルを追加してタイプを分類し、各コンポーネントを配置する場所を整理できるようにします。 ホストにラベルを付けることで、サーバーのタイプに応じてサーバーを拡張することもできます。 たとえば、アプリケーションに対する需要が多すぎる場合は、そのタイプのサーバーの数を増やすことができ、Rancherは適切なDockerコンテナーを自動的にデプロイします。 作成するラベルは次のとおりです。 loadbalancer
, application
と database
.
最初のラベルを作成しましょう、 loadbalancer
.
- インフラストラクチャ>ホストに移動し、最初のホストを選択します。
host1
. - オプションボタン(3つのドットが付いたアイコン)をクリックし、編集オプションを選択します。
- ラベルの追加ボタンをクリックし、キー入力に単語を入力します
type
、次に入力しますloadbalancer
Value入力で。 - 保存ボタンをクリックします。
次に、アプリケーションホストにラベルを付けます。 次の2つのホストで前のプロセスを繰り返しますが、今回は application
Value入力で。
最後のホストについては、プロセスをもう一度繰り返しますが、 database
Value入力で。
4つのホストすべてにラベルが付いているはずなので、サービスを設定しましょう。 データベースから始めましょう。
ステップ5—MongoDBサーバーをデプロイする
DockerHubの公式MongoDBDockerイメージを使用して、データベースサーバーをデプロイします。 MongoDBコンテナーには、すべてのデータを格納するためのsidekickコンテナーもあります。 両方のコンテナは、次のラベルが付いたホストにデプロイされます database
.
これを行うには、Rancherユーザーインターフェイスで次の手順に従います。
- スタックメニューを選択し、ユーザーオプションを選択して、サービスの追加ボタンをクリックします。
- サービスの追加ページで、スケールスライダーが1コンテナーの実行に設定されていることを確認します。
- サービスの名前には、
MongoDB
. - 画像には、次のように入力します
mongo:3
. - 上部のサイドキックコンテナの追加ボタンをクリックします。
- この新しいコンテナに名前を付けます
Data
. このコンテナーは、MongoDBデータを格納するためのボリュームとして使用されます。 - このコンテナはデータのみに使用するため、
busybox
画像。 - 下のコマンドタブで、 AutorestartオプションをNever(Start Once)に切り替えます。これは、このコンテナーをストレージにのみ使用するためです。
- ボリュームタブに切り替え、 + ボタンをクリックして新しいボリュームを追加し、次のように入力します。
/data/db
表示されるテキストフィールドに入力します。 これは、MongoDBがデータを保存するデフォルトのパスです。 - Scheduling タブに切り替えて、次のパラメーターを使用して新しいスケジューリングルールを追加します。
The Host must have a host label of type = database
. ドロップダウンを使用して、このルールを作成します。 - 戻ってMongoDBサービスタブをクリックし、 Command タブまでスクロールダウンして、AutorestartオプションをAlwaysに設定します。
- Volumes タブに切り替え、 VolumesFromオプションでDataを選択します。
- Scheduling タブに切り替えて、次のパラメーターを使用して新しいスケジューリングルールを追加します。
The Host must have a host label of type = database
- 最後に、下部にある作成ボタンをクリックし、サービスがアクティブになるまで数分待ちます。
次に、アプリケーションサービスを構成しましょう。
ステップ6—Node.jsサーバーをデプロイする
同様のアプローチを使用して、前に準備したNode.jsアプリケーションをデプロイします。 Docker Hubに保存したイメージは、ラベルの付いたホストにデプロイされます application
、およびデータを保存してアクセスするためにMongoDBサービスにリンクされます。 したがって、Rancherユーザーインターフェイスで次の手順に従います。
- スタックメニューを選択し、ユーザーオプションを選択して、サービスの追加ボタンをクリックします。
- Scale セクションで、オプション常にこのコンテナーの1つのインスタンスをすべてのホストで実行するオプションを選択します。
- このサービスに使用する名前は次のとおりです。
NodeJS
. - イメージには、DockerHubにデプロイしたイメージを使用します。 入る
your_dockerhub_username/hapi-example
. - サービスリンクセクションで、宛先サービスを選択し、MongoDBを選択します。 次に、名前としてを選択し、次のように入力します
db
、だから私たちのNodeJS
サービスはMongoDBサービスにアクセスできます。 - ページ下部のコマンドタブで、環境変数の追加を選択し、
MONGO_HOST
の値でdb
、前の手順で使用した宛先サービス名にマップされます。 私たちのアプリケーションは、データベースサーバーを見つけるためにこの環境変数に依存していることを忘れないでください。 - Scheduling タブに切り替え、 Add Scheduling Rule ボタンをクリックし、ドロップダウンを使用して、次のようなルールを作成します。
The Host must have a host label of type = application
. - 最後に、 [作成]をクリックして、Rancherがサービスをセットアップするのを待ちます。
短時間で、両方のホストにラベルが付けられていることがわかります application
現在、この新しいサービスを実行しています。 複数あるので、これらのホストの両方を効果的に使用できるようにロードバランサーを設定しましょう。
ステップ7—ロードバランサーのデプロイ
ロードバランサーは NodeJS
アプリケーションホスト全体のすべてのコンテナ間でワークロードのバランスを取るためのサービス。
- ロードバランサーを作成するには、スタックメニューを選択し、ユーザーオプションを選択しますが、今回はサービスの追加ボタンの矢印をクリックします。 ドロップダウンリストからロードバランサーの追加を選択します。
- 名前に次のように入力します
LoadBalancer
. - ソースポートをに設定します
80
、およびデフォルトのターゲットポートから3000
これが私たちの港ですNodeJS
コンテナが露出しています。 - ターゲットサービスオプションで、最近作成したサービスであるNodeJSを選択します。
- ページ下部のSchedulingタブで、 Add Scheduling Rule ボタンをクリックして、次のようなルールを作成します。
The Host must have a host label of type = loadbalancer
. - 最後に、 [作成]をクリックして、Rancherがサービスをアクティブ化するまで待ちます。
サービスを作成するたびに、作成したラベルを使用して、サービスの展開方法を決定しました。 これにより、将来、追加のホストを簡単に管理できるようになります。 それでは、物事が機能することを確認しましょう。
ステップ8—アプリケーションのテスト
アプリケーションをテストするには、ロードバランサーホストのアドレスを取得する必要があります。 LoadBalancer サービスを選択すると、ポートタブにIPアドレスが表示されます。
アプリケーションが機能していることをテストするには、ターミナルで次のコマンドを実行します。
curl LoadBalancerIP
このコマンドは、サーバーにGET要求を送信します。 空の配列を含む応答が表示されます([]
)データベースが空であるため。
次に、データベースにメッセージを追加して、アプリケーションがデータを保存できることを確認します。 次のコマンドを実行します。
curl -i -X POST -H "Content-Type:application/json" LoadBalancerIP -d '{"message":"This is a test"}'
このコマンドは、POSTリクエストを以下を含むJSONオブジェクトとともにサーバーに送信します。 message
の値を持つキーこれはテストです。 このアプリケーションは、 message
キーなので、他の名前は破棄されます。 リクエストを送信した後、レスポンスとして送信したのと同じメッセージと、 _id
MongoDBから。 これは、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サーバーの数を増やすことができ、負荷はアプリケーションホスト全体のコンテナー間で自動的に分散されます。 次の手順に従って、アプリケーションをスケーリングします。
- インフラストラクチャ>ホストページに移動し、ホストの追加ボタンをクリックします。
- 必要な数量を選択します。 この場合、2ホストを追加します。
- 使用する
host5
最初の新しいホストの名前として、最後に作成したホストはhost4
. 2つの新しいホストを作成するため、Rancherは次のホストに自動的に名前を付けます。host6
. - 同じ名前のフィールドにDigitalOceanアクセストークンを追加します。
- Image には、デフォルト値のubuntu-14-04-x64を使用します。
- サイズには、デフォルト値の1GBを使用します。
- ラベルの追加ボタンをクリックし、キー入力に次のように入力します
type
、次に入力しますapplication
Value入力で。 - 作成ボタンをクリックし、新しいホストがアクティブ化されてランチャーに追加されるまで待ちます。
新しいホストがオンラインになった後、それらはアプリケーションホストとしてラベル付けされているため、 NodeJS
アプリケーションは自動的に構成およびデプロイされ、ロードバランサーは4つのホスト間で4つのコンテナー間でワークロードを分散します。
結論
このチュートリアルでは、MongoDBを使用したデータストレージをサポートする機能的なNode.jsアプリケーションを準備、デプロイ、スケーリングする方法を学びました。 ご覧のとおり、RancherとそのGUIを使用すると、プロセスは非常に直感的であり、完全なアプリケーションを簡単にスケーリングできます。 また、Rancherのスケジューリング機能のおかげで、アプリが大ヒットしたときに、負荷を簡単に処理できるようになります。