Ubuntu 14.04でRancherおよびDockerマシンを使用してマルチノード展開を管理する方法

前書き

Rancherは最近、https://github.com/docker/machine [Docker Machine]ベースのプロビジョニングのサポートを追加しました。 Machineを使用すると、クラウドプロバイダーまたは独自のデータセンター内でDockerホストを簡単に作成できます。 サーバーを作成し、それらにDockerをインストールし、それらと通信するようにDockerクライアントを構成します。

Rancherのマシン統合を使用して、Rancher UIから直接計算ノードを起動できます。 これは、単一ノードからマルチノード(将来的にはマルチクラウド)の展開を作成および管理できるようにするための、小さいながらも重要なステップです。

DigitalOcean DriverはRancherによって初めて統合されたものであり、このチュートリアルではRancher UIからDropletsを起動してプロビジョニングする方法を示します。 Docker計算ホストを実行します(これは、Dockerコンテナーの実行に使用できます)。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • APIのDigitalOceanパーソナルアクセストークン。https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2#how-to-の指示に従って作成できます。 generate-a-personal-access-token [このチュートリアル]。

  • Docker 1.6.0イメージを含む1 GB Ubuntu 14.04ドロップレット1つ。

Docker 1.6.0画像オプションは、[アプリケーションの選択]タブの[アプリケーション]タブにあるドロップレット作成ページにあります。 このDropletには、カスタムユーザーデータも必要です。 これを追加するには、[利用可能な設定]セクションで[*ユーザーデータを有効にする]をクリックし、表示されるテキストボックスに以下のスクリプトを入力します。 このスクリプトは、起動時にRancherサーバーを実行するようDropletに指示します。

#!/bin/bash
docker run -d --name rancher-server -p 80:8080 rancher/server

ステップ1-認証の構成

約1分後、ホストの準備が整い、 `+ http:/// +`を参照してRancher UIを表示できます。 Rancherサーバーは現在インターネットに公開されているため、認証を設定することをお勧めします。 このステップでは、Github OAuthベースの認証をセットアップします。

画面上部に「アクセス制御が設定されていません」という警告が表示され、続いて「設定」へのリンクが表示されます。 *設定*をクリックし、そこに記載されている指示に従ってGitHubに新しいアプリケーションを登録し、クライアントIDとシークレットをそれぞれのテキストフィールドにコピーします。

完了したら、ポップアップウィンドウで[* GitHubで認証*]をクリックし、[アプリケーションの認証]をクリックします。 これを行うと、ページがリロードされ、OAuthのセットアップ手順が*認可の設定*セクションに置き換えられます。 Rancherへのアクセスを許可する必要があるユーザーおよび組織を追加します。 変更を加えると、*承認設定を保存*というボタンが表示されます。 完了したらクリックします。

承認設定を保存したら、上部の警告はGitHubプロファイル画像とプロジェクト選択メニュー(最初は* Default と表示されます)に置き換えられます。 *デフォルト*をクリックしてプロジェクト選択メニューを開き、*プロジェクトの管理*をクリックして、最後に +プロジェクトの追加*をクリックします。 選択する名前を入力し、ポップアップする未亡人の所有者として自分を選択し、[作成]をクリックします。 次に、プロジェクト選択メニューを再度使用して選択します。

追加するすべての計算ノードは、このプロジェクトに含まれます。 複数のプロジェクトを作成して、計算ノードを論理セットにグループ化できます。

ステップ2-Rancher計算ノードの起動

このステップでは、いくつかのRancher計算ノードを起動します。

Rancherデプロイメントを保護し、プロジェクトを追加したら、* + Add Host *ボタンをクリックして、Rancher計算ノードを起動します。

ホストを初めて起動する場合、Rancherサーバーが使用可能なIPアドレスの確認を求めるポップアップ画面が表示されます。 計算ノードが接続する場所。 DigitalOceanでは、事前に構成されたIPを選択したままにして、[保存]をクリックできます。 ただし、Rancher Serverをプロキシの背後で起動した場合は、Rancher Server IPをプロキシサーバーのIPとポートに更新する必要があります。

image:https://assets.digitalocean.com/articles/rancher_machine/hIX9cr6.png [image]

[ホストの追加]画面には、DigitalOcean、Amazon EC2、カスタムの3つのプロバイダーが表示されます。 最初の2つはそれぞれのクラウドシステムで計算ノードを起動するために使用され、3番目はDockerが事前にインストールされたサーバーでRancher計算ノードを手動で起動するために使用されるコマンドをリストします。

DigitalOceanアイコンを選択します。 あなたが記入するための多くのフィールドを備えた画面(下に示されている)が表示されます。

画像:https://assets.digitalocean.com/articles/rancher_machine/xvzKhPj.png [image]

次の詳細を入力します。

  • サーバー名:好きなもの。

  • 説明:好きなもの、オプション。

  • アクセストークン:前提条件セクションからのDigitalOcean APIの個人アクセストークン。

  • 画像:起動する画像。* ubuntu-14-04-x64 *である必要があります。

  • サイズ:ドロップレットのサイズ。 この例では、* 1gb *です。

  • 地域:ドロップレットが作成される地域。 地理的に近い場所を選択してください。

最後に、* Create *を押します。 Rancherは、Docker Machineを使用して指定されたDropletを作成し、Dockerをインストールします。 また、Rancherは、新しく作成されたDropletでrancher-agentを実行し、Rancherサーバーに登録します。

数分以内に、計算ノードがRancher UIに表示されます。 IPアドレス、プロセッサのクロック速度、メモリ、ストレージなど、ノードに関するいくつかの基本情報も取得します。 このステップは、より多くの計算ノードを展開に起動するのに必要な回数だけ繰り返すことができます。

image:https://assets.digitalocean.com/articles/rancher_machine/UkDaglV.png [image]

手順3-展開の監視とスケーリング

この手順では、計算ノードの組み込みの監視を検討し、メモを非アクティブ化および削除する方法を示します。

計算ノードがプロビジョニングされたら、ノードのいずれかの名前をクリックして、監視画面を表示します。 ここで、その計算ノードのCPU使用率とメモリ消費量を確認できます。 メモリのほとんどを使用していることがわかった場合、またはCPUが継続的にホットで実行されている場合は、より多くのノードを起動してコンテナの密度を下げることができます。

たとえば、下の計算ノードはメモリの80%を使用しているように見えるため、より多くのノードを起動して負荷を分散することができます。 これは、Machine統合が本当に役立つ場所です。 Docker UIを終了せずに、より多くの計算ノードをプロビジョニングすることにより、負荷のスパイクにすばやく対応できます。

image:https://assets.digitalocean.com/articles/rancher_machine/q2xAGbV.png [image]

スパイクが落ち着いたら、詳細アイコン(* Host とホスト名の横にある3本の水平線がある円)をクリックし、 Deactivate *を選択してノードをシャットダウンできます。

image:https://assets.digitalocean.com/articles/rancher_machine/xMFGTYn.png [image]

その後、同じメニューから* Activate または Delete *のいずれかをクリックして、スピンバックしたいノードまたは不要になったノードをそれぞれ無効にすることができます。

結論

これで、ネイティブのDigitalOceanドライバーサポートとRancher Docker Machineの統合を使用して、計算ノードを起動、監視、終了する方法を学習しました。 楽しい!