この記事を読む前に
記事の中でやること
プライベートサブネットにDBサーバーを設置していきます。
そしてアベイラビリティゾーンに新しく作りプライベートサブネットを作っていきます。
DBの冗長化ができるように複数のアベイラビリティゾーンを使うためです。
障害などが起きた時の対応のためです。
RDSとは
フルマネージド(運用管理から何までやってくれる)に対応したリレーショナルデータベースのサービスです。
構築や運用の手間が軽減し、データベース設計のベストプラクティスを適用できます。
RDSの特徴
-
何か障害があっても簡単にサービスが停止せず、マルチAZを簡単に構築できます。
2.リードレプリカを簡単に構築でき、パフォーマンスを向上できる - 運用不可の軽減
運用不可の軽減を細かく見ていきます。
①自動バックアップ
1日に1回バックアップを自動取得(スナップショット
)し、これを元にDBインスタンスを作成(リストア
)
②自動でソフトウェアメンテナンス
メンテナンスウィンドウで指定した曜日・時間帯にアップデートを自動実施できる
③監視
各種メトリクスを60秒間隔で取得、確認可能
利用可能なエンジン
下の記事を見てみると
以下のエンジンが使えるみたいです。(2022年時点で)
⚫︎Oracle
⚫︎MySQL
⚫︎MariaDB
⚫︎SQLServer
⚫︎PostgreSQL
⚫︎Amazon Aurora
設定グループ
⚫︎DBパラメーターグループ
DB設定値を制御
⚫︎DBオプショングループ
RDSへの機能追加を制御
⚫︎DBサブネットグループ
RDSを起動させるサブネットを制御
プライベートサブネット作成
まずはVPCの画面から2つ目のプライベートサブネットを作成してます。(1つ目は作ってあること前提)
aws-infra-vpc-subnet-private1-ap-northeast-1aがプライベートサブネットでこれを使っていきます。
このサブネットを選択すると右側にスクロールをすると、
アベイラビリティゾーンのap-northeast-1aがあります。これとは別のアベイラビリティゾーンに
プライベートサブネットを作成していきます。
サブネット作成をクリックして新しくサブネットを作成していきます。
IPv4 CIDRも今回設定した10.0.21.0/24になっていれば大丈夫です。
RDS設置
RDSを作成していきます。
RDSの作成準備
使用するデータベースはここではMySQLです。
まずは必要なとこからしかアクセスできないようにしていきます。
ここではWordPressからデータベースへ接続していくようにしていきます。
WebサーバーからRDSへMySQLでのみ接続できるようにしていきます。
セキュリティグループの作成(EC2)
EC2のDB(データベース用)のセキュリティグループを作成していきます。
EC2の中からセキュリティグループに入ってセキュリティグループの作成をクリックします。
セキュリティグループ作成していきます。セキュリティグループ名はRDS向けに作成します。
VPCは連結させたいVPC名です。
ソースは今回設定したaws-infra-security-group-ec2にします。
画像の下にあるセキュリティグループ作成のボタンを押します。
DBサブネットグループの作成
RDSと検索してRDSのダッシュボードにいきます。
RDSのサブネットグループを開きます。そしてDBサブネットグループを作成していきます。
サブネット追加してプラベートサブネット1aと1cを選びます。
これで作成していきます。
DBパラメータグループの作成
RDSのパラメーターグループの作成を行なっていきます。
編集する時はパラメーターの一覧が出てきます。
特に注目した方がいいのは変更可能、適用タイプです。
適用タイプはstatic
とdynamic
で別れていきます。
static
はRDSインスタンスの起動後に反映され、
dynamic
はRDSインスタンスに動的に反映されるのかを表しています。
DBオプショングループの作成
RDSのオプショングループに入ってグループを作成していきます。
名前はパラメーターグループで決めたものです。
RDS作成
環境ができたのでRDSを作成していきます。
DBエンジン
RDSのデータベースを選択してデータベースの作成をクリックします。
MySQLは最新バージョンにします。テンプレートはお金がかからずに本番に近い状態にするとなると
開発/テストがいいみたいです。
スタンバイインスタンスを作成すると料金がかかるので作成は不要です。
本番だと標準クラスですが、学習なら安めのバースト可能が良さそうです。
ストレージですが、タイプは汎用で、割り当て20、
スケーリングは学習だけなら不要なので有効にはしないです。
画像にはないですがデータベースのポートは3306です。
データベース名は後で作成します。
パラメーターグループやオプショングループは先ほど設定したものです。
画像にはないですがバックアップの保存期間は30日くらいあると良さそうです。
上の設定なら料金はここまでかからないと思います。データベースの作成をしていきます。
これで作成することができました。作成したものをクリックをして
VPC、サブネット、セキュリティグループなどは合っているか確認してみてください。
RDSは使わない時は停止をアクションから停止をしておきましょう。
本番環境なら停止はしない方がいいみたいです。
WebサーバーからRDSに接続
WebサーバーにMySQLをインストール
EC2のダッシュボードにいきます。
接続に使うインスタンスを選択してSSH接続をします。
Downloads % chmod 400 AWS-infra-ec2.pem
Downloads % ssh -i "AWS-infra-ec2.pem" ec2-user@ec2-54-250-137-54.ap-northeast-1.compute.amazonaws.com
Last login: Thu Sep 8 06:55:04 2022 from softbank060068066230.bbtec.net
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
mysqlをインストールします。
[ec2-user@ip-10-0-7-161 ~]$ sudo yum -y install mysql
#省略
インストール:
mariadb.x86_64 1:5.5.68-1.amzn2
完了しました!
WebサーバーからRDSへmysqlコマンドで接続
RDSの画面にいきデータベースを選択します。
今回接続したいデータベースを選択してエンドポイントをコピー
します。
[ec2-user@ip-10-0-7-161 ~]$ mysql -h aws-infra-web.cssrje6zwv8w.ap-northeast-1.rds.amazonaws.com -u root -p
Enter password: #さっき決めたパスワード入力
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.28 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)]>
-h
でエンドポイントを指定
-u
でログインするユーザー名を指定
マスターユーザーで接続するので先ほど決めたroot
を選択
-p
でパスワード入力です。
⚫︎補足
エラーになった場合はこのパターンが多いみたいです。
- データベースが利用可能になっていないパターン
- セキュリティグループが間違っている
- ユーザー名かパスワードが間違っている
資料