元オンプレエンジニアがAWSを使ってみた(RDS高可用性編)

Pocket

元オンプレエンジニアが、AWSを使った感想、オンプレとの違いについて紹介していくシリーズ、2つめのテーマはAmazon RDS(Amazon Relational Database Service)です。
今回もRDSを使ってみた感想を紹介していきます。今回はRDS高可用性編です。

Multi-AZ配置

RDSではマスタ・スレーブ構成のDBをクリックだけで構築できます。
マルチAZ配置と呼ばれる機能で、マスタ・スレーブ間のレプリケーションと、インスタンス障害発生時の自動フェイルオーバーがマネージドサービスとして提供されます。

http://www.slideshare.net/AmazonWebServicesJapan/black-belt-online-seminar-aws-amazon-rds から引用

Aurora、MariaDB、MySQL、Oracle、SQL Server、PostgreSQLともマルチAZ配置を利用可能です。
可用性観点で気になるのはデータ反映ラグや自動復旧までの時間です。

データの反映については、マスタ・スレーブ間のレプリケーションは同期なので差分は出ません。ただし同期のオーバーヘッドは発生し、マルチAZなしよりレイテンシは大きくなるとのことです。
なお、MySQL、MariaDB、Oracle、PostgreSQLは物理同期、SQL Serverは論理同期のようです。

自動復旧までの時間については、Auroraの場合は30秒から1分間、その他のデータベースエンジンでは1~2分間とのことで、オンプレのDBに比べても遜色なく、業務継続性が重要なシステムでも使用に耐えそうです。
なお、マルチAZ構成でマスタとスレーブのIPアドレスは異なるため、自動フェイルオーバーが発生すると、接続先DBのIPアドレスが変わります。そのためインスタンスへの接続のエンドポイントはFQDNにしておく必要があります。

Oracleだと高可用性実現のためにはRAC(Real Application Cluster)を組むのが常套手段ですが、構築の手間がかかったり、インスタンス間のキャッシュ通信に伴う問題が発生したりといったことがあります。
RDSならそういったことは考える必要がなく、自動フェイルオーバーを組むことができます。

マルチAZ構成のスレーブ側は障害時のフェイルオーバー用として確保されているため、スレーブのデータに読み書きすることはできず、負荷分散やスケールアウトの観点では使えません。次に紹介するリードレプリカを構成することで、この問題をクリアできます。

リードレプリカ

リードレプリカは読み取り専用のレプリカDBを構築できる機能です。こちらもクリックだけで構築できます。

http://www.slideshare.net/AmazonWebServicesJapan/black-belt-online-seminar-aws-amazon-rds
MySQL、MariaDB、PostgreSQLで利用可能です。Auroraはディスクレベルで複数のレプリカが構成されるのが標準なのでリードレプリカを意識して構築する必要はありません。
更新はマスタにのみ行い、読み込みはリードレプリカに対してアクセスすることで負荷分散、スケールアウトを図ることができます。
レプリカは最大5つまで作成可能で、さらにレプリカのレプリカを作ることもできます。

http://www.slideshare.net/AmazonWebServices/deep-dive-amazon-rds より引用

なお、リードレプリカへのレプリケーションは非同期のため、マスタとレプリカ間のタイムラグを考慮したアプリケーション構築が必要です。
また、レプリカをマスタに昇格させることや、リージョンまたぎ(例えばAWSの東京リージョンとオレゴンリージョン)のレプリケーションも可能で被災時業務継続にも利用可能です。

レプリカ機能はオンプレのDBでも機能はあります。しかし構成や管理が大変だったり、追加のパッケージが必要だったり、なかなか手間がかかりますが、RDSなら簡単に構成することができます。

自動スナップショットとPoint-in-Timeリカバリ

RDSでは標準で1日1回スナップショットが自動で取得されます。
特定時刻までのリカバリ機能であるPoint-in-Timeリカバリも提供されています。
5分前以前の任意のタイミングまでDBを巻き戻すことができます。この機能もマネジメントコンソールから利用可能です。リストアファイルを選んで、適用するアーカイブログを決めて、といった作業は不要で、時間を指定すればその時点に戻すことができます。

http://www.slideshare.net/AmazonWebServicesJapan/black-belt-online-seminar-aws-amazon-rds から引用

まとめ

今回はRDSにおける高可用性の実現方法について見ていきました。
マルチ構成、自動リカバリ、読み取り専用レプリカがマネージドサービスとして提供され、簡単に実現できることがお分かりいただけたかと思います。
オンプレでもこれらの機能は利用できますが、構成が大変だったり、複雑な構成ゆえにトラブルの原因となったりしましたが、RDSだと手軽に構築することができます。
AWSを知れば知るほどシステムを手軽に構築できすぎるという驚きがある一方、インフラエンジニアの食い扶持が減らされている気もして複雑な気分です。

引き続き、次回も元オンプレエンジニアシリーズ RDS編をお届けします。
次回はRDSでのRDBMSに付属するユーティリティに利用について取り上げます。

お楽しみに!