今回はAWSを利用し、自身でサーバーを立て、記事のキーワードを自動抽出するWebアプリケーションを作成してみました。
目次
概要
今回はAWSを使用してWebサーバー、DBサーバー、それらを置くローカルネット、外部からインターネットからアクセスできるようDNSの設定を行っていきます。
- AWS上にローカルネット(右 VPC 10.0.0.0/16)を作成し、2つのサブネットを作成します。
- パブリックサブネット(10.0.10.0/24)
- Webサーバーでありインターネットからアクセス可能
- プライベートサブネット(10.0.20.0/24)
- DBサーバーでありパブリックサブネット以外アクセス不可能
- パブリックサブネット(10.0.10.0/24)
- AWSのDNSサービスであるRoute 53を使用し、グローバルIPアドレスとドメイン名を紐づけ
このような構成を作成しています。
利用しているサービス
ドメイン取得
ローカルネット、サブネット構築関連
VPC
Webサーバー関連
仮想マシン導入 | WebサーバーOS導入 | Webサーバー用ソフトウェア |
---|---|---|
EC2 | AMI | Apache |
DBサーバー関連
DBサーバー構築 | DB用ソフトウェア |
---|---|
RDS | MySQL |
DNS(Domain Name System)
Route53
VPC作成
VPC(Virtual Private Cloud)はAWS上に仮想ネットワークを作成できるサービスです。
今回はWebサーバーはインターネットから接続できるようにしたい。しかし、DBサーバーはWebサーバーからしか接続できないようにしたいので、VPC内のサブネットを2つ作成することにしました。
VPCを作成
まずは、下記のようにVPCを選択し、VPCを作成 をクリックし作成してください。
作成したVPCの設定
作成するリソース | 名前(任意) | IPv4 CIDR(任意) | IPv6 CIDR | タグ |
---|---|---|---|---|
VPCのみ | aws-and-infra-vpc | 手動で 10.0.0.0/16 | IPv6 CIDRブロックなし | タグなし |
今回ローカルIPアドレスはCIDR形式で記述しています。これをサブネットマスク形式で書くと10.0.0.0/255.255.0.0になります。
CIDR形式をもっと知りたい人はこちらの記事に詳しく書いてありますので参考にしてください。
サブネットを作成
今回はパブリックサブネットとプライベートサブネットの2つを作成していきます。
まずは、下記のようにVPCを選択し、サブネットを作成 をクリックし作成してください。
今回は先程作成したVPC内でサブネットを作成するため以下のようにVPC IDを設定します。
Webサーバーを置くサブネットの設定
サブネット名(任意) | アベイラビリティーゾーン(後述) | IPv4 CIDR(任意) | タグ |
---|---|---|---|
aws-and-infra-public-subnet-1a | アジアパシフィック(東京)/ap-northeast-1a | 10.0.10.0/24 | タグなし |
DBサーバーを置くサブネットの設定
サブネット名(任意) | アベイラビリティーゾーン(後述) | IPv4 CIDR(任意) | タグ |
---|---|---|---|
aws-and-infra-private-subnet-1a | アジアパシフィック(東京)/ap-northeast-1a | 10.0.20.0/24 | タグなし |
- アベイラビリティーゾーン(AZ)とはリージョンよりも小さな区分けで、特定エリア内のデータセンターの集まりのこと。
- これにより、AZで障害が発生しても他のAZは利用可能なため、可用性の高いサーバーを構築できる。
ルーティング設定
上記でVPCとサブネットを作成しましたが、現状ではインターネットに接続できません。なのでVPC内のルーティングテーブルにインターネットゲートウェイを登録し、インターネットと接続できるようにします。
まず、左側のメニューからインターネットゲートウェイを選択し、インターネットゲートウェイの作成 をクリックし作成してください。
インターネットゲートウェイの設定
名前タグ(任意) |
---|
aws-and-infra-igw |
作成したインターネットゲートウェイを上記で作成したVPCへアタッチしてください。
そしてルートテーブルを作成していきます。
まず、左側のメニューからインターネットゲートウェイを選択し、ルートテーブルを作成 をクリックし作成してください。
ルートテーブルの設定
名前タグ(任意) | VPC |
---|---|
aws-and-infra-igw | aws-and-infra-vpc |
作成したルートテーブルを選択し、下記の図のルートからルートの編集、サブネットの関連付けからパブリックサブネットに関連付けを行います。
ルートの編集(下記を追加)
送信先 | ターゲット |
---|---|
0.0.0.0/0 | 先程作成したインターネットゲートウェイ |
- 0.0.0.0/0は指定されていない通信すべてを指す。
サブネットの関連付け
- パブリックサブネット(aws-and-infra-public-subnet-1a )
を実行してください。
これでAWS上に仮想ネットワークが構築され、インターネットゲートウェイを通じてインターネットと通信が可能になりました。
Webサーバー構築
EC2を使用して、WebサーバーをVPC内のパブリックサブネット上に作成しました。
EC2とはAWSクラウド上の仮想サーバーを作成できるサービスです。様々なマシンスペック、OSなど細かく設定でき、サーバーの追加・削除・仕様変更などを簡単に操作することができます。
基本的な流れは
- EC2インスタンスを設置する
- 基本的に無料枠を選択
- SSHでEC2に接続
- Apacheのインストール
- ファイアウォールの設定
- 基本的な方針
- インバウンド通信はSSHのみ
- アウトバウンド通信はすべて
- 基本的な方針
- ElasticIPアドレス
- 固定グローバルIPを取得
です。
詳細はこちらの記事を参考にしてください。
DBサーバー構築
RDSを使用して、DBサーバーをVPC内のプライベートサブネット上に作成しました。
RDSとはフルマネージドなリレーショナルデータベースを作成できるAWSのサービスです。具体的にはOSインストールやアップデートスケーリングなどの構築・運用の手間を軽減することが出来ます。また、DBサーバーに必要な可用性(DBサーバーを継続的に運用する能力)を簡単に獲得することも可能です。
基本的な流れ
- プライベートサブネット作成(マルチAZにする人)
- 注意
- DBサーバーを置くサブネットは前回作成しているので必要ないです。
- マルチAZにするためなのでAZを違うところに置いておくことに注意してください。
- 注意
- セキュリティグループ設定
- セキュリティグループはDB専用を設定
- RDSでDB作成
- 注意
- マルチAZにしない限り無料枠を使いましょう。
- 費用が2000円ぐらいになるため、ちょっときつい。
- 注意
- Webサーバーから接続確認
DNS
DNSとはDomain Name Systemというドメイン名の管理システムです。具体的な処理としてはドメイン名をIPアドレスに変換する作業を行っています。AWSにはRoute 53というDNSサービスがあり、今回はそれを使用して取得したドメイン名をIPアドレスに変更するシステムを構築していきます。
執筆途中
Elastic IP
終わりに
本記事では主にVPC,EC2,RDSなどを使いWebサイトのサーバーを構築してきました。このあたりまで終えるとWebサイトを立ち上げることができ、とても実感がわきます。
注意点ですが、無料枠を使用していないRDSの料金が思った以上にかかりました...マルチAZにしないのであれば、無料枠を使用したほうがいいかと思います。
次の記事ではWebサイト上に記事のキーワード抽出ができるサービスを実装していきます。