複数のEC2インスタンスを使ってクラスタを組む場合など、EC2インスタンス同士で通信を許可したい時があると思います。
セキュリティグループと呼ばれる仮想ファイアウォールの設定が必要ですが、送信元にセキュリティグループを設定すると簡単に設定ができます。
1. セキュリティグループを作成する
まずはセキュリティグループを作成します。サービス検索窓に「セキュリティグループ」と入力し、「セキュリティグループ」をクリックします。
次に「セキュリティグループを作成」をクリックします。
必要な項目を入力していきます。「セキュリティグループ名」と「説明」に何か入力しましょう。今回はTestGroup
としました。
次にインバウンドルールを設定していきますが、実はこの時点では目的のルールは設定できません。
ソースつまり送信元にこのセキュリティーグループ自身を設定したいのですが、まだこのセキュリティグループは作成されていないためです。
なので、そのルールはいったん作成せず、接続確認用のSSHのポート(22)だけルールを設定しておきましょう。
「セキュリティグループを作成」をクリックしていったん作成してしまいます。
そして、作成したこのセキュリティグループを編集しましょう。
「アクション」をクリックします。
そして「インバウンドルールを編集」をクリックします。
さて、やっとこさ目的のルールの作成です。
送信元に自分自身を指定します。検索窓をリクックすると候補が選べるようになるのですが、TestGroup
を選択します。
このルールによって、このセキュリティグループをアタッチしたEC2インスタンスは、相互に通信が許可された状態になります。
送信元にIPアドレスやその範囲等を設定するよりずっと簡単ですね。
設定ミス等も防止できそうです。
「ルールを保存」をクリックして編集を完了させましょう。
2. EC2インスタンスを作成する
先ほど作成したセキュリティグループを使ってみましょう。
EC2インスタンスを2つ作って接続できるか確認してみます。
EC2インスタンスの作成画面で、「インスタンス数」を2にセットします。
先ほどのセキュリティグループをアタッチしましょう。
設定はこれで終わりなので「確認と作成」をクリックし、設定を確認したらEC2インスタンスを起動してください。
3. 接続確認する
通信が許可されたか確認しましょう。
片方のインスタンスでポート8080をLISTENさせます。
ubuntu@ip-172-31-46-224:~$ nc -l 8080
次にもう片方のインスタンスからアクセスしてみましょう。
ubuntu@ip-172-31-47-167:~$ nc -v -w 1 172.31.46.224 8080
Connection to 172.31.46.224 8080 port [tcp/http-alt] succeeded!
無事接続確認できました!
ちなみに、今回の設定では全ての通信を許可していますので、他のポートでも接続できます。