ElasticIPを備えたEC2インスタンスが3つあります。
それぞれにサーバーが含まれています。
各サーバーでは、TCPポート8181、2181、2888、および3888が各マシンで開かれている必要があります。
各サーバーは、これらのポートを介して他のサーバーと通信できる必要があります。
セキュリティグループを作成しました(たとえば、名前:sg-4d775c42
)ここで私は次のルールを置きます:
カスタムTCPルール| TCP | 8181 | sg-4d775c42
カスタムTCPルール| TCP | 2181 | sg-4d775c42
カスタムTCPルール| TCP | 2888 | sg-4d775c42
カスタムTCPルール| TCP | 3888 | sg-4d775c42
これらのルールは、セキュリティグループ内の各マシンがsg-4d775c42
は、同じグループ内の他のマシンのポート8181、2181、2888、および3888を呼び出すことができます。
しかし、そうではないようです!
私が世界へのポートを開く場合、つまり次のルール:
カスタムTCPルール| TCP | 8181 | 0.0.0.0/0
カスタムTCPルール| TCP | 2181 | 0.0.0.0/0
カスタムTCPルール| TCP | 2888 | 0.0.0.0/0
カスタムTCPルール| TCP | 3888 | 0.0.0.0/0
もちろん、私のサーバーは一緒に話すことができます。
さらに、これら3つのサーバー間のプライベート通信が最初のステップです。 2番目のステップは、この3つのサーバーが他のインスタンスにアンサンブルする他のプライベートネットワークに接続することです。
だから私の質問は次のとおりです:
EC2インスタンス間でポートが開かれるプライベートネットワークを作成(またはシミュレート)するにはどうすればよいですか?
これらのルールは、セキュリティグループsg-4d775c42の各マシンが、同じグループの他のマシンのポート8181、2181、2888、および3888を呼び出すことができることを意味すると思いました。
それは可能ですが、AWS内部IPを使用する場合に限ります。これは、各インスタンスが取得するec2-xxx-xxx-xxx-xxx.us-region-1.compute.amazonaws.com
アドレス(AWSネットワーク内の内部IPを返す)を使用するか、インスタンスのプライベートIPを介して直接行うことができます。
インスタンスのエラスティックIPを使用してパブリックインターネットを経由すると、AWSは、インスタンスが属しているセキュリティグループに関する情報をすべて失うため、IPベースのルールのみが機能します。