はじめに
この記事はアプリのデプロイの下地となるインフラ構築の要点
をまとめたものとなります。
実装手順には触れていないのでご了承ください。
実装環境
作業環境
・macOS Catalina 10.17.5
AWS上環境
・マシンイメージ Amazon Linux 2
・インスタンスタイプ t2.micro
実装概要図
1.VPC
VPCとはVirtual Private Cloudの略であり、その名の通りプライベートなネットワーク空間である。
これを用いることで物理的な世界でいうルーターや機器配線を準備をすることと同等の事が実現できる。
サブネットの作成
プレフィックス値を/24
としVPC領域のネットワークを256分割して運用していく
サブネットは2つ作成しそれぞれインターネットに直接接続するパブリックサブネット
、直接接続をしないプライベートサブネット
とする。
インターネットゲートウェイの作成、アタッチ
現状、作成したネットワークはインターネット接続できないため、VPCサービスの提供するインターネットゲートウェイを作成しVPC領域にアタッチを行いインターネット通信を可能にする
パブリックサブネットをインターネット接続
パブリックサブネットへのインターネット接続はまだ叶わないため、先ほど作成したインターネットゲートウェイをデフォルトゲートウェイとして利用するためパブリックサブネット用のルートテーブルを作成し、割り当てを行う。
デフォルトゲートウェイとは
「転送先が何も設定されていない時の、デフォルトの転送先」、この転送先をデフォルトゲートウェイと呼ぶ
全てのIPアドレスを示す「0.0.0.0 /0]
をルートテーブルに作成し「転送先が何も設定されていない」を実現させる。
2.仮想サーバー構築
インスタンスの作成
ここでのインスタンスはAmazon EC2というサービスで作成した仮想サーバをいう。
(EC2はIaasと言われるネットワークからOSまでを仮想環境に構築できるサービスの一種)
パブリックIPアドレスの割り当て
このインスタンスはWebサーバとして運用するためインターネットと通信できるようにするためパブリックIPアドレスを割り当てる
Elastic IPアドレス
作成したインスタンスは起動/停止を操作できるのだが、その度に割り当てられるパブリックIPアドレスは変更される。
そうならない様にする機能としてElastic IPがあり、これによって作成したアドレスをインスタンスに割り当てる事で固定化する事ができる。
キーペアの作成
今後はインスタンスへログインして環境構築を行うため、SSHを用いてアクセスする際に必要なキーペアを作成する。
### セキュリティグループの設定
パケットフィルタリングというパケット情報からデータ通過の可否を決める仕組みがあり、AWSではセキュリティグループがこれに該当する。
現状ではSSH通信のみを許可したいためポート22番を開けるという設定にしておく。
3.Webサーバーの構築
Apacheのインストール
前の章で作成したサーバをWebサーバとして運用するためApacheと呼ばれるWebサーバ機能を提供するソフトを導入する
自動起動設定
systemctlコマンドを使って仮想マシンが再起動した際にApacheが自動起動するための設定を行う
セキュリティグループの再設定
現状、通信はSSHだけ許可しているため外部からのアクセスができない、そのためセキュリティグループの設定からポート番号80(HTTP)を開ける事でWebブラウザからのインスタンスへのアクセスを可能にする。
DNSによる名前解決
パブリックIPアドレスでのアクセスは問題があるためドメイン名(www.xxx.~)を用いる。
TCP/IPではあくまでIPアドレスで相手を判別するためDNS
を用いてドメイン名からIPアドレスを引き出す。(名前解決)
AWSではVPCサービスで自動でDNS名を作成してくれる機能があるのでそれを利用する。
4.プライベートサーバの作成とデータベースソフトのインストール
プライベートサーバ
このサーバーにはWebサーバーで処理したデータのみを格納したいためバブリックサーバーの様なインターネットとの直接通信を行わない設定を行う。
DBサーバとしてインストールするMariaDBの通信は許可したいのでポート番号3306は通す設定にする。
またWebサーバーとの接続を確認するためにICMPプロトコルを用いるため、こちらもセキュリティグループで通信を許可しておく
pingによる疎通確認とWebサーバを経由してのSSH接続
WebサーバからICMPプロトコルのpingを使ってIPアドレスを用いてDBサーバと疎通ができるか確認を行う。
DBサーバはインターネットからの通信ができないためWebサーバにログインしたのちSSHを用いてログインできることを確認する。
そうすることでDBサーバの設定やメンテナンスが可能になる。
NATゲートウェイを使ったDBソフトウェアのインストール
NATゲートウェイを用いてDBサーバのIPアドレスでインターネットにアクセスすることなく通信を行いセキュリティを高める。
NATとは
IPアドレスを変換する装置である。
今回はパブリックIPアドレスとプライベートIPアドレスを設定することでDBサーバからプライベートIPでNATにアクセスし、そこからNATのパブリックIPでインターネットにアクセスすることでDBサーバの宛先が認識されずインターネット側からのアクセスを遮断できる。
DBサーバソフトのインストール
NATのおかげでインターネットとの通信が可能になったのでDBサーバ用のMariaDBをインストールする。
最後に
アプリケーションをデプロイし運用するためのマシンとネットワーク環境が整った。
この下地には直接アプリの運用環境を作るのではなくDockerによるコンテナ技術を使って構築を行っていく。
そうなるとWebサーバに入れたApacheの運用作業が二度手間になってしまうが、サーバの正常稼働の確認ができたのでよしとする。
AWSの提供するNATゲートウェイは通信時間での課金が行われるためDBの長期運用予定がない限り削除しておくのが良いと思われる。