本手順において、VPC1、サブネット2を作成済のものとする。
##1.サブネットグループ##
DBインスタンスをどのサブネットで起動しますか?と言うのを指定するグループです。
以下の通り入力し「作成」
項目 | 説明 |
---|---|
名前・説明 | demo-subnet-group |
VPC | 作成済のVPC |
アベイラビリティーゾーン | 作成済のサブネットのAZ |
ちなみに2つ以上のAZを指定しない場合、以下のようにエラーになります。
##2.パラメータグループ##
パラメータグループを使って、GUIからMYSQLなどの設定値をいじっていくことになります。(SSHはできない。)
以下の通り入力し「作成」。
項目 | 説明 |
---|---|
パラメータグループファミリー | mysql5.7 |
グループ名・説明 | demo-parameter-group |
##3.データベースの作成##
ステップ 2 ユースケースを選択します
「開発/テスト - MySQL」
ステップ 3 DB 詳細の指定
今回は以下の通り設定しました。
項目 | 説明 |
---|---|
ラインセンスモデル | General Pubric Licence |
DB エンジンのバージョン | MYSQL5.7.23 |
DB インスタンスのクラス | db.t2.micro 1vCPU,1GiB RAM |
マルチ AZ 配置 | 別のゾーンにレプリカを作成します |
ストレージタイプ | 汎用(SSD) |
ストレージ割り当て | 20GiB |
DB インスタンス識別子 | demo-db |
マスターユーザの名前 | root |
マスターユーザのパスワード | 任意 |
ステップ 4 [詳細設定] の設定
今回は以下の通り設定しました。
項目 | 説明 |
---|---|
ネットワーク & セキュリティ | 作成済のVPC |
サブネットグループ | 【1.サブネットグループ で作成したもの】 |
パブリックアクセシビリティ | いいえ パブリック IP アドレスを持たせて外から繋ぎに行くようにするかの設定です。 |
アベイラビリティーゾーン | 指定なし マルチAZ構成の作成のため |
VPC セキュリティグループ | 新規で VPC セキュリティグループ を作成 |
データベースの名前 | 空白 MYSQLコマンドで後で作成するものとします。 |
ポート | 3306 |
DB パラメータグループ | 【2.パラメータグループ で作成したもの】 |
オプショングループ | default.mysql-5.7 |
IAM DB 認証 | 無効化 |
バックアップの保存期間 | 2日間 |
バックアップウィンドウ | ウィンドウの選択で適当な日時を指定 |
拡張モニタリング | 拡張モニタリングを無効にする |
ログのエクスポート | チェックなし |
メンテナンス | 指定なし |
##4.EC2からMYSQLのエンドポイントをRDSのものにする##
構築済みのwebサーバーから、sshでRDSに接続してみます。
# EC2インスタンスへssh接続
$ ssh -i test.pem ec2-user@グローバルIP
# RDSのmysqlへ接続
$ mysql -h rds_endpoint -u root -p
# データベース作成
create database simple_blog;
use simple_blog;
# テーブル作成&データ挿入
create table posts (id int not null primary key, title varchar(100), detail varchar(1000), image varchar(1000));
insert into posts values (1, "XXXX-RDS", "XXXXXXXXXX", "./img/img1.jpeg");
insert into posts values (2, "YYYY-RDS", "YYYYYYYYYY", "./img/img2.jpeg");
# EC2インスタンスのindex.phpのエンドポイントをRDSのものにする。
$ sudo vim /var/www/html/index.php
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>
これでマスター側がフェールオーバーしたとき、自動的にフェールオーバー先のIPアドレスにDNSが解釈されますので、アプリケーションのコードを変えずとも、フェールオーバー先のDBをみることができます。