忍者ブログ

インフラ構築手順書

はじめてのインフラ、サーバ構築時に役に立つように構築手順情報をまとめました。


HOME   »  Nginx ロードバランサ

[PR]

広告 

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



Nginxのロードバランサー構築手順

広告 

Nginxのロードバランサー構築

Nginxのロードバランサー設定の目次
Nginxインストール
Nginxグローバル設定(nginx.conf)
Nginxの仮想ホスト設定(ld.conf)

Nginxのインストール

Nginxをインストールするには、ソースからとRPMパッケージのからの インストールがあるが、ここでは、RPMパッケージからのインストールを説明する。

NginxのRPMパッケージからインストール

nginx.org提供のリポジトリからnginxのパッケージをインストール
公式ダウンロードサイトの"Pre-Build Linux Packages"からリポジトリ用のRPMファイルをダウンロードしてインストールします。
# wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm

リポジトリ修正(/etc/yum.repos.d/nginx.repo)
nginx.repoは、他のリポジトリパッケージとと競合を避けるためデフォルトで無効化しておく。
# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=0

Nginxインストール(RPM)
# yum install --enablerepo=nginx nginx


Nginxの基本設定

Nginxの設定ファイルについて

設定ファイル内容
Nignxの設定する前に、Nignx設定ファイル構成について確認しましょう。
coreモジュールの設定

events {
    eventモジュールの設定
}

http {
    httpモジュールの設定
}

mail {
    mailモジュールの設定
}

HTTPコンテキストの構成
http {
    httpモジュールの設定

    server {
        サーバ毎の設定

        location PATH {
            URI毎の設定
        }
        location PATH {
            URI毎の設定
	}
        ...
    }

    server {
        ...
    }
}


Nginxグローバル設定(nginx.conf)

下記がNginxのグローバル設定になります。詳細は「Nginxの基本設定説明」を参照してください。
# vi /etc/nginx/nginx.conf
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    #ログフォーマット設定
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    
    #ロードバランサー設定は別ファイルで定義
    include /etc/nginx/conf.d/lb.conf;

}

Nginx基本設定の説明

ログフォーマット
"$http_x_forwarded_for"を行末に追加されていますが、Apacheのcombineフォーマットと似た書式になっております。
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';


Nginxの仮想ホスト設定

仮想ホストの設定は、「/etc/nginx/conf.d/lb.conf」ファイルに記述し、グローバル設定ファイル(/etc/nginx/nginx.conf) でincludeさせる。

仮想ホスト設定ファイル内容
serverディレクティブは、Apacheのと同様の設定をする箇所です。
またserverディレクティブは、別ファイル( /etc/nginx/conf.d/lb.conf)で定義しています。
# vi /etc/nginx/conf.d/lb.conf
server {
    listen       80;
    server_name  www.hoge.co.jp;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

   #バックエンドサーバへのクライアントIP引渡し
   # クライアントの IP アドレス($proxy_add_x_forwarded_for;)
    proxy_set_header Host            $host;
    proxy_set_header X-Real-IP       $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;

    location / {
        proxy_pass http://backend;
    }

}

   #ロードバランサ設定
upstream backend {
      ip_hash;
      server 172.20.1.201:80 max_fails=3 fail_timeout=30s ;
      server 172.20.1.202:80 max_fails=3 fail_timeout=30s ;
      server 127.0.0.1:8080  down;
}
    



Nginxの仮想サイト設定の説明

仮想ホスト
仮想ホストを複数設定する場合は、serverディレクティブを追加する必要があります。

エラーページ(Sorryページとして活用)
メンバーサーバがすべてダウンした場合、Nginxのerror_pageオプションで指定したページが表示される。
これを利用して、簡易Sorryページとして利用することも可能でしょう。
    error_page   500 502 503 504  /error.html;
    location = /error.html {
        root   /data/www/www.hoge.co.jp/error/;
    }
※/data/www/www.hoge.co.jp/error/error.htmlをSorryページの内容にしておく。

バックエンドサーバへのクライアントIP引渡し
NiginxをロードバランサーとするとメンバーサーバのアクセスログのクライアントIPアドレスは すべてNiginxのIPになってしまうため、ヘッダにクライアントIPを付与して、メンバーサーバへ情報を引き渡す。
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # クライアントの IP アドレス
        proxy_set_header X-Forwarded-Host $host; # オリジナルのホスト名。クライアントが Host リクエストヘッダで渡す。
        proxy_set_header X-Forwarded-Server $host; # プロキシサーバのホスト名
        proxy_set_header X-Real-IP $remote_addr;
X-Forwarded-ForをApacheのログフォーマットに追加する設定は後述する。
バックエンドサーバの設定連携
 「/」以下すべてをバックエンドサーバへ振り分ける。
  proxy_passで指定するホスト名(URL)とupstreamの値と一致させる。
    proxy_pass http://backend;
   upstream backend

LBの設定概要
セッション維持 ソースIPによるセッション維持 ※1
メンバーサーバ 172.20.1.201:80
172.20.1.202:80
サーバオプション 失敗回数:3回
TimeOut:30秒
Sorryサーバ 127.0.0.1:8080
・設定抜粋
   upstream backend {
      ip_hash;
      server 172.20.1.201:80 max_fails=3 fail_timeout=30s ;
      server 172.20.1.202:80 max_fails=3 fail_timeout=30s ;
      server 127.0.0.1:8080  down;
    }

セッション維持
 ip_hash,sticky※1
 ※1 sticky session は、nginx 標準の機能には入っていません。3rd パーティのモジュールを利用して使うことができます

serverオプション
Serverオプション概要
weight (初期値=1) 全サーバーのweight値の合計を分母(但しbackupサーバは除く)にし、ここで分子を指定することで、この比率がサーバー群の中の対応サーバーの分散比率とする
max_fails 接続失敗時の最大チャレンジ回数
fail_timeout 30s 接続失敗を判断するタイムアウト時間。 但し proxy_connect_timeout と proxy_read_timeout によっても関係する。
down 常にダウンしているサーバーに指定。但しip_hash指定があればハッシュは作成される
backup backup指定がない通常サーバーがすべてダウンした時にこのサーバーに接続する

Sorryサーバ指定
※Serverオプションにbackup付けるとSorryサーバ設定となるが、ip_hashと併用するとエラーがでる。
nginxのエラーページをSorryサーバのページとして活用するしかない。。後述します。

Nginxのログローテート

RPMでインストールした場合、下記の設定がすでにされている。
# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
        endscript
}

バックエンドサーバ(Apache)設定

X-Forwarded-ForをApacheのログ出力させる
Apacheのログフォーマットに%{X-Forwarded-For}iを追加し、クライアントIPをログに残す。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined


WEBサーバの関連記事

Apache構築手順【基本設定】
Apache構築手順【仮想ホスト設定】
Apache構築手順【PHP設定】
Nginxでロードバランサー構築


Nginxおすすめ書籍

[マスタリングNginx]の書籍横断比較とレビュー

マスタリングNginx
著者:Dimitri Aivaliotis
出版日:2013-10-26
出版社:オライリージャパン

[ハイパフォーマンスHTTPサーバ Nginx入門]の書籍横断比較とレビュー

ハイパフォーマンスHTTPサーバ Nginx入門
著者:Clement Nedelcu
出版日:2011-04-21
出版社:アスキー・メディアワークス





拍手[0回]



Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us FC2 ニフティクリップ iza Buzzurl 


最新記事
(09/17)
(04/09)
(04/09)
(03/22)
(01/16)
(12/30)
(12/26)
(09/21)
(09/21)
(09/20)
(09/12)
(06/13)
(06/13)
(03/14)
(02/15)
(01/03)
(01/03)
(10/04)
(09/20)
(09/15)
(09/14)
(09/14)
(09/14)
(09/06)
(08/30)
最古記事
(10/29)
(10/29)
(10/29)
(10/29)
(10/29)
(04/12)
(04/12)
(06/12)
(06/12)
(06/20)
(06/22)
(07/22)
(07/22)
(07/30)
(07/30)
(08/18)
(08/18)
(08/22)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)


PR

Copyright © インフラ構築手順書 : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]

管理人限定

検索フォーム

カスタム検索

フリーエリア

ESXiの基本設定・運用設定
ESXiのSSH設定
ESXiの NTP設定
VMware ESXiでの時刻同期(NTP)ペストプラクティス
ESXiのゲストOS(仮想マシン)複製
ESXiのOVF形式で複製
異なるESXiバージョン間の複製(移行)
クローン作成後の後処理
仮想マシンのLVM追加
仮想共有ディスクファイルの作成
ESXi上でハイパーバイザーを稼動させる
パフォーマンスがでないとき確認すること


サーバ構築手順
ESXi上でRACを構築する
GFS2+DRBD構築
PaceMaker+MySQLレプリケーション構築
PaceMaker+DRBD構築
HeartBeat2+DRBD構築


Solarisの構築手順
Solarisのネットワーク設定変更
Solarisのホスト名変更
Solaris11のresolv.conf変更手順
Solaris11のHDD増設手順


AWS(Amazon Web Service)の基本設定・運用設定
S3 WEBサイトの構築
S3 WEBサイトのアクセス制限
S3 WEBサイトのリダイレクト設定


Windows Azureの基本設定・運用設定
AzureでWordpress構築
英語版Wordpressを日本語化する
AzureWebサイトの独自ドメイン設定
AzureWebサイトのモード変更
WEBアクセスログ解析ツールの比較


WordPressの基本設定・運用設定
WordPressの基本構造
WordPressのインストール手順
Wordpressマルチサイト機能
「続き読む(more)」カスタマイズ
Wordpressの独自PHP
Wordpressをサブディレクトリに移す
既存サブディレクトリをルートディレクトリとする
Wordpressが利用可能な共用ホスティング


Postfix構築
Postfixにおける暗号化したSMTP認証設定


SoftEtherVPNの構築
ESXi上のSoftEtherVPN構築
DDNSと組み合わせたSoftEtherVPNの設定


LinuxのAD連携
LinuxのActiveDirectory連携について
PAM認証でAD連携
ApacheでAD連携(LDAP認証)
ApacheでAD連携(Kerberos認証)
SAMBAで2台目DCサーバを構築
RedmineとGitのLDAP(AD)認証設定
JenkinsのLDAP(ActiveDirectory)認証設定


Redmine設定
Alminium(RedmineとGit/SVN)のインストール手順
RedmineとGitのLDAP(AD)認証設定
RedmineとGitの移行
JenkinsのLDAP(ActiveDirectory)認証設定


サーバの基本設定・運用設定
Apache
Apacheの基本設定
Apacheの仮想ホスト設定
PHPの基本設定
Nginxのロードバランサ設定
WebDAV構築手順
アンチウィルス
無償アンチウィルス(ClamAV)の導入手順
システム監視
システム監視ソフトMuninの導入手順
システム監視ソフトZabbixの導入手順
sarによるリソース使用情報取得


サーバ移行
Mysqlマイグレーション
MySQLマイグレーション時の問題点と解決策
Windows
Windows OS評価版からの移行
SQL Server評価版からの移行
クラスタソフト
クラスタソフトの比較

ツリーカテゴリ

広告ーSEO





人気ブログランキングへ
にほんブログ村 IT技術ブログ Webサイト構築へ

ブログ王ランキングに参加中!


最新トラックバック

バーコード

アフィリエイト2