0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EC2、RDSによるアプリケーションサーバー環境構築

Last updated at Posted at 2020-09-03

#概要
忘れないように、EC2、RDSによるサーバー環境構築の手順をアウトプット。下記の構成にする。
AWS.png

#VPC(Virtual Private Cloud)の作成
VPCは仮想的なネットワークで、大きな箱のイメージ。後々、この中にEC2やRDSインスタンスを配置。

#IGWの作成とアタッチ
インターネットの玄関口をVPCにアタッチ。

#サブネットの作成
##用途別(EC2・RDS)サブネットの作成
VPCは大きな箱であるのに対し、サブネットはその中にある小さい箱のイメージ。今回は下記のサブネットを作成。
今回、シングルAZ配置としてRDSインスタンスは1つのみ作成。しかし、なぜか2つの異なったサブネット(しかも異なったAZのもの)が後のRDSの設定で必要になる(マルチAZ配置を見据えた構成?)。

※:Availability Zone:データセンター群

  • WEBサーバー用(Publicになる予定):AZ→ap-notrheast-a
  • RDS用①(Privateになる予定):AZ→ap-notrheast-a
  • RDS用②(Privateになる予定):AZ→ap-notrheast-c

※PublicかPrivateは↓のルートテーブルで設定。
サブネットserver用.png
サブネットDB1.png
※DB用の2つ目のサブネットはスクショ省略。

##ルートテーブル(サブネット毎の通信先)の作成

  • rtbはサブネット毎にどこに通信ができるかを定めたもの。
  • VPC→サブネットを作ったらルートテーブルが自動でできる。今回自動作成されたルートテーブルには合計3つのサブネットが割り当てられている。
  • IGWがrtbに関連づけられていないので、このままではすべてPrivateサブネットになる(上の画像)。
  • そのため、EC2用にrtbを新たに作成。IGWをルートに追加する。これでEC2用サブネットはPublicサブネットになる(下の画像)。
    rtb-private.png
    rtb-public.png

##セキュリティグループの作成

  • EC2やRDSインスタンスに発信、着信の許可リスト(通信方法やポート番号など)を設定する。
  • webサーバー用インバウンドルール:SSH(ポート範囲22)、HTTP(80)、HTTPS(443)を許可
  • RDS用インバウンドルール:MySQL(ポート番号3306)を許可、ソースはWebサーバー用のセキュリティグループIDを選択
  • アウトバウンドは全てのトラフィックを許可
    セキュリティグループ:サーバー用.png
    セキュリティグループ:DB用.png
    ※webサーバーのスクショではTomcatのために8080ポートも許可してある。

#サーバー用EC2インスタンスの作成
##ssh接続に必要なキーペアの作成
ローカルの任意の場所に保存しておく。自分のPCからsshでEC2インスタンスに接続するのに必要。

##EC2インスタンスの作成(詳細)

  • AmazonLinux2
  • t2.micro
  • 作成したEC2用のセキュリティグループを設定
  • あとは適当

##ElasticIPの作成と割り当て

  • EC2インスタンスに割り当てられるパブリックIPアドレスは、デフォルトでは動的のため、起動しなおすと値が変わってしまう。
  • そのため、Elastic IPアドレスを設定すると固定のパブリックIPアドレスとすることができる。

今回の場合、EIPを割り当てたEC2が起動中は無料だが、逆にこのEC2を止めるとお金が発生するらしい。。。
https://dev.classmethod.jp/articles/cost-of-eip/

#RDSインスタンスの作成
##RDS用のサブネットグループを作成
VPCの中でどのサブネットたちがDB用なのかを設定する必要があるらしい。設定画面で、作成したVPCと下記のサブネットを選択しグループを作成。
このグループは後のRDSインスタンス作成で必要になる。

  • RDS用①(Private):AZ→ap-notrheast-a
  • RDS用②(Private):AZ→ap-notrheast-c

##RDSインスタンス作成(詳細)
・MySQL(8.0.19:自分の場合)
・無料利用枠、マルチAZ配置にしない。
・DB用のサブネットグループを指定
・DB用に作成したセキュリティグループ選択
・作成したVPC選択
・パブリックアクセス可能→なし
・データベースポート:3306
・バックアップ保存期間:1日
・アベイラビリティーゾーン:指定無し(今回はap-northeastのaかcどっちかになるっぽい。指定しても良い)
・ユーザー名、パスワードは忘れないように(接続で必要)。

#EC2へSSHで接続確認
自分のPCのキーペアがあるディレクトリに移動。あとはターミナルでEC2コンソール画面通りにコマンドを実行。

EC2接続その2.png

#EC2からRDSインスタンスへ接続確認
##EC2へMySQLをインストール
こちらの記事の「インストール」の項目を参考にさせていただきました(こちらの記事はMySQL5.7ですが、今回は8.0なので適宜読み替え)。インストール、自動起動設定まで終わらせておく。
AmazonLinux2に標準で入っているmariaDBは自動でMySQLと入れ替わるとのこと。

$ yum info mysql
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
エラー: 表示するパッケージはありません

> #mysql8.0リポジトリの追加(このリポジトリに5.7も含まれています)
> $ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y

> #mysqlインストール
> $ sudo yum install mysql-community-server -y
> $ mysqld --version
> mysqld  Ver 5.7.22 for Linux on x86_64 (MySQL Community Server (GPL))

> #自動起動設定
> $ sudo systemctl start mysqld.service
> $ sudo systemctl enable mysqld.service
> $ systemctl status mysqld.service

##接続確認
mysql -h {RDSのエンドポイント} -P 3306 -u {RDSインスタンスのユーザー名} -p
設定したパスワードを入力。
スクリーンショット 2020-09-03 13.14.43.png

#参考
大きな流れはこちらを参考にさせていただきました。ありがとうございました。
https://tech.recruit-mp.co.jp/infrastructure/retry-aws-minimum-vpc-server-environment/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?