share facebook facebook2 twitter menu hatena pocket slack

2013.12.10 TUE

Cross-Region 系パターンを整理してみる(新CDP提案あり)

吉田 真吾

WRITTEN BY吉田 真吾

cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。

CDP Advent Calendar 2013 の6日目です。

今日は Cross-Region なクラウドデザインパターンを考えてみます。

■前提で押さえておきたいこと

Webの3層構造を主体に考えます。まずはWeb/APサーバーやデータベースの特性を押さえておきましょう。

Web/APサーバ

  • スケールアウト/インの水平スケールが容易
  • ロードバランサーやDNSによる負荷分散方法がある
  • 負荷分散方法があるので基本的には全てのノードはアクティブ-アクティブにできる
  • マシンのテンプレートは本来1つあればよいが、サービスの実装上、リージョンごとに同じテンプレートを置いておく必要があることもある(AWSだと今のところそう)。これはサービスの仕様の問題。

データベース

データベースには以下のような構成が考えられますね。

<ul><li> フィジカルスタンバイ(Active-Standby)       <ul><li> スタンバイはフェイルオーバーするまで操作不可</li>    </ul></li>    <li> ロジカルスタンバイ      <ul><li> スタンバイをリードレプリカや一時書込先(ただしマスターと同期すると消える)に使える</li>    </ul></li>    <li> スナップショットスタンバイ:DR用などにデータをバックアップしておく仕組みだが、フェイルオーバーできる仕組みではない</li>    <li> クラスター(グリッド)構成(Active-Active):分断耐性のための投票システムなどがあり、書込みも読込みもグリッド内のいずれかのノードがアクティブであれば可能      <ul><li> Cross-Regionなクラスター構成は今のところ有用性が想定できない。NoSQLでも同様。</li>    </ul></li>   </ul><p>上3つは基本的に水平スケールできないので、運用上、スケールアップ/ダウンの垂直スケールを行うことになります。(リードレプリカは水平スケールしますが、そのときもマスターは垂直スケールしかしません。)</p>   <br><br><h4> ■上記から Cross-Region 系パターンを考える</h4>   <br><b> 【新規】(可用性を向上) Multi-Region パターン(Web/APサーバやバッチサーバのリージョンレベルの冗長化)</b><br><p><a href="http://techblog.netflix.com/2013/12/active-active-for-multi-regional.html" target="_blank">Active-Active for Multi-Regional Resiliency</a> にあるように、Route 53 の Weightedラウンドロビンなどを用いて複数リージョンにトラフィックをルートしたり、位置情報に基づく制御をするためにさらにUltraDNSなどを組合わせて利用してユーザーごとのレスポンスタイムを短縮します。当然、リージョン障害などの場合にはサービスに影響なく片側のリージョンのみで処理を行うことが可能です。</p>   <br><b> 【追記】(リレーショナルデータベース) DB Replicationパターンに Cross-Region Read Replica を使った「マルチリージョンフェイルオーバー」方式を追加</b><br><p>現状、RDS for MySQL では、リージョンを跨いだリードレプリカ構成が可能です。このリードレプリカをマスター昇格させ、アプリケーションのアクセス先をそちらにフェイルオーバーすることでマルチリージョンフェイルオーバーが可能です。</p>   <p>リードレプリカという名称ですが、広く見るとロジカルスタンバイデータベースとして位置づけることが可能だと思います。</p>   <br><b> 【追記】(CDP2.0候補) Cross-Region Replicationパターンをリレーショナルデータベースのスナップショットスタンバイ構成と位置づける</b><br><p>RDSもRedshiftもスナップショットのリージョン間コピーが可能なので、これをスナップショットスタンバイ構成として扱う。</p>   <p>参考:<a href="http://okochang.hatenablog.jp/entry/2013/11/09/160920" target="_blank">コマンドラインでRDSスナップショットのリージョン間コピーをやってみる</a></p>   <br><br><h4> ■まとめ</h4>    <ul><li> 新規提案は「Multi-Region パターン」</li>    <li> 既存パターンの追記対象は「DB Replicationパターン」「Cross-Region Replicationパターン」</li>    <li> グリッド構成の Multi-Region 構成は今のところ有用性があると思えないので今回は見送り。</li>   </ul><p>別途、Wikiには提案として載せておこうと思います。</p> <br><br> こちらの記事はなかの人(<a href="http://d.hatena.ne.jp/yoshidashingo/" target="_blank" title="yoshidashingo">yoshidashingo</a>)監修のもと掲載しています。<br>元記事は、<a href="http://d.hatena.ne.jp/yoshidashingo/20131206/1386332321" target="_blank" title="こちら">こちら</a>

吉田 真吾

吉田 真吾