Blogical

AWS/Salesforceを中心に様々な情報を配信していきます(/・ω・)/

【AWS入門】スケーラブルな構築をしてみよう(3)

こんにちは、ロジカル・アーツの井川です。

第三回記事です。ちょうど折り返しですね。今回はRDSインスタンスMySQL)を作成をして、EC2インスタンスを経由して接続してみたいと思います。各回のおおまかな流れは以下の通りでした。

今回の作業を終えると、次のような構成が完成します。

f:id:logicalarts:20191018172546p:plain

不要に見えるサブネットたちがありますが、RDSインスタンスを作成するときに必要になります。 なお、前回までの記事を前提に進めていくので、あらかじめご承知おきください。

RDSとは

RDS(Relational Database Service)とは、その名の通りAmazonが提供するリレーショナルデータベースサービスのことです。現在は次の六種類のデータベースエンジンが利用可能です。今回はMySQLを使用します。

準備(サブネットの追加)

RDSインスタンス作成時に、DB(データベース)サブネットグループを作成する必要がありますが、このとき異なるアベイラビリティゾーンにあるサブネットを指定しなければなりません。そういうわけで、RDSインスタンスを作成する前に、サブネットを作成することから始めます。

1. 既存サブネットのリネーム

その前に、作成したサブネットがどのアベイラビリティゾーンで作られたかを分かり易くするため、名前を付け直しましょう。

VPC管理ページに移動します。左側の「サブネット」を選択し、「sample-public」と名前を付けたサブネットを選択します。それから、「タグの追加/編集」をクリックします。

f:id:logicalarts:20191018172815p:plain

値を「sample-public-1a」に変更し、「保存」をクリックします。

f:id:logicalarts:20191018172821p:plain

同様にして、「sample-private」サブネットを「sample-private-1a」にリネームします。

f:id:logicalarts:20191018172825p:plain f:id:logicalarts:20191018172831p:plain

2. サブネットの作成

それではサブネットを作成していきます。作り方は以前とほぼ同じです。今回もパブリックサブネットとプライベートサブネットを一つずつ作ります。

左側の「サブネット」を選択し、「サブネットの作成」をクリックします。

f:id:logicalarts:20191018172623p:plain

次のように設定してサブネットを作成します。アベイラビリティゾーンは以前と異なる 「ap-northeast-1c」を選ぶことに注意してください。

名前 VPC アベイラビリティゾーン IPv4 CIDR ブロック
sample-public-1c 「sample」と名前を付けたもの ap-northeast-1c 10.0.3.0/24
sample-private-1c 「sample」と名前を付けたもの ap-northeast-1c 10.0.4.0/24

サブネットを作成したら、「sample-public-1c」をパブリックサブネットにします。初回記事にあるように、ルートテーブルを次のように編集すれば完了です。

左側の「ルートテーブル」を選択し、「sample-public」と名前を付けたルートテーブルを選択します。それから「サブネットの関連付けの編集」をクリックします。

f:id:logicalarts:20191018172801p:plain

先程作成した「sample-public-1c」サブネットを関連付けて「保存」をクリックします。

f:id:logicalarts:20191018172809p:plain

これで準備が終わりました!

RDSインスタンスの作成

RDSインスタンスを作成していきますが、ここでも先に設定しておくことがあります。

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

まずはDB用のセキュリティグループを作成します。

EC2管理ページに移動します。左側の「セキュリティグループ」を選択し、「セキュリティグループの作成」ボタンを押下します。

f:id:logicalarts:20191018172750p:plain

「セキュリティグループ名」「rds-sg」「説明」「Security group for RDS」と入力します。VPCはいつものように「sample」と名前の付けたものを選択します。 「ルールの追加」をクリックし、「タイプ」MySQL/Aurora」を選択します。「ソース」はEC2に割り当てたセキュリティグループ(ec2-sg)を選択します(ec2-sgと入力すると、該当するセキュリティグループが現れると思います)。最後に「作成」をクリックします。こうすることで、作成したRDSインスタンスには前回作成したEC2インスタンス(正確に言えばec2-sgという名前のセキュリティグループが割り当てられているインスタンス)を経由したアクセスしか許可しません。

f:id:logicalarts:20191120162552p:plain

これで、DB用のセキュリティグループの作成が終わりました。

DBサブネットグループの作成

次にDBサブネットグループを作成していきます。

マネジメントコンソール画面から「RDS」と検索し、表示された「RDS」をクリックしてRDS管理ページに移動します。 f:id:logicalarts:20190927091011p:plain

左側の「サブネットグループ」を選択し、「DBサブネットグループの作成」をクリックします。

f:id:logicalarts:20191018172640p:plain

「名前」「rds subnet sample」「説明」「sample」と入力し、VPCは例のごとく「sample」と名前の付いたものを選択します。

f:id:logicalarts:20191120162611p:plain

画面の下の方に遷移して、サブネットを追加していきます。まずアベイラビリティゾーン」「ap-northeast-1a」を選択し、「サブネット」「10.0.2.0/24(プライベート)」を選択します。「サブネットを追加します」をクリックすれば、指定したサブネットが追加されます。同様にして、アベイラビリティゾーン「ap-northeast-1c」のサブネット「10.0.4.0/24」を追加します。その後、「作成」をクリックします。

f:id:logicalarts:20191120162616p:plain

RDSインスタンスMySQL)の作成

ようやくインスタンスの作成に入ります。RDS管理ページに戻り、左側の「データベース」を選択して「データベースの作成」をクリックします。

f:id:logicalarts:20191018172659p:plain

今回は「標準作成」を選択し、エンジンのタイプはMySQLを選択します。

f:id:logicalarts:20191018172634p:plain

テンプレートは「無料利用枠」を選択しましょう。

f:id:logicalarts:20191018172704p:plain

「DBインスタンス識別子」「sample」とし、「マスターユーザー名」「admin」とします。パスワードは自動生成を選択するか、自分で決めたものをマスターパスワード欄とパスワードを確認欄に入力します。

f:id:logicalarts:20191120173609p:plain

以下しばらくは特に変更せず進みます。

f:id:logicalarts:20191018172714p:plain f:id:logicalarts:20191018172719p:plain

VPC「sample」と名前を付けたものを選択し、「追加の接続設定」をクリックします。「サブネットグループ」は上で作成した「rds subnet sample」を選択します。

f:id:logicalarts:20191120173614p:plain

VPCセキュリティグループ」「既存の選択」を選び、上で作成した「rds-sg」を選択します。アベイラビリティゾーン」「ap-northeast-1a」を選択します。

f:id:logicalarts:20191120173619p:plain

あとはそのままにして、「データベースの作成」をクリックします。

f:id:logicalarts:20191018172735p:plain

しばらく待つとデータベースが作成されるので、作成されたらEC2インスタンスを経由して接続してみましょう。「ステータス」「作成中」から「利用可能」に変われば作成されています。

f:id:logicalarts:20191122165156p:plain f:id:logicalarts:20191122165201p:plain

作成したMySQLへの接続

まず、EC2インスタンスSSH接続する必要があります。接続方法は前回の記事を参考にしてください。 MySQLに接続するためにはMySQLコマンドラインクライアントをインストールする必要があります。 EC2インスタンスに接続できたら、次のコマンドを実行しましょう:

sudo yum install -y mysql

f:id:logicalarts:20191122165339p:plain

インストールが完了したら、次のコマンドを実行します。このコマンドで作成したMySQLに接続できます(入力時に波括弧は必要ありません)。

mysql -u {マスターユーザー名} -p -h {RDSのエンドポイント}

f:id:logicalarts:20191122165343p:plain

マスターユーザー名は「admin」でした。RDSエンドポイントは次のようにして得られます。 まず、RDS管理ページに移動し、DB識別子(sample)をクリックします。

f:id:logicalarts:20191125111619p:plain

「接続とセキュリティ」にあるエンドポイントをすべてコピーして貼り付ければ大丈夫です。

f:id:logicalarts:20191122165151p:plain

パスワードの入力が求められるので、上で設定したマスターパスワードを入力します(パスワードは画面に表示されません)。パスワードが正しければ以下の画面になります。

f:id:logicalarts:20191018172609p:plain

これで接続ができました!

ついでにひとつコマンドを実行してみましょう:show databases; 

このコマンドを実行すると、接続したMySQLサーバにあるデータベース一覧が表示されます。

f:id:logicalarts:20191018172613p:plain

RDSインスタンスの削除方法

不要なRDSインスタンスは次のように削除できます。

RDS管理ページから左側の「データベース」を選択した状態で、削除したいRDSインスタンスを選択します(下の例では「DB 識別子」「sample」のもの)。その後、「アクション」プルダウンメニューをクリックし、「削除」をクリックします。

f:id:logicalarts:20191220154838p:plain

次の画面で、「最終スナップショットを作成しますか」のチェックをはずし、インスタンスの削除後、~」にチェックを入れます。下の入力欄に「delete me」と入力し、「削除」をクリックすればRDSインスタンスが削除されます。

f:id:logicalarts:20191220152936p:plain

おわりに

スケーラブルな構成が、だんだんと形になってきました。ここまで読まれてきた方にとって、RDSインスタンスの作成自体はそれほど大変ではなかったと思います。相変わらず何をしているかは分かりにくいですが、、、今回と同じような構成をもうひとつ作ればスケーラブルになりそうに見えますが、実は次回が一番大変です。

参考サイト