ニュース&ブログ
基礎からすぐできるAWS 簡易ブログシステムの構築4
この記事は最終更新から10年以上経過しています。内容が古くなっている可能性があります。
投稿日:2015/3/10

前回はWebサーバーインストール~ファイアウォール設定~DNS名前解決設定を実施しました。
今回はDBサーバーインスタンス作成~接続確認~NATサーバーインスタンス作成~疎通確認を行います。
参考文献
今回実施する内容は下記文献を参考としております。手順の詳細などは本書籍を参照してください。・Amazon Web Services 基礎からのネットワーク&サーバ構築
検証で構築する環境と実施する内容
AWS上にVPCを一つ作成し、その中に公開用のVPCサブネットとプライベートのVPCサブネットを作成します。公開用のVPCサブネットにはWebサーバとDBサーバのインターネット接続用NATサーバを構築します。プライベートのVPCサブネットにはDBサーバを構築します。作業は検証環境の作業端末から接続します。
・検証環境の構成図
図1 構成図

AWSにアカウントが作成されているものとします。(今回は⑩~⑭まで。)
① VPC作成
② VPCサブネット作成
③ インターネットゲートウェイ作成
④ ルートテーブル作成
⑤ インスタンス作成(Webサーバ)
⑥ インスタンス接続
⑦ Webサーバーインストール
⑧ ファイアウォール(セキュリティグループ)設定
⑨ DNS名前解決設定
⑩ インスタンス作成(DBサーバ)
⑪ インスタンス接続(Webサーバ経由)
⑫ インスタンス作成(NATサーバ)
⑬ NATインスタンス起動
⑭ NATインスタンス疎通確認
⑮ MySQLインストール(DBサーバ)
⑯ WordPressインストール(Webサーバ)
⑰ WordPress設定
では⑩から見ていきます。
⑩ インスタンス作成(DBサーバー)
今回作成するDBサーバーインスタンスはWebサーバーとほぼ同一の手順で作成します。
(1)AWS管理コンソールで「EC2」をクリックします。
(2)EC2ダッシュボードで、「Running Instances」をクリック
(3)「Launch Instance」をクリック。
図2:「Launch Instance」をクリック

(4)STEP1の「Community AMIs」でAmazon Linuxを選択し「Select」をクリック
図3:STEP1 AMI指定

(5)STEP2で「t2.micro」を選択し「Next:~」をクリック
図4:STEP2 インスタンスタイプ指定

(6)STEP3画面で以下を設定します
・Network:vpc-blog-system [作成したVPC]
・subnet:vpc-blog-private [作成したプライベートサブネット]
・Auto-assign Public IP:Disable
図5:STEP3 インスタンス詳細設定

(7)STEP3 Network Interfaces
STEP3下部にNetwork Interfacesの項目で、プライベートIPアドレスとなる「Primary IP」を指定します。
今回は10.0.2.10を指定し、「Next:~」をクリックします。
図6:STEP3 Network Interface設定

(8)STEP4 ストレージ設定
Add Storage画面で値を入力し、「Next:~」をクリックします。
・Size(GiB):8 (デフォルト)
・Volume Type:「Magnetic」 から 「General Purpose(SSD)」 に変更します
図7:STEP4 Add Storage

(9)STEP5 インスタンスタグ
インスタンスのタグを作成します。例として以下を設定し「Next:~」をクリックします。
・Key : Name
・Value : blog-db-srv
図8:STEP5 インスタンスタグ

(10)STEP6 セキュリティグループ設定
ファイアウォール設定として、セキュリティグループを作成します。
DBサーバーはプライベートサブネットに存在し、プライベートサブネットはインターネットゲートウェイがアタッチされていませんので、Webサーバーを踏み台サーバーにしてアクセスできるように設定します。
・Assign a security group : Create a new security group
・Security group name : DB-SG
・Description : DB-SG
許可ポート設定1
・Type : SSH
・Source : Custom IP 10.0.1.0/24 (パブリックセグメントCIDR)
許可ポート設定2
・Type : Custom TCP Rule
・Port Range : 3306 (MySQLで利用するポート)
・Source : Custom IP 10.0.1.0/24 (パブリックセグメントCIDR)
許可ポート設定3
・Type : Custom ICMP Rule
・Protocol : Echo Request
・Source : Custom IP 10.0.1.0/24 (パブリックセグメントCIDR)
図9:STEP6 セキュリティグループ設定

(11)STEP7 Review Instance Launch
設定内容を確認し「Launch」をクリックします。
図10:STEP7 インスタンスローンチ確認

(12)キーペアー作成
インスタンス接続に必要となるキーペアーを指定します。
キーペアーは、Webサーバーインスタンス起動時に作成したキーペアーを指定します。
下記を指定後「Launch Instances」をクリックします。
・Choose an existing key pair
・Key pair name : blog-system
・acknowledge ~ :チェック
図11:キーペアー指定

(13)インスタンス起動確認
EC2ダッシュボード > 「Instances」
作成したインスタンスがrunningになっていることを確認します。
Descriptionタブにて設定した内容が反映されていることを確認します。
図12:インスタンス起動確認

⑪ インスタンス接続(Webサーバー経由)
WebサーバーからDBサーバーにPing疎通確認をします。Ping疎通確認後、WebサーバーからDBサーバーにSSHログインするために、DBサーバーの秘密鍵をWebサーバーのec2-userのホームディレクトリに格納します。その後、WebサーバーからDBサーバーにSSHログインします。
(1)Ping疎通確認
Webサーバーにログイン後、DBサーバーのプライベートIPへのPing疎通確認をします。
[ec2-user@ip-10-0-1-10 ~]$ ping 10.0.2.10
PING 10.0.2.10 (10.0.2.10) 56(84) bytes of data.
64 bytes from 10.0.2.10: icmp_seq=1 ttl=64 time=0.411 ms
64 bytes from 10.0.2.10: icmp_seq=2 ttl=64 time=0.606 ms
^C
--- 10.0.2.10 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3979ms
rtt min/avg/max/mdev = 0.411/0.489/0.606/0.079 ms
[ec2-user@ip-10-0-1-10 ~]$
(2)DBサーバーの秘密鍵をWebサーバーに格納します
TeraTerm > ファイル > SSH SCP
図13:SSH SCP

From欄の「…」ボタンをクリックし、秘密鍵のパスを指定します。
To欄が 「remote host home directory」(ec2-userホームディレクトリ)になっていることを確認します。
「Send」をクリックし、ファイル転送を実施します。
図14:SSH SCP

ec2-userのホームディレクトリに秘密鍵が格納されたことを確認します。
セキュリティ上、秘密鍵へのアクセス権を変更します。
[ec2-user@ip-10-0-1-10 ~]$ pwd
/home/ec2-user
[ec2-user@ip-10-0-1-10 ~]$ ll
total 4
-rw-r--r-- 1 ec2-user ec2-user 1696 Dec 18 08:23 blog-system.pem
[ec2-user@ip-10-0-1-10 ~]$
[ec2-user@ip-10-0-1-10 ~]$ chmod 400 ./blog-system.pem
[ec2-user@ip-10-0-1-10 ~]$ ll
total 4
-r-------- 1 ec2-user ec2-user 1696 Dec 18 08:23 blog-system.pem
[ec2-user@ip-10-0-1-10 ~]$
(3)DBサーバーにSSHで接続します
以下のコマンドを実行します。
ssh -i blog-system.pem ec2-user@10.0.2.10
(途中で「(yes/no)?」が返ってきたら「yes」を入力しエンターを押します。)
[ec2-user@ip-10-0-1-10 ~]$ ssh -i blog-system.pem ec2-user@10.0.2.10
The authenticity of host '10.0.2.10 (10.0.2.10)' can't be established.
ECDSA key fingerprint is 13:fb:e5:a4:b0:ab:ff:9d:4c:30:19:45:54:dd:aa:b3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.2.10' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
[ec2-user@ip-10-0-2-10 ~]$
[ec2-user@ip-10-0-2-10 ~]$ uname -n
ip-10-0-2-10
以上で、DBサーバーへの接続確認は完了です。
⑫ インスタンス作成(NATサーバー)
次にDBサーバーがMySQLインストールのためにインターネットに接続する必要があるため、プライベートサブネットからインターネットへ接続するためにNATサーバーのインスタンスを構築します。
NATインスタンス用セキュリティグループを作成後、インスタンス作成を実施します。
(1)セキュリティグループ作成
1.VPCダッシュボード > Security Groups > 「Create Security Group」をクリック
図15:Create Security Group

2.以下の設定を実施します。
・Security group name : blog-nat-sg
・Description : blog-nat-sg
・VPC : vpc-blog-system
許可ポート設定(Inbound)
DBサーバーからのHTTP・HTTPSとWebサーバーからのSSH接続を受け付けるようにします。
・Type : HTTP
・Port Range : 80 (自動設定)
・Source : Custom IP 10.0.2.0/24 (プライベートサブネットのCIDR)
・Type : HTTPS
・Port Range : 443 (自動設定)
・Source : Custom IP 10.0.2.0/24 (プライベートサブネットのCIDR)
・Type : SSH
・Port Range : 22 (自動設定)
・Source : Custom IP 10.0.1.10/32 (WebサーバーのプライベートIPアドレス)
図16:Create Security Group Inbound設定

許可ポート設定(Outbound)
セキュリティを高めるため、デフォルト設定の「All traffic」設定を「×」で削除します。
HTTP・HTTPSの通信のみ「Add Rule」で許可します。
・Type : HTTP
・Port Range : 80 (自動設定)
・Destination : Anywhere 0.0.0.0/0
・Type : HTTPS
・Port Range : 443 (自動設定)
・Destination : Anywhere 0.0.0.0/0
図17:Create Security Group Outbound設定

3.設定した内容を確認します
Inbound設定
図18:Inbound設定確認

Outbound設定
図19:Outbound設定確認

(2)NATインスタンスを作成します
「Launch Instance」をクリック。
図20:「Launch Instance」をクリック

(3)STEP1で「Community AMIs」で「ami-vpc-nat」を検索し、
「amzn-ami-vpc-nat-pv-2014.09.1.x86_64-ebs」の「Select」をクリック。
図21:STEP1 AMI指定

(4)STEP2で「t1.micro」を選択し「Next:~」をクリック
図22:STEP2 インスタンスタイプ指定

(5)STEP3画面で以下を設定します
・Network:vpc-blog-system [作成したVPC]
・subnet:vpc-blog-public [作成したパブリックサブネット]
・Auto-assign Public IP:Enable
図23:STEP3 インスタンス詳細設定

(6)STEP3 Network Interfaces
STEP3下部にNetwork Interfacesの項目で、プライベートIPアドレスとなる「Primary IP」を指定します。
今回は10.0.1.20を指定し、「Next:~」をクリックします。
図24:STEP3 Network Interface設定

Add Storage画面で値を入力し、「Next:~」をクリックします。
・Size(GiB):8 (デフォルト)
・Volume Type:「Magnetic」 から 「General Purpose(SSD)」 に変更します
図25:STEP4 Add Storage

(8)STEP5 インスタンスタグ
インスタンスのタグを作成します。例として以下を設定し「Next:~」をクリックします。
・Key : Name
・Value : blog-nat-srv
図26:STEP5 インスタンスタグ

(9)STEP6 セキュリティグループ設定
ファイアウォール設定として、セキュリティグループを設定します。
先程作成したセキュリティグループを指定して「Review and Launch」をクリックします。
図27:STEP6 セキュリティグループ設定

(10)STEP7 Review Instance Launch
設定内容を確認し「Launch」をクリックします。
図28:STEP7 インスタンスローンチ確認

(11)キーペアー指定
インスタンス接続に必要となるキーペアーを指定します。
キーペアーは、Webサーバーインスタンス起動時に作成したキーペアーを指定します。
下記を指定後「Launch Instances」をクリックします。
・Choose an existing key pair
・Key pair name : blog-system
・acknowledge ~ :チェック
図29:キーペアー指定

⑬ NATインスタンス起動
(1)インスタンス起動確認EC2ダッシュボード > 「Instances」
作成したインスタンスがrunningになっていることを確認します。
Descriptionタブにて設定した内容が反映されていることを確認します。
図30:インスタンス起動確認

(2)送信元/先チェックを無効化する
EC2 インスタンスは、送信元/送信先チェックをデフォルトで実行します。
NAT インスタンスは、送信元先が自分自身でないときにも、トラフィックを送受信できなければいけません。
そのため送信元/送信先チェックを無効にします。
1.「Actions」 > Networking > 「Change Source/Dest Check」をクリック
図31:Create Security Group

2.「Enable Source/Destination Check」画面で「Yes,Disable」をクリック
図32:Enable Source/Destination Check

3.「Source/dest. check」の項目が「False」になっていることを確認する
図33:「Source/dest. check」が「False」

(3)ルートテーブル更新(プライベートサブネット)
プライベートサブネットのルートテーブルは[Main]が[Yes]となっているデフォルトのメインルートテーブルです。プライベートサブネットのデフォルトゲートウェイをNATインスタンスに設定します。
Amazon Virtual Private Cloud ユーザーガイド (API Version 2014-02-01)
NAT インスタンス >メインルートテーブルを更新する
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html#nat-routing-table
1.VPCダッシュボード > Route Tables > 該当のルートテーブル
図34:Route Tables 画面

2.Routesタブ > 「Edit」ボタンをクリック
図35:「Edit」ボタンをクリック

3.以下のようにNATインスタンスを設定し、「Save」をクリック
・Destination:0.0.0.0/0
・Target:NATインスタンス名
図36:NATインスタンスを設定し「Save」をクリック

⑭ NATインスタンス疎通確認
プライベートセグメントのDBサーバーからインターネットに接続できることを確認します。(1)DBサーバーにログイン
Webサーバーにログイン後、DBサーバーにSSHでログインします。
図37:DBサーバーにログイン

(2)以下のコマンドを実行し、インターネットに接続できることを確認します。
curl www.google.co.jp
図38:インターネット接続確認

無事プライベートサブネットからインターネットに接続できることが確認できました。
以上で、DBサーバーインスタンス作成~接続確認~NATサーバーインスタンス作成~疎通確認が完了となります。次回はDBサーバーにMySQLとWebサーバーにWordPressのインストールを行います。
以上