5分で読めます - 2025年7月7日
NGINXを使用して、複数の場所にあるVPSサーバーにWebサイトのトラフィックを分散します。ロードバランシングを設定し、単一障害点を回避し、パフォーマンスを向上させる方法を学びます。
地理的に異なる場所にある複数のVPSインスタンス間でWebサイトをロードバランシングすると、パフォーマンスを向上させ、待ち時間を短縮し、冗長性を高めることができます。NGINXをリバースプロキシとして使用することで、Webサイトやアプリケーションのコピーをホストするバックエンドサーバ間でトラフィックを分散できます。
このガイドでは、セットアップの手順を説明し、ベストプラクティスを紹介し、リバースプロキシに単一障害点をもたらすという一般的な落とし穴を、それを軽減するソリューションとともに取り上げます。
例えば、ニューヨークに1台、フランクフルトに1台、シンガポールに1台といったように、複数の地域にVPSインスタンスを配置することから始めます。各VPSは以下のものを実行する必要があります:
すべてのサーバーでコンテンツと設定が一貫していることを確認してください。
リバースプロキシおよびロードバランサーとして動作するVPSを1つ選択するか、この目的のために新しいVPSをプロビジョニングします。このサーバはバックエンドのVPSノードにトラフィックをルーティングします。
アップストリームグループを定義し、バックエンドノードへのリクエストをプロキシする基本的なNGINXリバースプロキシ設定を使用します。
以下は、プロキシ用のNGINX設定の例です。
http {
upstream backend_servers {
server vps1.example.com;
server vps2.example.com;
server vps3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
NGINX リバースプロキシをホストしている VPS が単一障害点となります。このサーバがダウンすると、バックエンドサーバが稼動しているにもかかわらず、サイト全体が利用できなくなります。
Keepalivedや VRRP付きPacemakerなどのツールを使用して、2つ以上のNGINXノード間にフローティングIPを作成します。1つのノードに障害が発生すると、IPは自動的に別のノードに切り替わります。
複数のNGINXロードバランサーノードを実行し、ラウンドロビンDNSまたはGeoDNS(AWS Route 53、Cloudflare Load Balancingなど)を使用してトラフィックを分散します。
BGPとエニーキャストを使用して、複数の地域から同じIPアドレスをアドバタイズします。トラフィックはユーザーの位置に基づいて最も近いノードに自動的にルーティングされます。
ヒントDNSベースの地理的ルーティングと可用性の高いNGINXプロキシを組み合わせることで、最高のカバレッジと回復力が得られます。
NGINX Open Sourceはアクティブなヘルスチェックをネイティブではサポートしていませんが、接続エラーが発生すると障害が発生したノードへのルーティングを停止します。より高度なヘルスチェックには
DNSレコードを更新して、NGINXリバースプロキシのIPアドレス(HAを使用している場合はフローティングIP)を指すようにします。複数のプロキシを使用する場合は、ロードバランシングまたはジオアウェア解決のためにDNSプロバイダを設定します。
NGINX 自体はジオロケーションベースのルーティングを処理しません:
ユーザーリクエスト | v +---------------------+ | GeoDNS / ロードアウェア | DNS ルーティングレイヤー | +---------------------+ | v +---------------------+ | 地域 NGINX プロキシ | (HA または Anycast IP) | +---------------------+ | v +---------------------+ | VPS バックエンドノード |
NGINXを使用して複数のVPSサーバー間でロードバランスをとることで、グローバルに拡張し、レイテンシを減らすことができます。しかし、覚えておいてください:リバースプロキシは可用性が高くなければなりません。
単一障害点を排除するには、DNSベースの負荷分散、フローティングIP、またはエニーキャスト・ネットワーキングを検討してください。慎重に計画を立てれば、マルチロケーションのVPSセットアップで、高速で耐障害性の高いパフォーマンスを大規模に提供することができます。
このガイドはウェブフロントエンドにのみ適しており、データベースへの接続や、高可用性のためにこれを分散させる問題や解決策についてはカバーしていません。これについては、また後日取り上げたいと思います。
中小企業であれ大企業であれ、どのような企業にとってもデータは重要な資産である。起業家は、アプリケーションを実行するために堅牢なシステムに投資することが多いが、適切なデータ保護対策を実施することを見落とすことがある。現実は単純だ:データの損失はビジネスの損失に等しい。データ保護とパフォーマンスを強化する効果的な方法の一つは、ストレージ構成にRAIDを組み込むことです。
3分で読めます - 2025年7月7日
3分で読めます - 2025年7月7日
柔軟なオプション
グローバル・リーチ
即時配備
柔軟なオプション
グローバル・リーチ
即時配備