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
       
  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    
       

カテゴリー

ブログ
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
       
  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    
       

カテゴリー

PRODUCE ネディアプロデュース
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
ワイドオフィス
イヤホンのブランドでハイクラスを誇る | n+um(エニューム)