2016-12-15 21 views
1

Amazon EC2で基本的なタマネギのルーティングサービスを実装しようとしています。 私のネットワークの背後にある基本的な考え方は次のとおりです。私は、ディレクトリノード、チェーンノード、および発信者(クライアント)を持っています。チェーンノードはディレクトリノードに登録され、ディレクトリノードはトラフィックのルートを決定します。私は私のマシン上でローカルにそれを実行したときに到着したリクエストのAWS起源(IP)

すべてが、細かい動作します。個々のEC2インスタンスからすべてのコンポーネントを実行すると、動作しません。これは、ディレクトリノードがチェーンノードの「本当の」場所を認識しないため、登録すると他のIPを持っていると考えられるためです。自分のマシン上で実行されていたチェーンノードを登録し、EC2インスタンス上で実行されているディレクトリノードを登録するときに、この動作に気付きました。ディレクトリノードは、登録要求をアマゾンネットワーク内からのものとして見た。ノードがお互いに通信する方法は、REST経由です。ディレクトリノードは、リクエストヘッダからチェーンノードのアドレスを取得します。リクエストヘッダは、要求の真の起点を指す代わりに、AWSネットワーク内のどこかを常に指しているようです。

私は、クラウドコンピューティングに新しいですし、これは私がオンラインに私の問題の答えを見つけることができませんでした私の能力のAWS.To最善と私の最初の相互作用であるので、私はここに頼むことにしました。おそらく、私がElastic IPについて読んだことに言及する価値はあるかもしれませんが、私が理解する限り、インスタンスに到達するために使用される「静的な」IPの一種です。これは、ノードの数に応じてチェーンノードが最終的にはそれぞれのVM内で動的に生成されるべきであるため、私を助けません。この場合、ディレクトリノードは新しいチェーンノードのIPを知りません。Elasticであるかどうかはわかりません。

私には助言がありますか? ありがとうございます!

+0

なぜあなたは、通信するリクエストヘッダにIPを使用することはできませんか? – helloV

+1

以下のシナリオのため:ディレクトリノードがEC2にあります。チェーンノードが私のPCにあり、登録しようとしています。ディレクトリノードには、<ローカルマシンのIP>の代わりにから受信した登録要求が表示されます。そして、それがルートトラフィックの一部をする必要があり、そのノードに伝えるためにしようとすると、それはに話をしようとすると、それが<私のローカルマシンのIP>に位置されるチェーン・ノードは、それが何かをしなければならない考えを持っていません。 – Syn

+0

PC上のソフトウェアはどのようにEC2のディレクトリノードに到達しますか?あなたのネットワーク構成は何ですか? –

答えて

0

使用すると、1つ自分で(例えば、弾性ロードバランサ付き)を作成しない限り、AWSのトラフィックとはプロキシインラインはありません。

私は次のように混乱がexplaibedが疑われます。

EC2でのパブリックIPアドレスを持つすべてのインスタンスが自動的にDNSホスト名を持っています。 AWSの外

ec2-203-0-113-254.us-west-2.compute.amazonaws.com 

、このホスト名の作品:あなたは私たち-西-2地域でインスタンスを持っている場合たとえば、パブリックIPアドレス203.0.113.254と、そのマシンにもこれと同様のホスト名を持っているでしょう予想通り。

1つのVPC内では、それが異なります。

すべてのEC2インスタンスは、プライベートIPアドレスを持っています。インスタンスでもにパブリックアドレスがある場合、そのパブリックアドレスは直接認識されません。パブリックIPは、VPCインターネットゲートウェイによってプライベートIPに変換されます。

VPC内の1つのインスタンスがの上に示すようなホスト名を使用してVPC 内の別のインスタンスにアクセスすると、VPCの内部DNSリゾルバは、地域ごとにデフォルトVPC上のデフォルトでのプライベート IPを返します。パブリックIPではなく、宛先インスタンス。したがって、ターゲットマシンには、プライベートのIPが表示され、パブリックIPでは表示されません。

これは、パブリックIPアドレスを使用してVPC内の他のインスタンスと通信するときに、VPC内部のマシンが追加のデータ転送を行うために便利ですが、プライベートIPを使用する場合は追加料金が適用されません。あなたは、インスタンスにアクセスするために異なるホスト名、AWSで提供されていないものを、使用している場合

、この再マッピングは発生しません。たとえば...

my-chain-node-zero.203.0.113.254.xip.io 

... 203.0.113.254にも解決されますが、この再マッピング動作は行われません。

また、独自のドメインをお持ちの場合は、問題のパブリックIPアドレスを指し示すAレコードを作成してください(このアドレスは、となります)。アマゾンが提供するホスト名を参照するCNAME Sを作成しないでください - CNAMEチェーンが続く場合、それらの再マッピングされます。

Using DNS with your VPC参照してください。

+0

あなたの答えをありがとう。しかし、鎖ノードの実際のIPを得るためにxip.ioをどのように使うことができるかはまだ分かりません。既知の唯一のアドレスは、ディレクトリノードのアドレスです。そしてチェーンノードはそれを要求し、ディレクトリノードはその位置を見つけて保存しなければならない。あなたの答えからわかるように、ディレクトリノードは、パブリックノードの代わりにチェーンノードのプライベートIPを見るでしょう。要求を行っているノードの場所(この場合はチェーンノード)を知らなくてもxip.ioを使用できますか? – Syn

+0

または、ディレクトリノードにアクセスするためにxip.ioを使用する必要がありますか? my-chain-node-zero.203.0.113.254.xip.ioの代わりにmy-directory-node.203.0.113.254.xip.ioのようなものがありますか? – Syn

+0

質問で特定の例を特定していないので、私はあなたのノードがec2ホスト名を使って他のノードに接続していると仮定しました。ここでの考え方は、これを逆方向ではなく順方向に使用することです。何に接続するか、どのように(名前またはIPによって)、実際のものと予想される結果の具体的な例を提示することができます。 ec2metadataに関する質問に私のコメントを参照してください。 –

関連する問題