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

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

前回の記事でNginxで出来るロードバランサーの種類と設定方法について紹介しました。
今回は、設定後の動作確認の仕方について紹介したいと思います。

構成

nginx2-04

①異なるコンテンツを使った確認方法

通常ロードバランサーを利用する場合、向け先の各アプリケーションサーバー内のコンテンツは同じにしますが、各アプリケーションサーバー内のコンテンツをあえて変えることでロードバランサーの動作確認を手軽に行うことが可能です。

AppServer01 の index.html

AppServer01に接続された場合の画面

nginx2-05

AppServer02 の index.html

AppServer02に接続された場合の画面

nginx2-06

ラウンドロビン設定時の動作
F5ボタン等でブラウザの再読み込みを行う度にほぼ同じ頻度でAppServer01とAppServer02が交互に表示されれば正常に動作していると判断出来ます。

IPハッシュ設定時の動作
最初に出た方のAppServerがその後も変わらずに連続して表示されます。接続元のIPを変えて再接続した後で、もう片方のAppServerが表示されれば、その後何度再読みしてそのAppServerが表示され続けるという動作になります。

②tcpdumpコマンドを使った確認方法

続いて紹介するのはtcpdumpコマンドを使った確認方法です。

tcpdumpはネットワーク上に流れるパケットをモニタリングすることが出来るコマンドとなりますが、オプションとして条件を指定することで、取得したい情報にフィルタリングしてパケットを取得することが可能です。

今回テストで利用するオプションの説明は下記の通りです。

host IPアドレス | ホスト名
フィルタリングの対象とするホストをIPアドレスまたはホスト名を指定する。

port ポート番号
フィルタリングの対象とするポート番号を指定する。

-n
IPアドレスやポート番号などを名前に変換せずに表示する。
IPアドレスなどを表示する際には通常,名前解決を行い解決した名前で表示するが、
このオプションを指定すると名前解決を行わず,IPアドレスやポート番号をそのまま表示する。

上記のコマンドをNginx,AppServerいずれかのサーバーで実行した状態で、ブラウザの再読み込みを数回行った結果がこちらとなります。(192.168.0.5はクライアントPCのIPアドレス)

■ラウンドロビンの結果

10:37:49.906361 IP 192.168.0.100.33312 > 192.168.0.202.http: Flags [S], seq 4033686563, win 14600, options [mss 1460,sackOK,TS val 55573197 ecr 0,nop,wscale 6], length 0
10:37:49.906896 IP 192.168.0.202.http > 192.168.0.100.33312: Flags [S.], seq 2530537250, ack 4033686564, win 14480, options [mss 1460,sackOK,TS val 55558501 ecr 55573197,nop,wscale 6], length 0

10:38:09.396982 IP 192.168.0.100.51038 > 192.168.0.201.http: Flags [S], seq 309849968, win 14600, options [mss 1460,sackOK,TS val 55592687 ecr 0,nop,wscale 6], length 0
10:38:09.397480 IP 192.168.0.201.http > 192.168.0.100.51038: Flags [S.], seq 2668702717, ack 309849969, win 14480, options [mss 1460,sackOK,TS val 55885950 ecr 55592687,nop,wscale 6], length 0

10:38:11.976884 IP 192.168.0.100.33316 > 192.168.0.202.http: Flags [S], seq 2053636128, win 14600, options [mss 1460,sackOK,TS val 55595267 ecr 0,nop,wscale 6], length 0
10:38:11.977401 IP 192.168.0.202.http > 192.168.0.100.33316: Flags [S.], seq 1126770700, ack 2053636129, win 14480, options [mss 1460,sackOK,TS val 55580571 ecr 55595267,nop,wscale 6], length 0

■IPハッシュの結果

10:32:20.992278 IP 192.168.0.100.http > 192.168.0.5.54298: Flags [P.], seq 3811:4192, ack 4588, win 413, length 381
10:32:20.995013 IP 192.168.0.202.http > 192.168.0.100.33284: Flags [.], ack 546, win 244, options [nop,nop,TS val 55229589 ecr 55244283], length 0

10:33:00.171853 IP 192.168.0.100.http > 192.168.0.5.54298: Flags [P.], seq 4954:5335, ack 5839, win 463, length 381
10:33:00.171967 IP 192.168.0.202.http > 192.168.0.100.33290: Flags [.], ack 546, win 244, options [nop,nop,TS val 55268766 ecr 55283462], length 0

10:33:41.227970 IP 192.168.0.100.http > 192.168.0.5.54298: Flags [P.], seq 6859:7240, ack 7924, win 547, length 381
10:33:41.229270 IP 192.168.0.202.http > 192.168.0.100.33300: Flags [F.], seq 358, ack 546, win 244, options [nop,nop,TS val 55309823 ecr 55324518], length 0

ラウンドロビン が接続の度に2つのAppServerのどちらかと通信を行っているのに対し、IPハッシュは初めに接続した片方のAppServerとしか通信を行っていないことが分かります。

③Apache Bench を使った確認方法

最後にこれまでの方法では確認がしにくいLeast Connectedの動作確認の方法を紹介します。

Least Connectedはアクティブな接続数がもっとも少ないサーバーに割り当てる動作をしますが、下準備として以下のようなスクリプトを用意します。

AppServer01 の index.py の中身
コネクションを張りっぱなしにするために応答に時間がかかるスクリプトを用意します。

AppServer02 の index.py の中身
こちらは文字列を表示するだけの簡単なスクリプトです。

Apache Benchを使って動作確認を行います。

nオプション: 生成するリクエスト数を指定します
cオプション: 並列実行する数(コネクション数)を指定します

5ユーザが合計100回リクエストした場合のシミュレートした結果がこちらです。

■ラウンドロビンの結果

Concurrency Level: 5
Time taken for tests: 22.561 seconds
Complete requests: 100
Failed requests: 50
(Connect: 0, Receive: 0, Length: 50, Exceptions: 0)
Write errors: 0
Total transferred: 14970 bytes
HTML transferred: 1150 bytes
Requests per second: 4.43 [#/sec] (mean)
Time per request: 1128.050 [ms] (mean)
Time per request: 225.610 [ms] (mean, across all concurrent requests)
Transfer rate: 0.65 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 1
Processing: 12 1024 1006.8 2016 2045
Waiting: 12 1024 1006.8 2016 2045
Total: 12 1024 1006.8 2016 2045

■Least Connectedの結果

Concurrency Level: 5
Time taken for tests: 2.088 seconds
Complete requests: 100
Failed requests: 3
(Connect: 0, Receive: 0, Length: 3, Exceptions: 0)
Write errors: 0
Total transferred: 14997 bytes
HTML transferred: 1197 bytes
Requests per second: 47.90 [#/sec] (mean)
Time per request: 104.387 [ms] (mean)
Time per request: 20.877 [ms] (mean, across all concurrent requests)
Transfer rate: 7.01 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 1
Processing: 17 100 347.3 39 2066
Waiting: 17 100 347.3 39 2066
Total: 17 100 347.4 39 2067

・ラウンドロビンだと、50のFaild(100アクセス中50アクセス失敗、交互にアクセスするため)

・Least Connectedだと、3のFaild(同時アクセス5なので初回だけ)

ご覧のようにラウンドロビンとLeast Connectedとで大きく結果が変わりました。

ラウンドロビンの場合は、接続数は無視して交互にアクセスされた結果、AppServer01側に設置したスクリプトによってFailedも50となっています。

それに対し、Least Connectedの場合は、AppServer01側は設置したスクリプトの影響で応答に時間がかかり接続数が増えた状態が続きます。
その結果、接続数が増えたままにはならない、AppServer02側に接続回数が集中してFailedの値も3で済んだようです。

まとめ

Nginxで設定したロードバランサーの動作確認を3つ紹介しましたがいかがでしたでしょうか?
アプリケーションサーバーを2台用にそれぞれ異なるコンテンツを配置し、ブラウザの再読み込みをした場合、各ロードバランサーごとの動作をまとめると下記のとおりになります。

①ラウンドロビン
アプリケーションサーバ-へのリクエストはラウンドロビンの形式で分配されます
 →ページの再読み込みをする度に変わる。ほぼ同じ頻度。

②Least Connected
次のリクエストはアクティブな接続数がもっとも少ないサーバーに割り当てられます
 →ページの再読み込みをする度に変わる。同じ頻度ではなくバラツキあり。

③IPハッシュ
次のリクエストにどのサーバーが選択されるべきかを決めるためにハッシュ関数が使われます(クライアントのIPアドレスに基づく)
 →最初に表示された方のアプリケーションサーバーのコンテンツが表示され続ける。(クライアントのIPを変えるまで変わらない)

なお最後に紹介したApache Benchは設定したロードバランサーの性能を測る上でも利用出来ますので、色々と試してみると面白いかと思います。

それでは。

カレンダー

    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ターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

YAMAHAルータの実機・検証 第16回 Luaスクリプト機能を利用しよう 1

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

今までヤマハルータを使って様々なネットワーク構築例を紹介しました。
今回はネットワーク構築ではなく、ルータの状態を定期的にメールで通知したり、動作を通知する設定を紹介します。

Luaスクリプト機能

ヤマハルータではLuaスクリプトを実行することができます。今回はヤマハで公開している様々なLuaスクリプトを参考に設定を行ってきます。
尚、Luaスクリプト機能を利用することで以下のようなことができるようになります。

  • ルータの動作状況(showコマンドの出力結果)を定期的にメールで通知
  • 特定のパソコンまたは複数のパソコンとの通信監視
  • ログの監視
  • ルータの状態(CPU使用率やメモリ使用率)などを定期的にメールで通知
  • ルータの異常な状態時(ハードウェアや回線の過負荷)にメールで通知

Luaスクリプトの実行までの手順

ここからはLuaスクリプトをルータで実行させるまでの手順を紹介します。

ルータの設定内容

まずは今回使用するルータの設定内容です。

今回の検証ではルータからパソコンへIPアドレスを割り当てるDHCPの設定が必要です。

Luaスクリプト ファイルの作成

まずは確認も簡単なLuaスクリプトで試したいと思います。
ヤマハのサイトで公開されているLuaスクリプトを使わせて頂きます。
このLuaスクリプトはLANネットワークに接続されたホストの利用状況をSYSLOGに履歴として出力して管理します。DHCPのログを監視してパソコンが接続されたLANポートの番号を出力します。
下記の内容をメモ帳などにコピーし「dhcp_log_watch.lua」のファイル名で保存します。

上記はヤマハのサイトで公開されているLuaスクリプトですが修正箇所はありません。

Luaスクリプトをルータへコピー

保存した「dhcp_log_watch.lua」のファイルをルータにコピーします。
今回はUSBメモリを使用してルータへファイルをコピーします。ヤマハのサイトではtftpを使った方法も紹介されています。

  1. USBメモリをパソコンに接続して「dhcp_log_watch.lua」のファイルをUSBメモリにコピーします。
  2. USBメモリをルータに接続します。
  3. ルータのコンソール画面を開きます。今回はtelnetで接続しました。
  4. 管理者権限でログイン後、下記コマンドでUSBメモリからルータへ「dhcp_log_watch.lua」ファイルをコピーします。

ファイルがコピーされたか下記コマンドで確認します。

下記がコマンドの結果です。
lua1

ルータに「dhcp_log_watch.lua」ファイルがコピーされています。

Luaスクリプトの実行

ルータにコピーした「dhcp_log_watch.lua」ファイルを実行してみましょう。
下記のコマンドでLuaスクリプトが実行できます。

Luaスクリプトの実行状況が下記コマンドで確認できます。

Luaスクリプトの実行前と実行後の上記コマンド結果です。
■実行前
lua2
■実行後
lua3Luaコマンド実行後は「dhcp_log_watch.lua」が動作しているのが確認できます。

動作確認

「dhcp_log_watch.lua」はDHCPのログを監視しLANネットワークに接続されたパソコンがルータのどのLANポートに接続されたかログに出力するLuaスクリプトです。
確認方法としてますDHCPでIPアドレスを取得するパソコンをルータのLAN1ポート8に接続します。
接続した時点でルータのログに出力されているのでコンソール画面から確認します。

上記コマンドでも確認できますがルータが起動した時点からのログが記録されているので、今回のLuaスクリプトで出力されたログを探すのは大変なので下記コマンドで絞り込みを行います。

絞り込みした結果が下記になります。
lua4LAN1ポート8に接続したパソコンがログにちゃんと出力されています。

まとめ

Luaスクリプト機能を利用することで上記以外にもルータのいろいろな情報や状況を得ることができます。これはセキュリティ面や通信状態を保守するうえで大変貴重な情報となります。
次回はルータの情報や状態をメールで通知するLuaスクリプトを紹介します。

カレンダー

    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ターン転職しませんか?
ブログ
Nedia What's up!
 HOME  ブログ

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

カレンダー

    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
ワイドオフィス