zatsu na benkyou matome saito

勉強したことをまとめるだけのサイト、数学、プログラミング、機械学習とか

#4: インフラについて簡単に理解する [RDS]DBサーバーを構築

  1. RDSについて
  2. プライベートサブネットの作成
  3. RDSを設置
  4. WebサーバーからRDSに接続する

RDS

今回構築するもの

スクリーンショット 2020-11-03 22.16.34.png (224.2 kB) - プライベートサブネットにDBを置くことで外部からのインターネットによる接続をできないようにして安全性を担保する。 - RDSは複数のアベイラビリティーゾーンに用意しておくことを推奨しているため、別のアベイラビリティーゾーンを用意しておく必要がある。そのため、2つ以上のプライベートサブネットを2つ以上の別のアべイラビリティゾーンにおく必要がある。

1. RDSについて

スクリーンショット 2020-11-03 22.19.39.png (369.8 kB)

マルチAZというRDSの可用性(DBが死んでも復活させやすいこと)を保つシステムがあるが、このシステムを使うのに複数のアベイラビリティゾーンに複数のプライベートサブネットが必要。マルチAZについてはググったら色々出てくるので割愛。

例えばリンク: AWSでマルチAZ構成にする?しない?

2. プライベートサブネットの作成

前回同様

3.RDSの作成

スクリーンショット 2020-11-03 22.55.09.png (254.0 kB)

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

今回はMySQLを使ってDBを作るので、プライベートサブネットにはMySQLのポートのみ接続できる状態に設定する。

  • セキュリティグループはMySWL/Auroraというものを選択すると3306ポートが開く。
  • ソースにはどこから接続するかを選ぶのだが、個別に繋ぎたいサーバーのIPを選択しても良いが、複数台サーバがある時に全てを設定する必要があるため煩雑。それを避けるためソースにセキュリティグループを選択するとそのセキュリティグループ内にあるもの全てに対して接続を許可することができる。 スクリーンショット 2020-11-03 23.56.57.png (153.3 kB)

作成後

スクリーンショット 2020-11-03 23.57.36.png (94.2 kB)

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

rdsインスタンスを起動する時にDBサブネットを選択するので、必要。 ※これがないと、RDSをサブネットに紐付けられないので必ず作成

RDS > サブネットグループから作成

前回作成した二つの別々のアベイラビリティゾーンにあるサブネットを追加してサブネットを作成する。 また、VPCも前回作成したものを選択。

スクリーンショット 2020-11-04 0.01.24.png (158.0 kB)

DBパラメータグループ設定

スクリーンショット 2020-11-04 0.05.04.png (75.0 kB)

スクリーンショット 2020-11-04 0.03.27.png (64.4 kB)

オプショングループの作成

何かDBにオプションを設定したい時に使う。 スクリーンショット 2020-11-04 0.05.40.png (71.2 kB)

RDS オプショングループ

RDSの作成

RDS > データベースからDBを作成する

4. WEBサーバーからRDSに接続する

スクリーンショット 2020-11-08 0.02.23.png (199.9 kB)

MySQLをwebサーバーにインストール

sshでサーバーに接続

インストール

$ sudo yum -y install mysql

データベース のエンドポイント

RDSからエンドポイントを確認する。

スクリーンショット 2020-11-08 0.23.10.png (181.4 kB)

mysqlコマンドでmysqlに接続する。

$ mysql -h tokyo-ecole-staging01.cxrffzyjnal4.ap-northeast-1.rds.amazonaws.com -u root -p

接続できると、ターミナルに以下のように表示される。

$ mysql -h aws-and-infra-web.cxrffzyjnal4.ap-northeast-1.rds.amazonaws.com -u root -p -P 3306
Enter password: 

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1097
Server version: 8.0.15 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

この設定を.envなどのDB設定のファイルに接続することで、railsなどからDBに接続可能。