SKYDIV Desktop Client を支える技術の一つ、「SQL Server Express 冗長化」をご紹介いたします。
SQL Serverには上位エディション(Standard/Enterprise)で利用可能な「SQL Server Always On」という冗長化機能があります。上位エディションということもあり結構高価で高級な機能になっています。
そこまで高級な機能でなくてもいいからもっと安価であったら、、、競合製品と比較して大きなアドバンテージを得ることができますよね。
そこで安価な Express で Always On に似た仕組みでそれなりに信頼性を担保した冗長化を実現したものが「SQL Server Express 冗長化」です。
今回はシステム構成を中心にご紹介させていただきます。
シリーズ一覧
①システム構成編【今回の記事】
②フェイルオーバー
③レプリケーション
④トランザクション編
⑤リダイレクト
システム構成
SKYDIV ではフェールオーバーによって障害発生時には自動的に運用系と待機系が切り替わります。データベースの中身は運用系から待機系に適切なタイミングで複製(レプリケーション)しています。
採用した要素技術
システム構成で示しているように、本機能の実現に際して以下の要素技術を採用しました。
- フェールオーバー(障害発生時に自動的に運用系から待機系に切り替える)
- レプリケーション(運用系のデータを待機系に対して同期する)
フェールオーバー
SKYDIV では運用系で通信断等の障害が発生した際に自動的に待機系へと運用を切り替えています。障害発生を自動的に検出して待機系へと切り替えるために「分散合意アルゴリズム」と呼ばれる考えを採用しています。(分散合意アルゴリズムについては別の機会で紹介させていただければと思います。)
これとは反対に手動で待機系に切り替えることを「スイッチオーバー」と言います。万が一に備えて SKYDIV ではこのスイッチオーバーにも対応することで耐障害性を高めています。
レプリケーション
フェールオーバーを支える要素として「データの整合性」が欠かせません。そこで SKYDIV ではデータベースの更新情報を運用系から待機系に送ることでデータの同期を図っています。
運用系に対して行われた更新がそのまま待機系でも行われるため、まさに鏡に映したように同じデータが運用系と待機系に存在することになります。
まとめ
このように運用系と待機系を用意して、運用系のデータを待機系にも複製し、さらに障害発生時に自動的に運用系と待機系を切り替えることで耐障害性を向上させています。
次回は要素技術の一つ「フェールオーバー」を支える「分散合意アルゴリズム」についてご紹介できればと思います。