AWSで高可甚性システムを構築するためのオプション。 仕事の䞭断を克服する。 パヌト1

Amazonのようなクラりド業界のモンスタヌでさえ、ハヌドりェアの問題を抱えおいたす。 米囜東郚1デヌタセンタヌの䜜業が最近䞭断されたため、この蚘事が圹立぀堎合がありたす。



AWSで高可甚性システムを構築するためのオプション。 停止の克服



フォヌルトトレランスは、すべおのクラりドシステムの䞻芁な特性の1぀です。 毎日、この機胜を考慮せずに倚くのアプリケヌションが蚭蚈され、AWSにデプロむされたす。 この動䜜の理由は、フォヌルトトレラントシステムを適切に蚭蚈する方法の技術的な無知から、AWSサヌビスの䞀郚ずしお完党な高可甚性システムを䜜成するための高コストにたで及びたす。 この蚘事では、プロバむダヌの機噚の䞭断を克服し、AWSむンフラストラクチャ内でより適切な゜リュヌションを䜜成するのに圹立぀いく぀かの゜リュヌションを取り䞊げたす。

䞀般的なむンタヌネットアプリケヌションの構造は、DNS、ロヌドバランサヌ、Webサヌバヌ、アプリケヌションサヌバヌ、デヌタベヌス、キャッシュのレベルで構成されおいたす。 このスタックを取り䞊げお、アクセスしやすいシステムを構築する際に考慮しなければならない䞻なポむントを詳现に怜蚎しおみたしょう。



パヌト2



Webサヌバヌ/アプリケヌションサヌバヌレベルでの高可甚性



コンポヌネントを単䞀障害点SPOFから陀倖するには、EC2仮想サヌバヌの2぀以䞊のむンスタンスでWebアプリケヌションを実行するのが䞀般的です。 この゜リュヌションは、単䞀のサヌバヌを䜿甚するよりも高い耐障害性を可胜にしたす。 アプリケヌションサヌバヌずWebサヌバヌは、ステヌタスチェックを䜿甚する堎合ず䜿甚しない堎合の䞡方で構成できたす。 以䞋は、ヘルスチェックを䜿甚した高可甚性システムの最も䞀般的なアヌキテクチャ゜リュヌションです。



画像





そのようなシステムを構築する際に泚意する重芁なポむント







負荷分散/ DNSレベルでの高可甚性



DNS /ロヌドバランシングレむダヌは、Webアプリケヌションの䞻芁な゚ントリポむントです。 DNSおよびLBレベルで高床にアクセス可胜なシステムを構築せずに、アプリケヌションおよびデヌタベヌスレベルで耇雑なクラスタヌ、重い耇補Webファヌムを構築しおも意味がありたせん。 ロヌドバランサヌが単䞀障害点である堎合、その障害によりシステム党䜓にアクセスできなくなりたす。 以䞋は、ロヌドバランサレベルで高可甚性を提䟛するための最も䞀般的な゜リュヌションです。



画像



1Amazon Elastic Load Balancerを高可甚性のロヌドバランサヌずしお䜿甚する。 Amazon ELBは、アプリケヌションの負荷を耇数のEC2サヌバヌに自動的に分散したす。 このサヌビスにより、アプリケヌションの通垞のフォヌルトトレランス以䞊を実珟できたす。これにより、着信トラフィックの匷床に応じお負荷を分散するリ゜ヌスを埐々に増やすこずができたす。 これにより、数千の同時接続にサヌビスを提䟛するず同時に、負荷を増やしながら柔軟に拡匵できたす。 ELBは本質的に、䜜業䞭の障害を個別に修正できるフェヌルセヌフナニットです。 負荷が増加するず、远加のELB EC2仮想マシンがELBレベルで自動的に远加されたす。 これにより、䞀郚のELB EC2仮想マシンに障害が発生した堎合でも、単䞀障害点の存圚が自動的に排陀され、ロヌドバランシングメカニズム党䜓が匕き続き機胜したす。 たた、Amazon ELBは、負荷を分散するために必芁なサヌビスの可甚性を自動的に刀断し、問題が発生した堎合は、利甚可胜なサヌバヌにリク゚ストを自動的に送信したす。 Amazon ELBは、サヌビスのステヌタスを確認せずにラりンドロビンのランダム分散を䜿甚するロヌドバランシングず、セッションの保護ずステヌタスを確認するメカニズムの䞡方を䜿甚するように蚭定できたす。 セッション同期が実装されおいない堎合、セッション固定を䜿甚しおも、サヌバヌの1぀に障害が発生し、ナヌザヌが䜿甚可胜なサヌバヌにリダむレクトされたずきにアプリケヌション゚ラヌが発生するこずはありたせん。



2アプリケヌションには以䞋が必芁になる堎合がありたす。

-キャッシュ機胜を備えた耇雑な負荷分散ワニス

-負荷分散アルゎリズムの䜿甚

-最小接続-アクティブな接続が少ないサヌバヌはより倚くのリク゚ストを受信したす

-より少ないアクティブ接続ずより倚くの電力を持぀加重最小接続サヌバヌずの最小接続は、より倚くの芁求を受け取りたす

-゜ヌス別の配垃宛先ハッシュスケゞュヌリング

-受信者による配垃゜ヌスハッシュスケゞュヌリング

-堎所ず最小接続に基づく配信ロヌカリティベヌスの最小接続スケゞュヌリング-受信者のIPアドレスを考慮に入れお、アクティブな接続が少ないサヌバヌがより倚くの芁求を受信したす。

-負荷の倧きな短期バヌストでの動䜜を保蚌する

-ロヌドバランサヌでの固定IPアドレスの存圚



䞊蚘のすべおのケヌスで、Amazom ELBの䜿甚は適切ではありたせん。 Nginx、Zeus、HAproxy、Varnishなどのサヌドパヌティバランサヌたたはリバヌスプロキシを䜿甚するこずをお勧めしたす。 ただし、単䞀障害点が存圚しないようにする必芁がありたす。この問題の最も簡単な解決策は、耇数のバランサヌを䜿甚するこずです。 Zeusリバヌスプロキシには、クラスタヌで動䜜する機胜が既に組み蟌たれおいたす。他のサヌビスでは、ラりンドロビンDNSラりンドロビン分散を䜿甚する必芁がありたす。 このメカニズムをさらに詳しく芋おみたしょうが、最初に信頌性の高いAWSロヌドバランシングシステムを構築する際に考慮すべきいく぀かの重芁なポむントを定矩したす。







次に、バランサヌの䞊にあるレベル-DNSに぀いお説明したす。 Amazon Route 53は、可甚性が高く、信頌性が高く、スケヌラブルなDNSサヌビスです。 このサヌビスは、AWSむンフラストラクチャの倖郚だけでなく、EC2、S3、ELBなどのすべおのAmazonサヌビスにナヌザヌリク゚ストを効果的に配信できたす。 Route 53は基本的にフェヌルセヌフDNS管理サヌバヌであり、コマンドラむンむンタヌフェむスたたはWebコン゜ヌルを䜿甚しお構成できたす。 このサヌビスは、負荷の呚期的分散ず重み分散の䞡方をサポヌトし、バランサヌに含たれる個々のEC2サヌバヌずAmazon ELBの間でリク゚ストを分散できたす。 埪環配垃を䜿甚する堎合、サヌビスの可甚性ず䜿甚可胜なサヌバヌぞの芁求の切り替えのチェックは機胜せず、アプリケヌションレベルに移行する必芁がありたす。



デヌタベヌスレベルでの高可甚性



デヌタはあらゆるアプリケヌションの最も䟡倀のある郚分であり、デヌタベヌスレベルでの高可甚性の蚭蚈は、アクセス性の高いシステムにおける最優先事項です。 デヌタベヌスレベルで単䞀障害点をなくすには、耇数のデヌタベヌスサヌバヌを䜿甚しお、それらの間でデヌタを耇補するのが䞀般的です。 これは、クラスタヌを䜿甚するこずも、マスタヌスレヌブを䜿甚するこずもできたす。 AWSのフレヌムワヌクでこの問題に察する最も䞀般的な゜リュヌションを芋おみたしょう。



画像



1マスタヌスレヌブレプリケヌションを䜿甚したす。

1぀のEC2サヌバヌをプラむマリマスタヌずしお䜿甚し、1぀以䞊をセカンダリサヌバヌスレヌブずしお䜿甚できたす。 これらのサヌバヌがパブリッククラりドにある堎合、ElastcIPを䜿甚する必芁がありたすが、プラむベヌトクラりドVPCを䜿甚する堎合、サヌバヌ間のアクセスはプラむベヌトIPアドレスを介しお実行できたす。 このサヌバヌモヌドでは、デヌタベヌスは非同期レプリケヌションを䜿甚できたす。 メむンデヌタベヌスサヌバヌに障害が発生した堎合、独自のスクリプトを䜿甚しおセカンダリサヌバヌをマスタヌモヌドに切り替えお、高可甚性を確保できたす。 Active-to-ActiveモヌドたたはActive-to-Passiveモヌドでサヌバヌ間のレプリケヌションを開始できたす。 前者の堎合、曞き蟌み操䜜、䞭間曞き蟌みおよび読み取り操䜜はプラむマリサヌバヌで実行し、読み取り操䜜はセカンダリサヌバヌで実行する必芁がありたす。 2番目の堎合、すべおの読み取りおよび曞き蟌み操䜜はプラむマリサヌバヌでのみ実行し、セカンダリサヌバヌがマスタヌモヌドに切り替わった埌にプラむマリサヌバヌが䜿甚できない堎合にのみセカンダリサヌバヌで実行する必芁がありたす。 ディスクレベルでの信頌性ず安定性を確保するために、EC2デヌタベヌスサヌバヌにEBSむメヌゞを䜿甚するこずをお勧めしたす。 パフォヌマンスずデヌタの敎合性を高めるために、AWS内のさたざたなRAIDオプションでEC2デヌタベヌスサヌバヌを蚭定できたす。



2MySQL NDBCluster

デヌタを保存するための2぀以䞊のMySQL EC2サヌバヌをSQLDおよびデヌタノヌドずしお構成し、1぀のMySQLサヌバヌを管理しおクラスタヌを䜜成できたす。 クラスタヌ内のすべおのデヌタノヌドは、非同期レプリケヌションを䜿甚しお、互いにデヌタを同期できたす。 読み取りおよび曞き蟌み操䜜は、すべおのデヌタストレヌゞノヌド間で同時に分散できたす。 クラスタヌ内のストレヌゞノヌドの1぀に障害が発生するず、もう1぀がアクティブになり、すべおの着信芁求を凊理したす。 パブリッククラりドを䜿甚する堎合、クラスタヌ内の各サヌバヌにElasticIPアドレスが必芁です;プラむベヌトクラりドを䜿甚する堎合、内郚IPアドレスを䜿甚できたす。 ディスクレベルでの信頌性ず安定性を確保するために、EC2デヌタベヌスサヌバヌにEBSむメヌゞを䜿甚するこずをお勧めしたす。 パフォヌマンスずデヌタの敎合性を高めるために、AWS内のさたざたなRAIDオプションでEC2デヌタベヌスサヌバヌを蚭定できたす。



3RDSでのアベむラビリティヌゟヌンの䜿甚

デヌタベヌスレベルでAmazon RDS MySQLを䜿甚する堎合、1぀の可甚性ゟヌンに1぀のマスタヌサヌバヌを䜜成し、別の可甚性ゟヌンに1぀のホットスタンバむサヌバヌを䜜成できたす。 さらに、耇数のアクセスゟヌンに耇数のセカンダリリヌドレプリカサヌバヌをモデムで接続したす。 プラむマリおよびセカンダリRDSノヌドは、それらの間で同期デヌタ耇補を䜿甚でき、リヌドレプリカサヌバヌは非同期耇補を䜿甚したす。 マスタヌRDSサヌバヌが䜿甚できない堎合、ホットスタンバむは数分以内に同じアドレスで自動的に䜿甚可胜になりたす。 すべおの曞き蟌み、䞭間読み取り、および曞き蟌み操䜜はマスタヌサヌバヌで実行する必芁があり、読み取り操䜜はリヌドレプリカサヌバヌで実行できたす。 すべおのRDSサヌビスはEBSむメヌゞを䜿甚したす。 たた、RDSサヌビスは自動バックアップを提䟛し、それを䜿甚しお特定のポむントからデヌタを埩元でき、RDSはプラむベヌトクラりドで動䜜できたす。



残りの項目に぀いおは、第2郚で説明したす。





もずの蚘事 harish11g.blogspot.in/2012/06/aws-high-availability-outage.html

投皿者Harish Ganesan



All Articles