ギークなエンジニアを目指す男

機械学習系の知識を蓄えようとするブログ

初心者が学ぶAWS備忘録(RDS、ELB、S3)

こんにちは。takapy(@takapy0210)です。

本記事もUdemyで受講した講座のまとめ記事です。(朝活頑張った)

講座はこちら
手を動かしながら2週間で学ぶ AWS 基本から応用まで

RDSについて

RDSとはフルマネージドなRDBサービスです。

EC2上にMySQLをインストールして使用するのと何が違うの?

パッチ当てやバックアップの仕組みを考慮することがないため、環境構築などにエネルギーを消耗することなく、コア機能の開発に注力することができます。

f:id:taxa_program:20190128232154p:plain
マネージドサービス例

現在対応している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の負荷が均等になるようにリクエストを分散させることができます。

f:id:taxa_program:20190214065144p:plain:w350
負荷分散

  • ヘルスチェック
    正しい動作をしているインスタンスのみにリクエストを送信できます。
    • 対象のファイル(例:index.php)
    • 何秒おきにチェックするか(例:30秒)
    • 何回成功したらOK/NGとするか(例:2回)

f:id:taxa_program:20190214065220p:plain:w350
ヘルスチェック

  • Auto Scaling
    条件を決めて、配下のEC2の数を増減させることができます。(夜は増やす、など) 例えば、平均CPU使用率がXX%を超えたら+2台、○○%を下回ったら-2台などの設定ができます。
    また、ELB自体もスケールアウト、スケールインしてくれます。

f:id:taxa_program:20190214065522p:plain
Auto Scaling

ELB設計ポイント

  • AZをまたがったサーバ配置
    AZ障害に対応できるようにしておく必要があります。

  • アプリケーションをステートレスに構築する
    スケールインした際に、ログが消えてしまう可能性があるため、ログはS3に保存するなどの対応を行う必要があります。

設定手順

  1. 事前準備(サーバの用意など)
  2. ALBの作成
    • 対象とするサブネット
    • SGの設定
  3. ターゲットグループの設定
    • ヘルスチェックの設定
    • どのインスタンスをALB配下に設定するか

f:id:taxa_program:20190225142044p:plain
ELB設定手順

S3

安価で耐久性の高いオブジェクトストレージサービスです。バケットというものを作成し、その下にファイルやディレクトリを置いたりすることができます。

特徴

  • ユーザポリシー、バケットポリシーなどのアクセス管理

    • IAMで利用できるユーザを制限
    • バケット単位でユーザやFROM IPアドレスなどの制限
  • Webサイトホスティング機能

    • 静的サイトであればS3だけで公開可能
  • 他のAWSサービスとの連携が豊富

    • Lambda Funstion起動のトリガー

利用シーン

静的コンテンツの配信

HTMLはEC2から返して、imgに関してはS3のリンクを返す、という使い方ができます。こうすることでEBSにimgファイルを保管するよりもコストダウンの効果が見込めます。

f:id:taxa_program:20190214071506p:plain:w350

ログなどのエクスポート先

アクセスログを定期的に転送することができます。スケールインした時のログの格納先としても利用できます。

f:id:taxa_program:20190214071836p:plain:w350

バッチ連携用のファイル置き場

他のサービスからCSVファイルをもらってバッチサーバにダウンロードし、それを元にデータの更新などを行うことができます。

f:id:taxa_program:20190214071958p:plain:w350

静的Webホスティング

ランディングページなどについては、S3だけで配信することが可能です。

f:id:taxa_program:20190214072324p:plain:w350