NEW! EPYC + NVMeベースのVPS

ログイン
+1 (855) 311-1555

NGINXとマルチロケーションVPSホスティングでウェブサイトのロードバランスを取る方法

5分で読めます - 2025年7月7日

hero image

Table of contents

Share

NGINXを使用して、複数の場所にあるVPSサーバーにWebサイトのトラフィックを分散します。ロードバランシングを設定し、単一障害点を回避し、パフォーマンスを向上させる方法を学びます。

NGINXとマルチロケーションVPSでWebサイトをロードバランスする方法

地理的に異なる場所にある複数のVPSインスタンス間でWebサイトをロードバランシングすると、パフォーマンスを向上させ、待ち時間を短縮し、冗長性を高めることができます。NGINXをリバースプロキシとして使用することで、Webサイトやアプリケーションのコピーをホストするバックエンドサーバ間でトラフィックを分散できます。

このガイドでは、セットアップの手順を説明し、ベストプラクティスを紹介し、リバースプロキシに単一障害点をもたらすという一般的な落とし穴を、それを軽減するソリューションとともに取り上げます。


ステップ1:異なるリージョンにVPSサーバを配置する

例えば、ニューヨークに1台、フランクフルトに1台、シンガポールに1台といったように、複数の地域にVPSインスタンスを配置することから始めます。各VPSは以下のものを実行する必要があります:

  • ウェブサイトまたはアプリケーションのコピー
  • NGINX(ローカルのウェブサーバーとしても使用する場合)
  • セットアップとメンテナンスのためのSSHアクセス

すべてのサーバーでコンテンツと設定が一貫していることを確認してください。


ステップ2: ロードバランサーとして動作する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;
        }
    }
}

ステップ3:単一障害点への対処

問題点

NGINX リバースプロキシをホストしている VPS が単一障害点となります。このサーバがダウンすると、バックエンドサーバが稼動しているにもかかわらず、サイト全体が利用できなくなります。

解決方法

オプション1:フローティングIPによる高可用性

Keepalivedや VRRP付きPacemakerなどのツールを使用して、2つ以上のNGINXノード間にフローティングIPを作成します。1つのノードに障害が発生すると、IPは自動的に別のノードに切り替わります。

オプション2:DNSレベルのロードバランシング

複数のNGINXロードバランサーノードを実行し、ラウンドロビンDNSまたはGeoDNS(AWS Route 53、Cloudflare Load Balancingなど)を使用してトラフィックを分散します。

オプション3:エニーキャストIP(上級者向け)

BGPとエニーキャストを使用して、複数の地域から同じIPアドレスをアドバタイズします。トラフィックはユーザーの位置に基づいて最も近いノードに自動的にルーティングされます。

ヒントDNSベースの地理的ルーティングと可用性の高いNGINXプロキシを組み合わせることで、最高のカバレッジと回復力が得られます。


ステップ4:ヘルスチェックとフェイルオーバーロジック

NGINX Open Sourceはアクティブなヘルスチェックをネイティブではサポートしていませんが、接続エラーが発生すると障害が発生したノードへのルーティングを停止します。より高度なヘルスチェックには

  • NGINX Plusを使用する
  • または、cron + curl + config reloadsで外部監視とフェイルオーバーロジックを構築します。

ステップ 5: ドメインをロードバランサーに向ける

DNSレコードを更新して、NGINXリバースプロキシのIPアドレス(HAを使用している場合はフローティングIP)を指すようにします。複数のプロキシを使用する場合は、ロードバランシングまたはジオアウェア解決のためにDNSプロバイダを設定します。


オプション:地理位置を考慮したルーティング

NGINX 自体はジオロケーションベースのルーティングを処理しません:

  • GeoDNS:ユーザーを最も近いサーバーにルーティングする DNS プロバイダーを使用します。
  • エニーキャストIP:複数のデータセンターから同じIPを配布し、グローバルルーティングの最適化を可能にします。

ユーザーリクエスト | v +---------------------+ | GeoDNS / ロードアウェア | DNS ルーティングレイヤー | +---------------------+ | v +---------------------+ | 地域 NGINX プロキシ | (HA または Anycast IP) | +---------------------+ | v +---------------------+ | VPS バックエンドノード |

+---------------------+

最終的な考察

NGINXを使用して複数のVPSサーバー間でロードバランスをとることで、グローバルに拡張し、レイテンシを減らすことができます。しかし、覚えておいてください:リバースプロキシは可用性が高くなければなりません

単一障害点を排除するには、DNSベースの負荷分散フローティングIP、またはエニーキャスト・ネットワーキングを検討してください。慎重に計画を立てれば、マルチロケーションのVPSセットアップで、高速で耐障害性の高いパフォーマンスを大規模に提供することができます。

このガイドはウェブフロントエンドにのみ適しており、データベースへの接続や、高可用性のためにこれを分散させる問題や解決策についてはカバーしていません。これについては、また後日取り上げたいと思います。

ブログ

今週の特集

その他の記事
server administrator

ビジネスに適したRAIDレベルの選び方

中小企業であれ大企業であれ、どのような企業にとってもデータは重要な資産である。起業家は、アプリケーションを実行するために堅牢なシステムに投資することが多いが、適切なデータ保護対策を実施することを見落とすことがある。現実は単純だ:データの損失はビジネスの損失に等しい。データ保護とパフォーマンスを強化する効果的な方法の一つは、ストレージ構成にRAIDを組み込むことです。

3分で読めます - 2025年7月7日

強力で無制限のVPSを持つことが重要な理由

3分で読めます - 2025年7月7日

その他の記事
background image

ご質問またはカスタムソリューションが必要ですか?

icon

柔軟なオプション

icon

グローバル・リーチ

icon

即時配備

icon

柔軟なオプション

icon

グローバル・リーチ

icon

即時配備