EC2でWebサーバーを構築する方法をまとめます。
EC2とは
Elastic Compute Cloudの略でAWS上の仮想サーバーです。
数分で起動することができ、1時間または秒単位の従量課金サーバーです。サーバーの追加・削除、マシンスペックの変更も行え、OSより上のレイヤについて自由に設定できます。
作成手順
手順は以下の通りです。
- AMIの選択
- インスタンスタイプの選択
- ストレージの追加
- セキュリティグループの設定
- SSHキーペアの設定
AMIとは
Amazon Machine Imageでインスタンス起動に必要なOSのイメージで、サーバのテンプレートのようなものです。
AWSやサードパーティがAMIを提供で、自前のカスタムAMIを作成することも可能です。
インスタンスタイプ
サーバーのスペックを定義したものです。以下の特徴があります。
- インスタンスタイプにより、CPU、メモリ、ストレージ、ネットワーク帯域が異なります
- インスタンスタイプにより料金が異なりスペックが高いほど料金も高いです。
- アクセス数などに応じて必要なスペックのあるインスタンスタイプを選択します。
表記:m5.xlarge
m:インスタンスファミリー。インスタンスの特徴、CPU/メモリ/料金を最適化したものなどあります。
5:インスタンス世代。数値が大きいほど新しい世代で性能やコスパが良いです。
xlarge:インスタンスサイズ。CPUやメモリ、ネットワーク許容量が大きいです。
ストレージ
サーバーに紐付けるデータの保存場所でEC2のストレージは2種類あります。
EBS
Elastic Block Storeの略で以下の特徴があります。
- 高い可用性と耐久性を持つストレージ
- 他のインスタンスに付け替え可能
- EC2インスタンスを止めたり削除してもEBSのデータは消えない
- スナップショットを取得してS3に保存可能
- EBSの費用が別途発生
- OSやDBデータなど、永続性と耐久性が必要なデータを置く
インスタンスストア
- インスタンス専用の一時的なストレージ
- 他のインスタンスに付け替えできない
- EC2インスタンスを停止、削除するとクリアされる
- 追加費用は掛からない
- 一時ファイルやキャッシュなど削除されても問題ないデータをおく
EC2の作成
- マネージメントコンソールでEC2作成を選択する
Amazon Linux 2 AMI (HVM), SSD Volume Type
を選択する
- インスタンスタイプに
t2.micro
を指定
- ネットワークにVPC、サブネットにパブリックサブネット、パブリックIPは有効、キャパシティーの予約はなし、プライマリIPを指定します。プライマリIPはパブリックサブネットのIPアドレスの範囲内で指定します。
項目 | 説明 |
---|---|
スポットインスタンス | 購入のオプションでスポットインスタンスにすると、より安価に利用できるが常時起動でなくなる。 |
配置グループ | 複数のEC2インスタンスの通信を高速化するグループ |
キャパシティの予約 | 事前リソースを確保しておくかどうか。 アベイラビリティゾーン毎にリソースの上限があり、上限を超えるとインスタンス起動できなくなるが、予約しておくとこういった問題を回避できる。 ただし、EC2インスタンスを起動していなくても料金が掛かってしまう。 |
IAMロール | EC2インスタンスが他のAWSサービスを利用するために必要な権限。 |
シャットダウン動作 | シャットダウン時に停止するか削除するかの設定。 |
停止-休止動作 | インスタンスのRAMにある情報を保存するかどうか。 |
終了保護の有効化 | 誤って終了しないように保護する。 |
モニタリング | インスタンスの監視を1分間隔にするかどうか。デフォルトは5分間隔 |
テナンシー | 専用のハードウェアをしようするかどうか |
Elastic Inference | 機械学習を行う際にコスト効率をよくするために使う |
T2/T3 無制限 | T2/T3系のインスタンスにはベースラインというものがあり、それを下回っているとCPUクレジットが溜まっていく。 閾値は10%でCPU使用率が10%以下ならクレジットが溜まり、10%を超えるとバーストモードに入りCPUクレジットを消費していく。 CPUクレジットを使い切るとサイトレスポンスが遅くなるが、この設定をONにしておくとクレジットを使い切ったあともバーストモードが維持されるがその間別途料金が掛かる。 |
- ボリュームタイプを指定する。
ボリュームタイプはEBSかインスタンスストアを指定できる。ルートはOSが入っているストレージでAMIによってEBSかインスタンスタイプかが決まっている。
デバイスはマウント先。
スナップショットはEC2のスナップショットで、スナップショットから新たなEBSを作成することも出来る。
項目 | 説明 |
---|---|
ボリュームタイプ | 汎用SSDは性能と価格のバランスが取れていて一般的にはこれを利用する。 プロビジョンどIOPS SSDはDBサーバーなど高いIOが必要な場合に指定する。 マグネティックは逆に低いIOでも問題ない場合に使用する。 |
IOPS | プロビジョンどSSDの場合に指定できるパフォーマンス値 |
スループット | 1秒間のデータ転送速度 |
終了時に削除 | EC2インスタンス終了時に削除するかどうか、消し忘れによる課金を防止できる |
-
起動を押下するとキーペアの設定モーダルが表示されので新しいキーペアの作成とキーペア名を入力しダウンロードする。その後インスタンスの作成を実行する。
キーペアはEC2インスタンスにアクセスするために必要なものです。
しばらく待っているとステータスがrunning
になります。
Apacheのインストール
-
鍵ファイルの権限変更
ダウンロードしたキーペアを指定します。$ chmod 600 sample-ssh-key.pem
-
EC2インスタンスのパブリックIPでSSHログイン
ssh -i sample-ssh-key.pem ec2-user@xx.xx.xx.xx
-
yum update
sudo yum -y update
-
apacheインストール
sudo yum -y install httpd
-
起動、自動起動設定
sudo systemctl start httpd.service sudo systemctl enable httpd.service
ファイアーウォールの設定
AWSではセキュリティグループがファイアウォールの役割を担っています。
サーバーへ入ってくる通信(インバウンド)のポートは必要なものだけ開けます。サーバーから出ていく通信(アウトバウンド)のポートは制限しない場合が多いです。
ポート80番を開放する
デフォルトはSSH接続の22番ポートしか開いておらず、HTTPアクセスが出来ないので80番ポートを開放します。
- EC2インスタンスを選択し、説明タブから
セキュリティグループ
を選択する - インバウンドタブを選択し、編集を選択しHTTPルールを追加する。ソースは
任意の場所
を選択する。
- パブリックIPアドレスにブラウザでアクセスすると、Apacheの初期ページが表示されます。
Elastic IPでIPアドレスを固定化する
EC2インスタンスのパブリックIPは、起動・停止すると別のIPアドレスが割り当てられるため、Elastic IPアドレスを使用して固定化します。
ElasticIPの特徴は以下の通りです。
- グローバルIPアドレスを取得してインスタンスに付与できるサービス
- インスタンスを削除するまではそのIPアドレスを使用することができる
- Elastic IPはEC2インスタンスに関連付けられており、インスタンス起動中は無料だが停止中は課金されるため、EC2インスタンスを利用しない時は解放しておく。
- EC2ダッシュボードのElastic IPから新しいアドレスの割り当てページを開き割り当てを実行する
- ElasticIPを指定してアクションのアドレスの関連付けを選択する
- インスタンスとプライベートIPを指定して関連付けを行う。
ElasticIPでブラウザアクセスすると同様にApacheのページが表示されます。
解放する場合はアクション
からアドレスの関連付けの解除
を実行します。