#概要
忘れないように、EC2、RDSによるサーバー環境構築の手順をアウトプット。下記の構成にする。
#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は↓のルートテーブルで設定。
※DB用の2つ目のサブネットはスクショ省略。
##ルートテーブル(サブネット毎の通信先)の作成
- rtbはサブネット毎にどこに通信ができるかを定めたもの。
- VPC→サブネットを作ったらルートテーブルが自動でできる。今回自動作成されたルートテーブルには合計3つのサブネットが割り当てられている。
- IGWがrtbに関連づけられていないので、このままではすべてPrivateサブネットになる(上の画像)。
- そのため、EC2用にrtbを新たに作成。IGWをルートに追加する。これでEC2用サブネットはPublicサブネットになる(下の画像)。
##セキュリティグループの作成
- EC2やRDSインスタンスに発信、着信の許可リスト(通信方法やポート番号など)を設定する。
- webサーバー用インバウンドルール:SSH(ポート範囲22)、HTTP(80)、HTTPS(443)を許可
- RDS用インバウンドルール:MySQL(ポート番号3306)を許可、ソースはWebサーバー用のセキュリティグループIDを選択
- アウトバウンドは全てのトラフィックを許可
※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から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
設定したパスワードを入力。
#参考
大きな流れはこちらを参考にさせていただきました。ありがとうございました。
https://tech.recruit-mp.co.jp/infrastructure/retry-aws-minimum-vpc-server-environment/