NEWSニュース&ブログ

基礎からすぐできるAWS 簡易ブログシステムの構築4

この記事は最終更新から10年以上経過しています。内容が古くなっている可能性があります。

投稿日:2015/3/10

基礎からすぐできるAWSと題した簡易ブログシステム構築の4回目です。
前回は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サーバー(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設定 (7)STEP4 ストレージ設定
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インスタンス作成が完了となります。

 

⑬ 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のインストールを行います。

以上