2017-12-29 34 views
0

2つの異なる地域にある2つのインスタンス間にSparkクラスタを作成しようとしています。同じVPC /セキュリティグループに所属していないので、ある地域から別の地域のスレーブにMasterを接続するのは問題です(その逆もあります)。これまでのところ私は、次のように行われている:両方のマスターとスレーブのパブリックIPを追加するAmazon EC2のパブリックIPをスパークノードにバインドする方法は?

  1. 編集/ etc/hostsファイルを

    54.208.204.190 master 13.113.105.113 slave01

  2. $ SPARK_HOME/confに/スレーブファイルへ

    を追加しましたslave01 $ SPARK_HOME/confに/ spark-env.shで

  3. は、次のように追加しました:

    export JAVA_HOME=/home/ubuntu/jdk1.8.0_151 export SPARK_WORKER_CORES=8 export SPARK_MASTER_HOST=ec2-54-208-204-190.compute-1.amazonaws.com

    マスターのパブリックIPの割り当てが機能していないため、私はSPARK_MASTER_HOSTでマスターのパブリックDNSを割り当てました。だから、

    MasterUI' could not bind on port 8080.

、上記の構成は、私のために働いたと私は成功し、マスターに登録slave01を見ることができる、とスパークWebUIの中で1つのワーカーが意図したように見せていた:それは私に次のエラーを示しました。しかし、私がSparkPiの例を実行しようとすると、エグゼキュータを追加できませんでした。 slave01からのログで、私は以下を見つけました:

`Caused by: java.io.IOException: Failed to connect to /172-31-23-69:48441` 

172-31-23-69は、マスターのプライベートIPです。私の理解では、slave01はmasterのこのプライベートIPによってmasterに接続することを望んでいましたが、同じvpc slave01にないのでmasterに接続できませんでした。私はspark-env.shとhostsファイルにマスターのパブリックDNSとIPの両方を指定しているので、なぜslave01がマスターのプライベートIPを使いたいのか分かりません。また、slave01がmasterのプライベートIPを知っていたことはもう一つ興味深い質問です。

私は両方のインスタンスでそれぞれSPARK_LOCAL_IP変数をパブリックIPに設定しようとしましたが、どちらも機能しません。だから誰でも私にここで方向性を示すことができれば、とても感謝しています。前もって感謝します。

+1

パブリックIPは、インターネットゲートウェイによりプライベートIPに静的NAT-EDであるため、あなたはEC2インスタンスのパブリックIPへのソケットをバインドすることはできません。 ( 'ifconfig'の出力を参照してください - 公開IPは存在せず、そこに存在するはずです)。マシンにプライベート接続を提供するために2つのVPCをピアシングできますか? [VPCは現在クロスリージョンのピアリングをサポートしています](https://aws.amazon.com/about-aws/whats-new/2017/11/announcing-support-for-inter-region-vpc-peering/) –

+0

あなたの提案はうまくいった。利用可能な領域は4つしかありませんが、まだ開始です。あなたの親切な助けをありがとう。私はそれを確認できるように答えとしてあなたのコメントを置くことができます。再度、感謝します。 – user3086871

答えて

1

EC2インスタンスにパブリックIPv4アドレスが関連付けられている場合、EC2でパブリックIPアドレスが処理されるため、ソケットをパブリックIPアドレスにバインドすることはできません。

パブリックIPは、インターネットゲートウェイによってプライベートIPに静的にNAT変換されます。インスタンス自体はパブリックIPアドレスを認識しません。

ifconfigからの出力を参照してください - 公開IPは存在せず、プライベートIPのみが存在するはずです)。

VPCピアリングを使用すると、複数のVPCのネットワークを相互に接続することができ、アカウントの境界やAWS領域の境界を越えてインスタンスにアクセスできるようになります。

あなたがやっていることに固有の代替ソリューションがあるかもしれませんが、プライベートIPスペースの境界内にトラフィックをすべて保持することは、良い回避策とベストプラクティスのようです。

相互接続されたVPCには、重複しない一意のCIDRブロックが必要です。ピアリングは推移的ではないため、VPC AからBへのピアリング、次にVPC BからCへのピアリングは、VPC AおよびCの通信を許可しません。通信を必要とするインスタンスを持つ2つのVPCは、いずれも直接ピアリングされている必要があります。

https://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/Welcome.html

関連する問題