Nginxのロードバランシング機能を使ってみよう!

2016/08/04 技術系 投稿者:

Nginxとは

Nginxは、フリーかつオープンソースのWebサーバーです。
HTTP/HTTPS/SMTP/POP3/IMAPのリバースプロキシの機能に加え、ロードバランサー、HTTPキャッシュの機能を持っています。

Nginxが開発されたのは、Apache httpdのロードバランシング機能に対するパフォーマンス不足からということもあり、Nginxのロードバランシング機能はパフォーマンスが高く、またさまざまな付加機能を持ち合わせています。

Nginxをロードバランサーとして活用する

Nginxの開発元が目標としたのは、高速なWebアクセラレーションです。
Webアクセラレーターは本来のWebサーバーの代わりにクライアントからのリクエストを受け付け、サーバーからのレスポンスをキャッシュ、または複数のサーバーに分散させることでレスポンスを高速化します。
この際に重要になるのが、リバースプロキシ/ロードバランシング機能ですが、今回はNginxのロードバランシング機能について2回に渡り紹介します。

nginx01

補足 リバースプロキシについて
通常のプロキシはクライアントとインターネットの間に設置され、特定のクライアントから不特定多数のサーバーへのリクエストを中継します。
それに対しリバースプロキシは 逆プロキシと呼ばれ、インターネットとWebサーバーの間に設置され、不特定多数のクライアントから特定のサーバーへのリクエストを中継します。

Nginxのロードバランシグの種類

Nginxでは以下のロードバランシングメカニズム(あるいはメソッド)がサポートされています。

①ラウンドロビン
アプリケーションへのリクエストはラウンドロビンの形式で分配されます
②Least Connected
次のリクエストはアクティブな接続数がもっとも少ないサーバーに割り当てられます
③IPハッシュ
次のリクエストにどのサーバーが選択されるべきかを決めるためにハッシュ関数が使われます(クライアントのIPアドレスに基づく)

Nginxのインストールについて

CentOS6の環境にNginxをインストールする方法を紹介します。
Nginx は CentOS 標準のリポジトリからは提供されていません。そこで、Nginx から提供されているCentOS用のリポジトリファイルを追加します。

リポジトリファイルの作成

Nginx のリポジトリファイルの内容

yumを使ってインストールする

以上の作業で、Nginxのインストールは完了です。

Nnginxを起動する

Nginxの動作確認

インストールしたサーバのIPアドレスをブラウザのURLに打ち込んでアクセスしてみましょう。
下記のようなページが表示されていればインストール成功です。

nginx1-01

Nginxを使ったロードバランサーの設定について

ロードバランサーの設定① ラウンドロビン

続いてロードバランサーとして利用する場合の設定方法についての紹介します。
Nginxをロードバランサーとして使う場合、特にモジュールを追加する必要はありません。
upstreamモジュールを利用することで、プロキシサーバー群を定義することができるようになります。

設定ファイル
 /etc/nginx/nginx.conf

ロードバランシングメソッドが具体的に設定されていない場合は、デフォルトがラウンドロビンになります。

フロントエンドのNginxのupstreamブロックの設定で、バックエンドのWebサーバーを以下のように指定します。
この設定のみでロードバランサーの下に置くWebサーバーの数を簡単に増減できます。

上の例では、srv1-srv3で動作している同じアプリケーションの3つのインスタンスがあります。
全てのリクエストはサーバーグループhoge.comに proxiedされ、Nginxはリクエストを分配するためにHTTPロードバランシングを適用します。

ロードバランサーの設定② Least Connected

Least Connectedはリクエストの完了に時間が掛かるような場合に、アプリケーションインスタンスの負荷を公平に制御できます。
各アプリケーションインスタンスが保持しているオープン・コネクション数を計測し、コネクション数の少ないサーバーへアクセスを割り振ることで、新しいリクエストはより忙しくないサーバーに分配されます。

ロードバランサーの設定③ IPハッシュ

同じIPアドレスからのアクセスを同じサーバーに振り分けたい場合は、ip_hashを利用します。
IPv4アドレスのクライアントの最初の3オクテット、またはIPv6アドレスの全体が、ハッシュキーとして使われ、このメソッドは同じクライアントからのリクエストはサーバーが利用不可の場合を除いて常に同じサーバーに渡されることを保証します。
尚、接続先のサーバーが利用不可の場合には、クライアントは他のサーバーに渡される動きをします。

サーバーの振り分けに重みをつける

特定のサーバーに対して多めにリクエストを割り振りたいパターンです。以下の例だとapp1:app2:app3 = 3:1:1になります。
今までの例では、すべてのサーバーに対して同等に重みが扱われています。 重みつけのパラメーターを設定することでバランシングのアルゴリズムに影響を与えることが可能です。
(ip-hashでは重みつけが利用出来ません)

例えば5リクエストあった場合に、上記の例ではsrv1に3リクエスト、srv2,3に1リクエストずつバランシングが行われます。

いかがでしたでしょうか?

今回紹介したように、Nginxを利用することで簡単にソフトウェアロードバランサーを導入することが可能です。

次回の2回目では実際に上記の設定を行った後の動作チェックの方法や計測値などについて紹介したいと思います。

カレンダー

      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
   1234
567891011
12131415161718
19202122232425
26272829   
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
Wide Netのクラウドバックアップ
クラウド型ファイル共有サービスRushDrive
ワイドオフィス
ネディアのSDGsへの取り組み