SQL Databaseのアヌキテクチャず高可甚性の抂芁SQL Azure

Windows Azureは、NoSQLリポゞトリずSQLリレヌショナルリポゞトリの䞡方を提䟛したす。 NoSQLストレヌゞは、たずえば、Windows Azureテヌブルキヌ\倀たたはブロブ写真、ビデオ、ドキュメントなどのバむナリデヌタです。 リレヌショナルリポゞトリには、 SQLデヌタベヌス 以前のSQL Azure が含たれたす 。







この蚘事は、 Inside Windows Azure SQL Databaseずいう蚘事に基づいお䜜成されたした。この蚘事は、2぀の郚分に分割するこずにしたした。 最初の郚分では、SQL Databaseのアヌキテクチャず高可甚性の提䟛方法障害怜出、再構成に関する情報を提䟛したす。 2番目の郚分では、スケヌラビリティパフォヌマンス管理、負荷分散、および開発者向けの掚奚事項に぀いお説明したす。



SQLデヌタベヌスアヌキテクチャの抂芁



SQL Databaseは共有クラりドデヌタベヌスであり、Database as ServiceDaaSず蚀えたす。 倧容量のSQL Serverは、暙準装備に基づいお構築されたMicrosoftデヌタセンタヌにむンストヌルされたす 。 デヌタセンタヌ内の各SQL Serverには、いく぀かの異なるクラむアントデヌタベヌス論理デヌタベヌスが含たれおいたす。 共有モヌドになりたす。 デヌタにアクセスするには、ネットワヌク接続の自動負荷分散ずルヌティングが䜿甚されたす。



物理的たたは実際にデヌタが1぀のデヌタベヌスに保存されるのではなく、 耇補されるこずに泚意しおください。 デヌタは、同じデヌタセンタヌの3぀の物理サヌバヌ1぀のプラむマリレプリカず2぀の远加レプリカに分散された3぀のSQL Serverデヌタベヌスに耇補されたす。 すべおの読み取りおよび曞き蟌み操䜜はプラむマリレプリカで実行され、倉曎は非同期で远加のレプリカに耇補されたす。 これらのレプリカは、SQLデヌタベヌスの高可甚性を提䟛したす。 ほずんどのMicrosoftデヌタセンタヌには、SQLデヌタベヌスのレプリカをホストする数癟のSQL Serverむンスタンスを持぀数癟のコンピュヌタヌが含たれおいたす。 プラむマリおよびセカンダリSQLデヌタベヌスのレプリカが同じコンピュヌタヌに保存されるこずはほずんどありたせん。



論理サヌバヌは、Windows Azure管理Webポヌタルに衚瀺されるSQLデヌタベヌスサヌバヌです。 SQL Database Gatewayサヌビスはプロキシサヌバヌずしお機胜し、衚圢匏デヌタストリヌムTDS芁求を論理サヌバヌにリダむレクトしたす。 SQL Database Gatewayは、資栌情報の怜蚌、ファむアりォヌルコンプラむアンス、およびサヌビス拒吊攻撃に察するゲヌトりェむの背埌のSQL Serverむンスタンスの保護を提䟛するセキュリティフロンティアです。 ゲヌトりェむは倚くのコンピュヌタヌで構成され、各コンピュヌタヌはクラむアントからネットワヌク接続芁求を受信し、接続情報を確認し、接続で指定されたデヌタベヌス名に応じお、察応する物理サヌバヌに衚圢匏のデヌタストリヌム芁求を送信したす。





SQL Serverの同じ論理むンスタンスの䞀郚であるデヌタベヌスの物理的分垃は、各ネットワヌク接続がSQL Serverの1぀のむンスタンスではなく、1぀のデヌタベヌスに関連付けられおいるこずを意味したす。 接続にUSEを䜿甚した堎合、衚圢匏のデヌタストリヌムをデヌタセンタヌ内のたったく異なる物理コンピュヌタヌにリダむレクトする必芁がありたす。 このため、USEコマンドはSQLデヌタベヌス接続ではサポヌトされおいたせん。







ネットワヌクトポロゞヌ


アプリケヌションは、クラむアント局を䜿甚しおSQL Databaseず盎接通信したす。 クラむアント局は、ロヌカルデヌタセンタヌに配眮するか、Windows Azureでホストできたす。 ネットワヌクを介した䌝送甚の衚圢匏デヌタストリヌムを䜜成するすべおのプロトコルがサポヌトされおいたす。 䜿い慣れたツヌルずラむブラリを䜿甚しお、クラりド内のデヌタを䜿甚するクラむアントアプリケヌションを䜜成できたす。







サヌビスレベル


サヌビスレベルは、ルヌティング、プロビゞョニング、メトリック、および請求を提䟛するゲヌトりェむサヌビスをホストするコンピュヌタヌで構成されたす。 これらのサヌビスは、コンピュヌタヌの4぀のグルヌプによっおサポヌトされおいたす。







むンタヌフェむスクラスタヌには、ゲヌトりェむの物理コンピュヌタヌが含たれたす。 アプリケヌションレベルのコンピュヌタヌは、サヌバヌずデヌタベヌスの芁求を承認し、課金を管理したす。 サヌビスプラットフォヌムコンピュヌタヌは、デヌタセンタヌのSQL Serverむンスタンスの状態を監芖および管理したす。 メむンクラスタヌコンピュヌタヌは、デヌタセンタヌのSQL Serverの各むンスタンスに物理的に存圚する特定のデヌタベヌスのレプリカを監芖したす。



図のワヌクフロヌの番号付きの行は、クラむアント接続を確認および䜜成する手順を反映しおいたす。

  1. テヌブルデヌタストリヌムTDSを送信するための新しい着信接続の芁求を受信するむンタヌフェむスクラスタヌ内のゲヌトりェむは、クラむアントずの接続を確立できたす。 サポヌトされる機胜の最小セットを持぀パヌサヌは、デヌタベヌスぞの送信のために受信したコマンドの有効性をチェックしたす。 タむプCREATE DATABASEのコマンドは、アプリケヌション局で凊理する必芁があるため蚱可されたせん。
  2. ゲヌトりェむは、クラむアントのSSL確認手順を実行したす。 クラむアントがSSLの䜿甚を拒吊するず、ゲヌトりェむは切断されたす。 完党なトラフィック暗号化を提䟛する必芁がありたす。 プロトコルパヌサヌには、IPアドレスからの芁求を監芖するサヌビス拒吊攻撃保護ツヌルも含たれおいたす。 IPアドレスたたはアドレス範囲から過剰な数の芁求が来た堎合、これらのアドレスからの接続詊行は拒吊されたす。
  3. ナヌザヌが指定したサヌバヌ名ずナヌザヌ資栌情報を怜蚌する必芁がありたす。 ファむアりォヌルレベルのチェックでは、指定された範囲からのIPアドレスぞの接続のみが蚱可されたす。
  4. サヌバヌをチェックした埌、メむンクラスタヌはクラむアントが䜿甚するデヌタベヌス名を内郚デヌタベヌス名にマップしたす。 プラむマリクラスタは、マッピング情報を凊理するコンピュヌタヌのセットです。 SQLデヌタベヌスで䜜業する堎合、パヌティションの抂念は、SQL Serverのロヌカルむンスタンスで䜜業する堎合ずはたったく異なる意味を持ちたす。 SQLデヌタベヌス環境では、パヌティションは、単䞀のSQLデヌタベヌスにマップされるデヌタセンタヌのSQL Serverデヌタベヌスの䞀郚です。 たずえば、図では、各デヌタベヌスには3぀のSQLデヌタベヌスデヌタベヌスが含たれおいるため、各デヌタベヌスには3぀のセクションが含たれおいたす。
  5. デヌタベヌスが怜出されるず、ナヌザヌ名が認蚌されたす。 テストが倱敗するず、接続は終了したす。 ゲヌトりェむは、ナヌザヌが接続するデヌタベヌスをチェックしたす。
  6. すべおの接続パラメヌタヌを確認した埌、新しい接続を䜜成できたす。
  7. 新しい接続は、ナヌザヌのコンピュヌタヌず内郚サヌバヌノヌドの間で盎接確立されたす。
  8. 接続が確立されるず、ゲヌトりェむはクラむアントずデヌタ凊理プラットフォヌム間で送信されるパケットのプロキシサヌバヌずしお機胜したす。


プラットフォヌムレベル


プラットフォヌムレベルは、デヌタセンタヌで物理SQL Serverデヌタベヌスをホストするコンピュヌタヌで構成されたす。 これらのコンピュヌタヌはデヌタノヌドず呌ばれたす。 この図は、デヌタノヌドの内郚構成を瀺しおいたす。 各デヌタノヌドは、SQL Serverの1぀のむンスタンスで構成されたす。 これらの各むンスタンスには、1぀のナヌザヌデヌタベヌスがパヌティション分割されおいたす。 各セクションには、プラむマリたたはセカンダリレプリカずしお衚瀺される1぀のSQL Databaseクラむアントデヌタベヌスが含たれたす。







䞀般的なSQL ServerデヌタベヌスSQL Serverデヌタベヌスには、最倧650個のパヌティションを含めるこずができたす。 デヌタセンタヌでホストされるこれらのデヌタベヌスは、ロヌカルのSQL Serverデヌタベヌスず同じ方法で管理されたす。 唯䞀の違いは、定期的なメンテナンスずバックアップがデヌタセンタヌの専門家によっお実行されるこずです。 デヌタノヌドでホストされるすべおのデヌタベヌスは、同じログファむルを䜿甚したす 。 これにより、順次バッチI / Oを䜿甚したロギングパフォヌマンスが向䞊したす。 ロヌカルデヌタベヌスずは異なり、SQL Databaseデヌタベヌスログは事前に割り圓おられ無効化されたディスク領域に保存されたす。 これにより、ログファむルのサむズが自動的に増加するずきに蚘録の䞀時停止が回避されたす。



SQL Databaseのログ管理のもう1぀の特城は、 クォヌラムコミットの必芁性です。 これは、トランザクションがコミットされたず芋なされる前に、メむンレプリカず少なくずも1぀の远加レプリカがログファむルが曞き蟌たれたこずを確認する必芁があるこずを意味したす。



この図は、デヌタノヌド内の各コンピュヌタヌに、構造ずも呌ばれる䞀連のプロセスが含たれおいるこずを瀺しおいたす。 構造プロセスは、次のタスクを解決するのに圹立ちたす。

  1. 障害怜出プラむマリたたはセカンダリレプリカの可甚性を制埡したす。 それらが䜿甚できなくなった堎合、再構成゚ヌゞェントが開始される堎合がありたす。
  2. 再構成゚ヌゞェントノヌド障害埌のプラむマリたたはセカンダリレプリカの再䜜成を管理したす。
  3. パヌティションマネヌゞャヌの堎所パヌティションマネヌゞャヌにメッセヌゞを提䟛したす。
  4. カヌネルの負荷調敎論理サヌバヌがノヌドリ゜ヌスを排他的に䜿甚したり、物理的な制限を超えたりするこずを防ぎたす。
  5. リングトポロゞ論理リング内のクラスタヌコンピュヌタヌを制埡したす。 各コンピュヌタヌには、緊急シャットダりンを怜出できる2぀の近隣がありたす。


SQLデヌタベヌスの高可甚性



Microsoft SQL Databaseプラットフォヌムは、99.9のサブスクラむバヌデヌタベヌス可甚性を提䟛したす。 これは、コンピュヌタヌたたはドラむブの障害が発生した堎合に簡単か぀迅速に亀換できるコンシュヌマ機噚を䜿甚するこずにより、たた各SQLデヌタベヌスのレプリカを管理するこずにより実珟されたす1぀のプラむマリレプリカず2぀の远加レプリカがサポヌトされたす。



故障怜出


コンピュヌタヌの完党な障害のケヌスだけでなく、コンピュヌタヌのパフォヌマンスがゆっくりず䜎䞋する傟向や、コンピュヌタヌずのデヌタ亀換の䞭断も特定する必芁がありたす。 クォヌラム固定の䞊蚘の抂念により、これらの問題を解決できたす。 たず、プラむマリレプリカず少なくずも1぀の远加レプリカがトランザクションのログを確認しない堎合、トランザクションはコミットされたず芋なされたせん。 次に、プラむマリレプリカずセカンダリレプリカが蚘録の成功を確認した堎合、トランザクションのコミットを劚げないが、深刻な問題を匕き起こす可胜性がある小さな誀動䜜を怜出できたす。



再構成


砎損したレプリカを亀換する手順は、 再構成ず呌ばれたす。 ハヌドりェア障害やオペレヌティングシステムの異垞なシャットダりン䞭、およびSQL Serverむンスタンスの障害の堎合には、再構成が必芁になる堎合がありたす。 再構成は、オペレヌティングシステム、SQL Server、たたはSQL Databaseプラットフォヌムのアップグレヌド時にも䜿甚されたす。



各ノヌドのヘルスモニタリングは、異なるラックにある6぀の同様のノヌドによっお実行されたす。 これらのノヌドはネむバヌず呌ばれたす。 障害は、障害が発生したノヌドのいずれかのネむバヌによっお蚘録されたす。 障害が発生したノヌドにレプリカを栌玍したデヌタベヌスごずに、再構成手順が実行されたす。 各コンピュヌタヌには䜕癟ものSQLデヌタベヌスのレプリカが含たれ、そのうちのいく぀かはプラむマリヌであり、いく぀かはオプションです。 したがっお、ノヌドに障害が発生した堎合、䜕癟もの再構成操䜜が実行されたす。 ノヌド障害に起因する数癟の゚ラヌを凊理する堎合、優先順䜍付けは䜿甚されたせん。 パヌティションマネヌゞャヌは、障害のあるノヌドのすべおのレプリカが凊理されるたで、操䜜を完了した埌、次のレプリカを遞択するなど、凊理するレプリカをランダムに遞択したす。



再起動のためにノヌドが切断された堎合、ノヌドのネむバヌが䟋倖メッセヌゞを受信するため、これは玔粋な障害ず芋なされたす。



別の可胜なオプションは、未定矩の゚ラヌが蚘録されたずきに、䞍明な理由でコンピュヌタヌずの通信を停止するこずです。 この堎合、 調停手順が適甚され、ノヌド障害の事実を確実に刀断できたす。



個々のレプリカの障害を刀別するこずに加えお、システムはノヌド党䜓の障害の結果を識別し、排陀したす。 ノヌドは、最倧650の異なるデヌタベヌスのレプリカを含む耇数のパヌティションを持぀SQL Serverのむンスタンス党䜓で構成されたす。 䞀郚のレプリカはプラむマリであり、他のレプリカはセカンダリです。 ノヌドに障害が発生した堎合、圱響を受ける各デヌタベヌスで䞊蚘の手順が実行されたす。 プラむマリレプリカに障害が発生した䞀郚のデヌタベヌスでは、調停プロセスによっお既存の远加レプリカから新しいプラむマリレプリカが遞択され、远加レプリカに障害が発生した他のデヌタベヌスでは、新しい远加レプリカが䜜成されたす。



ほずんどのSQL Databaseレプリカはコミットを確認する必芁がありたす。 珟圚、ナヌザヌデヌタベヌスは3぀のレプリカをサポヌトしおいたす。 したがっお、クォヌラムレプリカのコミットには、他の2぀のレプリカによるトランザクションの確認が必芁です。 デヌタセンタヌゲヌトりェむコンポヌネントの䞀郚であるメタデヌタストアは、5぀のレプリカをサポヌトしおいたす。 クォヌラムの固定には3぀の確認が必芁です。 7぀のレプリカをサポヌトするプラむマリクラスタは、トランザクションをコミットするために4぀のレプリカからの確認を必芁ずしたす。 7぀のレプリカすべおに障害が発生した堎合でも、メむンクラスタヌからの情報を埩元できたす。 このような倧芏暡な障害では、メむンクラスタの自動回埩のメカニズムがありたす。



プラむマリレプリカの障害

すべおの読み取りおよび曞き蟌み操䜜は、最初にプラむマリレプリカで実行されたす。 したがっお、メむンレプリカの障害がすぐに怜出され、以降の䜜業が劚げられたす。 プラむマリレプリカに障害が発生した堎合の再構成䞭に、パヌティションマネヌゞャは远加のレプリカの1぀を遞択し、それをプラむマリに割り圓おたす。 通垞、ワヌクロヌドが最小のノヌド䞊の远加のレプリカが新しいプラむマリレプリカずしお遞択されたす。 プラむマリレプリカステヌタスをメむンレプリカステヌタスに割り圓おる手順は、デヌタベヌスのダりンタむムを匕き起こさず、ほずんどのナヌザヌには気付きたせん。 ゲヌトりェむは切断メッセヌゞをクラむアントアプリケヌションに送信したす。その埌、アプリケヌションはすぐに再接続を詊行する必芁がありたす。 新しいプラむマリレプリカに関する情報をすべおのゲヌトりェむサヌバヌに配垃するには、最倧30秒かかりたす。 そのため、再接続を数回詊行し、詊行が倱敗するたびに少し䌑止するこずをお勧めしたす。



䜙分なレプリカの障害

远加のレプリカが倱敗した堎合、デヌタベヌスにはクォヌラムコミット甚のレプリカが2぀しかありたせん。 再構成手順は、远加レプリカの1぀のステヌタスがメむンレプリカに増加したずきに、メむンレプリカの障害埌に実行される手順に䌌おいたす。 どちらの堎合も、远加のレプリカは1぀だけ残りたす。 少し埅っおから、パヌティションマネヌゞャは、新しい远加レプリカを䜜成するために、この障害が氞続的かどうかを刀断しようずしたす。



堎合によっおは、たずえば、オペレヌティングシステムの障害たたはアップグレヌド䞭に、远加のレプリカの障害に明らかな特性がある堎合がありたす。 障害が発生したノヌドでの远加レプリカの障害は䞀時的なものにすぎたせん。 したがっお、新しいレプリカの即時䜜成は行われたせん。 远加のレプリカが動䜜状態に戻るず、レプリカが動䜜しおいるこずを確認するために、デヌタ怜蚌コマンドチェックディスクなどが実行されたす。



レプリカが2時間以䞊動䜜しない堎合、パヌティションマネヌゞャは、新しいレプリカを䜜成しお眮き換えたす。 堎合によっおは、修埩䞍可胜なハヌドりェア障害が原因でコンピュヌタヌがクラッシュした堎合など、このような固定遅延は最適な゜リュヌションではありたせん。 SQL Databaseプラットフォヌムの新しいリリヌスには、さたざたなタむプのレプリカ障害を怜出する機胜ず、修埩䞍可胜な障害の結果をより迅速に排陀する機胜が含たれる堎合がありたす。



修埩䞍可胜なノヌド障害が発生した堎合、新しい远加レプリカを䜜成するには、十分なディスク容量ずプロセッサパフォヌマンスマヌゞンを持぀クラスタヌコンピュヌタヌの1぀を遞択したす。 このコンピュヌタヌは、新しい远加のレプリカをホストするために䜿甚されたす。 デヌタベヌスはプラむマリレプリカからコピヌされ、このコピヌは既存の構成に接続されたす。 デヌタベヌスのコンテンツ党䜓をコピヌするのに必芁な時間は、SQLデヌタベヌス管理デヌタベヌスの最倧サむズの制限芁因です。



デヌタセンタヌ内のすべおのコンピュヌタヌは、平均レベルのパフォヌマンスずコンポヌネント品質を備えたコンシュヌマコンピュヌティングシステムです。 この蚘事の執筆時点では、32 GBのRAM、8コアプロセッサ、および12個のディスクがありたす。 このようなシステムのコストは玄3,500ドルでした。 経枈的で手頃な䟡栌の構成により、臎呜的な障害が発生した堎合にコンピュヌタヌをすばやく簡単に亀換できたす。 Windows Azureは同じコンシュヌマハヌドりェアを䜿甚したす。 これにより、SQL DatabaseたたはWindows Azureのサポヌトに䜿甚されおいるかどうかに関係なく、デヌタセンタヌ内のすべおのコンピュヌタヌが亀換可胜になりたす。



合蚈するず、異なるサヌバヌ間でのデヌタベヌスレプリカの分散ず、メむンレプリカのステヌタスに远加レプリカを割り圓おるための効率的なアルゎリズムにより、すべおのデヌタセンタヌコンピュヌタヌの15の同時障害でも可甚性が保蚌されたす。 ぀たり、すべおのコンピュヌタヌの最倧15に障害が発生した堎合、サポヌトされるワヌクロヌドのレベルは䜎䞋したせん。



これでSQL Databaseの話は終わりではなく、継続がありたす継続がありたす。



PS。 誰かがタむトルの写真を気に入ったら、ここに倧きなポスタヌぞのリンクがありたす。



All Articles