DeNAによる大規模なMySQLノンストップ運用の裏側にある、フェイルオーバー自動化ツール

2011年4月15日

4月11日から米サンタクララで行われた「MySQL Conference & Expo 2011」。このイベントでDeNAの松信嘉範(まつのぶよしのり)氏が、同社の大規模なMySQLの運用を支えている技術とツールについてのセッション「Automated, Non-Stop MySQL Operations and Failover」を行いました。

プレゼンテーションの中で、社内で利用しているフェイルオーバーの自動化ツールをオープンソース化することにも触れています(英語のドキュメントも作成中とのこと)。

MySQLの大規模運用における自動フェイルオーバーは、特にクラウドでのMySQLの利用が増えるにつれてニーズが高まる分野と思われます。セッションのスライドが公開されていますので、そのポイントを紹介していきます。

自動化されたノンストップなMySQLの運用

fig

ソーシャルゲームでは高可用性が強く求められている。課金サービスでは利用者からの要求は厳しく、ダウンが長引けば業績にネガティブなインパクトを与える。

fig

そこで目指すのは「No Single Point of Failure」(単一障害点がないこと)だ。

DeNAでは700以上のMySQLを運用しており、150以上のMaster/Slaveのペアが構成され、主にMySQL 5.0/5.1を利用している。そして統計的にみて数カ月に1度マスターが落ちている。原因はLinuxかハードウェアが原因。できればこのとき、ダウンタイムを最小にするためにマニュアルでのフェイルオーバー操作をなくしたい。

しかしMasterを非単一障害点化するのは難しい。SlaveをMasterに自動的に昇格させる仕組みを、通常のMySQL 5.0/5.1/5.5以上で構成したい。

fig

フェイルオーバーのときに発生する課題がある。MySQLのMasterからSlaveへのレプリケーションは非同期なため、Masterがダウンしたときに、まだSlaveにレプリケートされていないデータがあるのだ。

例えばこの図ではid=102がレプリケートされていない。Slaveごとにどこまでレプリケートされているか状況も異なる。もっとも最新のSlaveを見つけ、他のSlaveと同期させる必要があるのだ。

fig

現在ある高可用性のソリューションについて。Heartbeart+DRBDは書き込み性能が落ちるなどの問題がある。MySQL Cluserは、残念ながらInnoDBを使っているので採用できず。

fig

そこで、高可用性の目的を達成するにはどうすればよいか。Masterが落ちたときにスレーブを昇格させてフェイルオーバーさせる。手順としては、可能ならMasterからbinary log eventsを救済し、最新のSlaveを見つけ、ほかのSlaveとの差分を更新。救済したログを当て、Masterに昇格させ、新Masterに対してSlaveのレプリケーションを開始する。

これを自動化していく。

fig

(ここから20枚以上のスライドを使って、上記を技術的にどう解決するのかの詳細が解説されています。興味のある方は記事末のスライドでぜひご確認ください。この部分がこのセッションの核心ではあるのですが、記事で紹介するにはテクニカルすぎるので省略させていただきます……)

これを実現したツールが「Master High Availability Tool」だ。Masterがダウンしたかどうかを監視するManagerがあり、フェイルオーバーを行う。DeNAはこのツールを社内で使い始めており、いずれオープンソースソフトウェアとして公開するつもりだ。

fig

1つのManagerはデータセンター内の複数のMasterを監視する。

fig

実際のケース。Masterでカーネルパニックが起きたとすると、Masterが本当にダウンしているかどうかをチェックするのに10秒、Masterのダウンを確定するため強制的にパワーオフをするのにかかる時間はハードウェアに依存するが4秒~5秒、もしくは5秒から10秒、Masterのリカバリは1秒以内、スレーブのリカバリに1秒以内。

fig

公開されているスライドは以下です。

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : MySQL , システム運用 , リレーショナルデータベース



≫次の記事
[速報]今日、日本を含むアジア太平洋地域のIPv4アドレスが枯渇しました
≪前の記事
新連載MANGA:Mr. Admin「システム管理者はつらいよ」

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus