こんにちは。takapy(@takapy0210)です。
本記事もUdemyで受講した講座のまとめ記事です。(朝活頑張った)
講座はこちら
手を動かしながら2週間で学ぶ AWS 基本から応用まで
RDSについて
RDSとはフルマネージドなRDBサービスです。
EC2上にMySQLをインストールして使用するのと何が違うの?
パッチ当てやバックアップの仕組みを考慮することがないため、環境構築などにエネルギーを消耗することなく、コア機能の開発に注力することができます。
現在対応しているDBは下記です。
- MySQL
- PostgreSQL
- MariaDB
- Oracle
- MS SQL Server
- Amazon Aurora
特徴
Master - Slave構成を容易に構築可能
エンドポイントで接続しているため、DNSが自動的にフェールオーバもしてくれます。リードレプリカ
トランザクションが原因でスループットが落ちてしまうことがあります。その際に参照系のデータベースと更新系のデータベースを分けて、参照リクエストと更新リクエストを分散することができます。自動バックアップ取得
定期的にスナップショットを取得することができる。このスナップショットを元に新たなRDSインスタンスを構築することもできる。パッチ当ての自動実施(OSレベル)
メンテナンスウィンドウで時間指定し、その間にアップデートを実施することができます。パラメータ設定
RDSインスタンスにはSSHできないという制約があります。(MySQLであればMySQLコマンドでしか接続できない)この問題を解決するために、パラメータグループを作成しマネージメントコンソールから設定する必要があります。
実際にやってみると、Master-Slave構成が簡単に構築でき、システムダウンした際のDNSなども自動的にやってくれるなど、可用性があがりますしとても便利なサービスだと実感しました。
ELBについて
ELBとはロードバランサのマネージドサービスです。異常検知したインスタンスがあった場合は、正常なインスタンスにリクエストを振り分けることができます。
CLB、ALB、NLBの3種類あります。
特徴
- 負荷分散
ELBの配下にEC2をぶら下げて、そのEC2の負荷が均等になるようにリクエストを分散させることができます。
- ヘルスチェック
正しい動作をしているインスタンスのみにリクエストを送信できます。- 対象のファイル(例:index.php)
- 何秒おきにチェックするか(例:30秒)
- 何回成功したらOK/NGとするか(例:2回)
- Auto Scaling
条件を決めて、配下のEC2の数を増減させることができます。(夜は増やす、など) 例えば、平均CPU使用率がXX%を超えたら+2台、○○%を下回ったら-2台などの設定ができます。
また、ELB自体もスケールアウト、スケールインしてくれます。
ELB設計ポイント
AZをまたがったサーバ配置
AZ障害に対応できるようにしておく必要があります。アプリケーションをステートレスに構築する
スケールインした際に、ログが消えてしまう可能性があるため、ログはS3に保存するなどの対応を行う必要があります。
設定手順
- 事前準備(サーバの用意など)
- ALBの作成
- 対象とするサブネット
- SGの設定
- ターゲットグループの設定
- ヘルスチェックの設定
- どのインスタンスをALB配下に設定するか
S3
安価で耐久性の高いオブジェクトストレージサービスです。バケットというものを作成し、その下にファイルやディレクトリを置いたりすることができます。
特徴
ユーザポリシー、バケットポリシーなどのアクセス管理
- IAMで利用できるユーザを制限
- バケット単位でユーザやFROM IPアドレスなどの制限
Webサイトホスティング機能
- 静的サイトであればS3だけで公開可能
他のAWSサービスとの連携が豊富
- Lambda Funstion起動のトリガー
利用シーン
静的コンテンツの配信
HTMLはEC2から返して、imgに関してはS3のリンクを返す、という使い方ができます。こうすることでEBSにimgファイルを保管するよりもコストダウンの効果が見込めます。
ログなどのエクスポート先
アクセスログを定期的に転送することができます。スケールインした時のログの格納先としても利用できます。
バッチ連携用のファイル置き場
他のサービスからCSVファイルをもらってバッチサーバにダウンロードし、それを元にデータの更新などを行うことができます。
静的Webホスティング
ランディングページなどについては、S3だけで配信することが可能です。