2015-01-12 20 views
5

クラスタをホスティングするためにDockerとMesos/MarathonまたはKubernetesのどちらかを使用することを検討しています。しかし、私たちが本当に答えを見たことのない1つの問題は、クラスタ化されたサービスが互いに正しく接続できるようにすることです。私が見たすべてのものは、少なくとも1つの他のノードがクラスタに加わる前に知る必要があります。ある人はすべてのノードについて知る必要があります。しかし、KubernetesとMesosでは、事前にIPアドレスが何であるかを知る方法がありません。ドッカーとサービスクラスタ

このため、ベストプラクティスはありますか?役立つなら、我々がコンテナとして展開しようとしているいくつかの技術は、ElasticSearch、ActiveMQ、およびMongoDBです。他にもあるかもしれない。

答えて

2

しかし、私たちが本当に答えを見たことのない1つの問題は、クラスタ化されたサービスを互いに正しく接続する方法です。

ここでは、HA /複製/分割アプリケーションについて説明しています。現時点で

は、kubernetesに、あなたは、サービスのすべての「エンドポイント」リストAPI呼び出しを行うことによって、これを達成することができます。あなたの同輩がどこで動いているかあなたに教えてくれるでしょう。

最終的には、あなたが説明するユースケースをよりファーストクラスの方法でサポートしたいと考えています。

私は多分より多くの標準化がここで始まっ何かを得るためにhttps://github.com/GoogleCloudPlatform/kubernetes/issues/3419を提出しました。

+0

正確に。私はちょうど彼らがマシンのクラスタとして実行するので、 "クラスタ化"を使用しました。 私たちは実際に何か似たようなことをしましたが、それはちょっとハックしたようです。また、リーダーシップについての懸念があります。もしノードが追加/削除されたらどうなるでしょうか?うまくいけばあなたのアイデアは助けてくれるでしょう。 – blockcipher

0

Kubernetesの場合、currentlyは、--machines引数で始まるkube-controllers-manager引数で始まり、ミニオンのIPまたはホスト名のリストが必要です。

+0

これをetcdやmDNSでサポートされているディスカバリメカニズムと置き換えるのは難しくありません。 – errordeveloper

+0

クーベルネットのためのものはすでに存在しますが、それはコンテナが始まった後です。それでも、サービス自体は、特定の形の発見をサポートしなければならないでしょう。これはプロジェクトによっては起こるかもしれないし、そうでないかもしれません。 – blockcipher

+0

は、私はあなたの質問は、現在参加しているすべてのマシンのIPアドレス/ホスト名を提供する必要がKubernetesクラスタ自体を形成する程度であった...私たちは同じことを話しているとは思いません。 Kubernetesで動作するアプリを尋ねているのは分かりますか? – errordeveloper

0

これをKubernetesで正しく処理する方法はありません。はい、エンドポイントのリストを返すAPIを呼び出すことができますが、エンドポイントが変更されたときに変更を監視してアクションを実行する必要があります。

このシナリオでは十分に準備されているMesos/Marathon 。 Mesosのカスタムフレームワークを実装する必要があります。 http://mesos.apache.org/documentation/latest/mesos-frameworks/

1

を私もMesos /マラソンを使用してセットアップにElasticSearchクラスタを望んでいた:ElasticSearchためのフレームワークを用意がすでにあります。既存の「解決策」は単なる文書化されていないか、機能していない/古いものではなかったので、自分のコンテナをセットアップしました。

あなたが好きなら、あなたは(私はv0.8.1を使用して)実行しているマラソンをインストールしている場合は、ElasticSearchのクラスタを設定すると、数分のところでなければなりませんhttps://github.com/tobilg/docker-elasticsearch-marathon

で顔をしています。

UPDATE

コンテナが今Elasticsearchのv1.5.2を使用し、最新のマラソンv0.8.2上で実行することができます。

関連する問題