Nginx を使用して高可用性 Web クラスターを実装する方法
はじめに:
最新のインターネット アプリケーションでは、高可用性は非常に重要な考慮事項です。高トラフィック下でアプリケーションの安定性と信頼性を確保するには、多くの場合、可用性の高い Web クラスターを構築する必要があります。中でも Nginx は非常に人気のあるリバース プロキシ サーバーであり、簡単な構成で負荷分散と高可用性を実現できます。この記事では、Nginx を使用して高可用性 Web クラスターを構築する方法とコード例を紹介します。
1. Nginx のインストールと構成
まず、各 Web サーバーに Nginx をインストールして構成する必要があります。
Nginx のインストール:
Ubuntu システムでは、次のコマンドを使用して Nginx をインストールできます:
$ sudo apt-get update $ sudo apt-get install nginx
Nginx の構成:
Nginx 構成ファイル nginx.conf
を開き、デフォルトのパスは /etc/nginx/nginx.conf
です。テキスト エディタを使用して編集します。
以下は簡単な構成例です:
http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; location / { proxy_pass http://backend; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
ここで
upstream
ブロックは負荷分散バックエンド サーバーのセットを定義します;server
ブロックは、リスニング ポートとアクセス構成を定義します。 設定ファイルを保存して終了し、Nginx サービスを再起動して設定を有効にします:
$ sudo systemctl restart nginx
2. 負荷分散戦略を設定します
目的を達成するには負荷分散では、Nginx 構成ファイルで Nginx ファイルを構成できます。 さまざまな負荷分散戦略を定義します。以下に、一般的に使用される負荷分散戦略をいくつか示します。
ラウンドロビン戦略:
この戦略では、バックエンド サーバーの順序でリクエストが割り当てられます。
upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; }
IP ハッシュ (IP ハッシュ) 戦略:
この戦略は、サーバー上でクライアントの IP アドレスをハッシュすることによって、同じクライアントから同じバックエンドにリクエストを送信します。
upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; server backend3.example.com; }
加重ラウンドロビン戦略:
この戦略は、バックエンド サーバーの加重に基づいてリクエストを割り当てます。
upstream backend { server backend1.example.com weight=3; server backend2.example.com weight=2; server backend3.example.com weight=1; }
3. ヘルス チェックとフォールト トレランスの構成
高可用性を実現するには、バックエンド サーバーでヘルス チェックを実行し、サーバーが利用できない場合はフォールト トレランスを実行する必要があります。 。
nginx_http_healthcheck_module
または nginx-stream-healthcheck-module
モジュールを通じて、バックエンド サーバーに Nginx のヘルス チェックを実装できます。 フォールト トレランス処理:
バックエンド サーバーが利用できない場合、Nginx はフォールト トレランスを実現するために、他の利用可能なサーバーにリクエストを送信できます。以下は、単純なフォールト トレラント構成の例です:
http { upstream backend { server backend1.example.com; server backend2.example.com backup; server backend3.example.com; } server { listen 80; ... } }
上記の構成では、backup
パラメーターはバックアップ サーバーを指定します。プライマリ サーバーが使用できない場合、リクエストはバックアップ サーバーに転送されます。
4. コード例
次は、Nginx の負荷分散機能を示す簡単な Node.js ベースの Web サーバーの例です。
server.js:
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!'); }); server.listen(3000, 'localhost', () => { console.log('Server running at http://localhost:3000/'); });
3 台のサーバーを起動:
$ node server.js $ node server.js $ node server.js
上記の構成を使用すると、ブラウザで http://localhost
にアクセスし、ページが更新されるたびにリクエストがさまざまなバックエンド サーバーに分散されることを確認できます。
結論:
この記事では、Nginx を使用して高可用性 Web クラスターを構築する方法を紹介し、インストール、構成、コード例を示します。ロード バランシング戦略、ヘルス チェック、およびフォールト トレランスを適切に構成することで、高トラフィック下での Web クラスターの安定性と信頼性を確保できます。この記事があなたのお役に立てば幸いです、読んでいただきありがとうございます!
以上がNginx を使用して高可用性 Web クラスターを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。