2016-04-24 15 views
0

私は、3つのAWSホスト上のドッカーコンテナ内に3ノードのElasticsearch 2.1クラスタを実行しています。私は、コマンドラインでAWSのDockerized Elasticsearchクラスタ - 各ノードが自分自身を選択

network.host: 0.0.0.0 
discovery.type: "ec2" 
discovery.ec2.ping_timeout: "30s" 
discovery.zen.ping.multicast.enabled: false 
cloud.aws.access_key: ... 
cloud.aws.secret_key: ... 
cloud.aws.region: ... 

: Elasticsearch.ymlは、いくつかの他のもののほか、次のものが含まれ

-Des.network.bind_host=0.0.0.0 -Des.cluster.name=XXX -Des.node.name=XXX-1 (up to -XXX-3) 

データが動的にノード起動時にマウントEBSボリュームに保存されています。 AWS Cloud Pluginがインストールされています。

システム全体が一般的なネットワークの問題を解決するまでは、再起動と更新を含めてすべて正常に機能しました。そこで何が起こったのか分かりません。 {XXX-3} {5oQHbq_KS8-JrIuFfTTBdw} new_master

[cluster.service] [XXX-3]:その後 、各ノードは、開始それはXXXクラスタで実行されている主張するが、マスターとして自分自身をdeclairs {192.168.AAA.BB} {192.168.CCC.DD:9300}、 理由:禅ディスコジョイン(elected_as_master、[0]受信ジョイン)」}

Iが設定することにより、この問題を解決することに成功しnetwork.host: _ec2_ホスト上の起動時に、このホストは実行中のインスタンスの1つに正常に接続した後、3番目のノードがでもクラスタに接続できました。今度はもう一度うまく走っています。

私はこの問題がなぜ発生したのか理解しようとしています。AWSで0.0.0.0を使用することは合法ではありませんか? 1つのノードnetwork.hostだけを_ec2_に変更した後で再び動作する方法。 もう1つのポイントは、ローカル環境(迷路)で同じコマンドラインで同じサービスを使用したいのですが、この場合はec2を使用できません。

ありがとうございます。

答えて

0

これは最終的に私が見つけた解決策です。 AWSは、メイン( "生産")環境があるので

は、主な構成は、それに向けられている:elasticsearch.ymlで

  1. セット - elasticsearch -Des.network.bind_host=0.0.0.0
  2. - コマンドライン引数として設定 network.host: _ec2_

この場合、発見はスムーズに進み、ノードはネットワークインターフェイスにバインドされます(_ec2_ IPはドッキングステーションのものではなくEC2ホストネットワークに関連しています)

ローカル環境(迷惑行為)でも実行させるには、コマンドラインでnetwork.hostパラメータを上書きする必要があります。elasticsearch -Des.network.bind_host=0.0.0.0 -Des.network.host=0.0.0.0

関連する問題