Webホスティングプロバイダーからの障害(サーバーの故障、ddos攻撃、サーバーメンテナンスなど)をどのように管理する必要があるのでしょうか?たとえば、Webサイトを複数のサーバーでホストすることは可能ですか?現在、OVHで共有ホスティングを使用していますが、すでに複数回ダウンしています。ウェブサイトに大きく依存しているため、「シングルポイント障害」を回避するための良い方法を知りたいと思います。 。
ほとんどの大規模なサイトは、ロードバランサーの背後にあるサーバーのセットで実行されます。これにより、サイト全体を停止することなく、一部のサーバーを停止(またはメンテナンスのために停止)できます。
ロードバランサーはまだ単一障害点ですが、ロードバランサーは通常99.99%の稼働時間を持っています。それらは非常に高い負荷に対してテストされた単一目的のマシンです。
フェールオーバーDNSは、プライマリサーバー(またはロードバランサーの背後のクラスター)を監視します。障害を検出すると、別の場所で実行されている別のバックアップサイトにDNSをポイントします。
CDNは、Webサイトの分散キャッシュプロキシサーバーとして機能します。彼らは世界中にある「エッジノード」を介してあなたのウェブサイトへのリクエストを処理します。各ノードは、最初の要求で「Origin」サーバーにリソースを要求し、定期的に変更を取得する必要があります。 CDNは、Originサーバーの負荷を軽減するだけでなく、ある種のDDOS攻撃に対するバッファリングにも役立ちます。
どのようなソリューションを導入しても、Webサイトがダウンした場合はアラートを取得する必要があります。これにより、問題をすぐに解決できます。
ウェブサイトの新しいバージョンをリリースすると、問題が発生する場合があります。ライブリリースの前に新しいバージョンをしばらく実行できるステージング環境を維持するのに役立ちます。通常、ステージング環境に対して手動テストと自動テストの両方を実行します。
データベースを使用するサイトでは、通常、ライブのデータベースと2つ目のバックアップデータベースを各ホスティングロケーションに用意する必要があります。これは通常、すべてのデータベーストランザクションをシリアル化し、それらを各データベースで再生することでデータベースを同期することで実現されます。
シャーディングは、データキーのハッシュに基づいて、異なるサーバー上に異なるデータを保持する手法です。堅牢なシャーディング環境では、データは通常、冗長性のために少なくとも2つの場所に書き込まれます。データベースの同期とは異なり、すべてのサーバーがすべてのデータのコピーを持っている必要はありません。これにより、シャーディングは、従来のリレーショナルデータベースにうまく収まらない大きなデータセット(テラバイト)をより簡単に処理できます。
通常、Amazon AWSなどのクラウドホスティングプロバイダーは、これらすべてのサービスを提供します。 AWSには、サーバーの負荷に基づいてサーバーを自動的に追加および削除するElastic Beanstalkテクノロジーもあります。