web-dev-qa-db-ja.com

実稼働環境でDockerコンテナーをスケーリングする方法

それで最近この素晴らしいツールを発見しました

Dockerは、任意のアプリケーションから軽量でポータブルで自給自足のコンテナを簡単に作成するためのオープンソースプロジェクトです。開発者がラップトップで構築およびテストする同じコンテナは、大規模、実稼働、VM、ベアメタル、OpenStackクラスター、パブリッククラウドなどで実行できます。

Nginxを実行するdockerイメージがあり、Webサイトが外部データベースに接続しているとします。本番環境でコンテナをスケーリングするにはどうすればよいですか?

139
James Lin

更新:2019-03-11

何年もの間、この答えを支持してくれた人々に感謝します。

この質問は、Dockerがまだ非常に新しいテクノロジーであった2013年8月に尋ねられたことに注意してください。それ以来: Kubernetes は2014年6月に開始されました Docker swarm は2015年2月にDockerエンジンに統合され、Amazonはそれを開始しました container solution、ECS、 = 2015年4月および GoogleがGKEを開始 2015年8月。本番コンテナのランドスケープが大幅に変更されたと言っても過言ではありません。


短い答えは、これを行うには独自のロジックを記述する必要があるということです。

この種の機能は、Dockerの上に構築され、実稼働環境でのアプリケーションをサポートするように設計された以下のプロジェクトから登場することを期待しています。

アップデート1

私が最近発見した別の関連プロジェクト:

更新2

最新リリースのOpenstackには、Dockerコンテナーの管理のサポートが含まれています。

アップデート3

Dockerインスタンスを管理するシステム

Packer 、Docker、および Serf などのツールを使用して不変のサーバーインフラストラクチャパターンを提供する方法に関するプレゼンテーション

更新4

serf を使用してdockerコンテナをワイヤリングする方法に関するきちんとした記事:

更新5

MesosMarathon フレームワークを使用してDockerを実行する

Mesosphere Docker開発者向けチュートリアル

アップデート6

Dockerを Tsur で実行します。これは docker-cluster および segregated scheduler deploy をサポートしているためです。

更新7

Dockerベースの環境オーケストレーション

maestro-ng

アップデート8

decking.io

アップデート9

Google kubernetes

アップデート10

RedhatはOpenShift PAASをリファクタリングしてDockerを統合しました

アップデート11

Dockerコマンドラインをラップし、jsonファイルから管理するDocker NodeJS lib。

アップデート12

Amazonの新しい コンテナサービス は、クラスター内のスケーリングを有効にします。

アップデート13

厳密に言えば Flocker はアプリケーションを「スケーリング」しませんが、複数のドッカーホスト間でステートフルコンテナ(データベースサービスを実行しますか?)を移植する関連機能を実現するように設計されています。

https://clusterhq.com/

アップデート14

Dockerアプリケーションを記述するポータブルテンプレートを作成するプロジェクト:

http://panamax.io/

アップデート15

Dockerプロジェクトはオーケストレーションにネイティブに対応しています( announcement を参照)

アップデート16

Spotify Helios

こちらもご覧ください:

アップデート17

Openstackプロジェクトには、Magnumと呼ばれる新しい「Container as a Service」プロジェクトが追加されました。

多くの可能性を示し、KubernetesやDocker swarmなどのDockerオーケストレーションフレームワークの簡単なセットアップを可能にします。

アップデート18

Rancherは急速に成熟しているプロジェクトです

http://rancher.com/

優れたUIと、ハイブリッドDockerインフラストラクチャへの集中

アップデート19

Latticeプロジェクト は、コンテナクラスターを管理するためのCloud Foundryの派生物です。

アップデート20

Dockerは最近Tutumを購入しました:

https://www.docker.com/tutum

アップデート21

Kubernetes にデプロイされたアプリケーションのパッケージマネージャー。

http://helm.sh/

更新22

Vampは、コンテナテクノロジーに依存する(マイクロ)サービス指向アーキテクチャを管理するためのオープンソースで自己ホスト型のプラットフォームです。

http://vamp.io/

アップデート23

分散された高可用性のデータセンター対応スケジューラー

Vagrantやその他の強力なツールを提供してくれた人たちから。

アップデート24

AWS向けのコンテナホスティングソリューション、オープンソース、および Kubernetes

https://supergiant.io/

アップデート25

ドイツにあるApache Mesosベースのコンテナホスト

https://sloppy.io/features/#features

Docker Inc.は、Dockerクラウドと呼ばれるコンテナーホスティングサービスも提供しています

https://cloud.docker.com/

アップデート26

Jelastic は、コンテナを自動的にスケーリングするホストされたPAASサービスです。

569
Mark O'Connor

Deis Dockerコンテナーのスケーリングを自動化します(他のものもあります)。

Deis(DAY-issと発音)は、独自のサーバーにアプリケーションを簡単に展開および管理できるオープンソースPaaSです。 Deisは Docker および CoreOS に基づいて構築され、軽量のPaaSにHerokuにヒントを得たワークフローを提供します。

開発者のワークフローは次のとおりです。

deis create myapp                      # create a new deis app called "myapp"
git Push deis master                   # built with a buildpack or dockerfile
deis scale web=16 worker=4             # scale up docker containers

DeisはDockerコンテナーをCoreOSクラスター全体に自動的にデプロイし、リクエストを正常なDockerコンテナーにルーティングするようにNginxルーターを構成します。ホストが停止すると、コンテナは数秒で別のホストで自動的に再起動されます。プロキシURLを参照するか、deis openを使用してアプリをヒットします。

その他の便利なコマンド:

deis config:set DATABASE_URL=          # attach to a database w/ an envvar
deis run make test                     # run ephemeral containers for one-off tasks
deis logs                              # get aggregated logs for troubleshooting
deis rollback v23                      # rollback to a prior release

この動作を確認するには、 http://deis.io/overview/ のターミナルビデオをご覧ください。 Deisの概念について学ぶ または 独自のプライベートPaaSを展開する にジャンプすることもできます。

42
gabrtv

つるを試すことができます。 Tsuruは、HerokuにインスパイアされたオープンソースのPaaSであり、Globo.com(ブラジル最大の放送テレビ会社のインターネット部門)で既にいくつかの製品が生産されています。

コンテナの作成、デプロイ、ドッカークラスター、ユニットのスケーリング、分離されたデプロイなどの多くのNice機能を使用したルーティング(ヒップ痛)があるため、アプリケーションのフロー全体を管理します。

以下のドキュメントをご覧ください: http://docs.tsuru.io/

ここに私たちの環境をカバーする投稿: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/

19
Magno Torres

Rancher.com をご覧ください-複数のDockerホストなどを管理できます。

18
dublx

Dockerをスケーリングするための賢明なアプローチは次のとおりです。

  1. 各サービスはdockerコンテナーになります
  2. リンクを介して管理されるコンテナ内サービスの検出( docker 0.6.5の新機能
  3. コンテナは Dokk を介してデプロイされます
  4. アプリケーションは Shipyard で管理され、その代わりに hipache が使用されます

Yandexのもう1つのdockerオープンソースプロジェクト:

9
tommasop

Openshift guysもプロジェクトを作成しました。より多くの情報を見つけることができます heretest container および詳細情報 here を試してください。唯一の問題は、今のところRedhat中心の解決策です:)

2
Kunthar

私たちはDeis(deis.io)の大ファンであり、積極的に展開していますが、PaaSスタイルの展開ソリューションのような他のHerokuもあります。

Wayfinderの人々からのLongshoreman:

https://github.com/longshoreman/longshoreman

CloudFoundryを使用してCloudCredoの人々からデッカー:

http://www.cloudcredo.com/decker-docker-cloud-foundry/

オーケストレーションについては、NewRelicのオープンソースCenturionプロジェクトは非常に有望です。

https://github.com/newrelic/centurion

2
IanBlenke

Panamax:Docker Management for Humans。 panamax.io

図:Dockerを使用した高速で分離された開発環境。 fig.sh

1
rus1

etcd および Consul もご覧ください。

1
Ricardo Silva

他の投稿で言及されていないオプションの1つがHeliosです。 spotifyによって構築され、あまり多くのことをしようとしません。

https://github.com/spotify/helios

1
Chris Dail