nginx のロードバランサ機能の設定を最低限に書く

公式ドキュメント(目次)

nginx のロードバランサについての公式ドキュメント(目次)は以下になります。

nginx の設定ファイルのサンプル

最低限の nginx の設定ファイルを書くと以下のようになるかと思います。

下記の設定ファイルの動作は次のとおりです。

  • Webブラウザから http://your-domain.exmaple.com にアクセスが来る
  • サーバマシンを基準として、10.10.10.123:80 または 10.10.10.124:80 のどちらかのアドレスで起動しているサーバにアクセス先が向けられる
  • アクセス先が向けられたサーバの設定ファイルに従って*1、Webブラウザにレスポンスを返す
upstream wakari_yasui_namae {
  server 10.10.10.123:80;
  server 10.10.10.124:80;
}

server {
  listen 80;
  server_name your-domain.example.com;

  location / {
    proxy_pass http://wakari_yasui_namae;
  }
}

ロードバランスの方法

ロードバランスを行うための方法はいくつかあります。以下が公式ドキュメントです。

1. ラウンドロビン

ロードバランス先のサーバに重み付けをする方法です。重み付けは数値で設定します。例えば、以下のような設定ファイルとなります。

upstream wakari_yasui_namae {
  server 10.10.10.123:80 weight=5;
  server 10.10.10.124:80;
}

server {
  listen 80;
  server_name your-domain.example.com;

  location / {
    proxy_pass http://wakari_yasui_namae;
  }
}

上記の設定ファイルの場合、6つのアクセスがあった際には、10.10.10.123:80 に 5つのアクセスが、10.10.10.124:80 に1つのアクセスが振り分けられます。

2. 最小接続

最小接続方式は、ロードバランス先のサーバのうち、現存接続数が最も少ないサーバにアクセスを振り分ける方式です。設定ファイルは次のように書きます。

upstream wakari_yasui_namae {
  least_conn;
  server 10.10.10.123:80 weight=5;
  server 10.10.10.124:80;
}

server {
  listen 80;
  server_name your-domain.example.com;

  location / {
    proxy_pass http://wakari_yasui_namae;
  }
}

3. IPハッシュ

IPハッシュ方式は、接続元のIPアドレスを基準として接続先サーバを振り分ける方式です。設定ファイルは次のように書きます。

upstream wakari_yasui_namae {
  ip_hash;
  server 10.10.10.123:80;
  server 10.10.10.124:80;
}

server {
  listen 80;
  server_name your-domain.example.com;

  location / {
    proxy_pass http://wakari_yasui_namae;
  }
}

上記のように書いた場合、同じIPアドレスからの接続は、ロードバランサで最初に振り分けられたサーバにずっと向きます。なおここで「同じIPアドレス」とは、IPアドレスの上位3桁の数値の一致を指します*2

4. その他の方法

上記の3つ以外にも方法はあります*3。詳しくは公式ドキュメントをご覧ください。

補足

実際に動作を確かめるためには Docker を使うのがやはり良いと思います。

*1:例えば apache2.conf

*2:したがって、厳密に個々のアドレスごとに振り分けができるわけではありません

*3:複数組み合わせる方法もあります

Powered by はてなブログ