• Ubuntuに関連したハード、ソフトの備忘録サイトです

ハイパフォーマンス・サーバーNginxを使おう(その06)ーロードバランサーの設定【追記】

Nginxはインターネット上のユーザーからのリクエストを、バックエンドに置いてある複数のサーバーに中継するリバースプロキシの機能を最初から持っています。これを使って、Nginxを組み込んだフロントエンドを実務に耐えるロードバランサーにすることができます。

【1】Nginxでのリバースプロキシを利用したロードバランサーの設定

次のサイトhttp://blog.serverworks.co.jp/tech/2012/09/28/nginx-04/に設定方法が紹介されています。確認してみました。こちらの条件は

  1. フロントエンドにNginxリバースプロキシ・サーバーを置く。
  2. バックエンドはKVMで2台の仮想サーバーを作り、Wordpressを組み込む。MySQLサーバーは取り敢えず、リバースプロキシ・サーバーに置いて、仮想マシンからリモートでアクセスする。
  3. フロントエンドのホスト名は、ubuntu03.it-ishin.com(192.168.1.4)、仮想サーバーはまあ2台としまして、vubuntu01.it-ishin.com(192.168.1.101)、vubuntu02.it-ishin.com(192.168.1.102)とし、LAN内部用のDNSサーバー(ubuntu01.it-ishin.com、192.168.1.2)に登録しておく。く。
  4. 他のクライアントからアクセスする。

というものです。構成は、上記サイトで紹介しているように、次のようになります。

Nginx_Load_balancer

本番では、MySQLサーバーを別に置き、クラスタ構成にすべきですが、まあ、取り敢えず実験用なので(^_^;)。Wordpressの最新版を使うと、次のようになりました。

nginx20

 設定の仕方と既知の問題点を以下、まとめてみます。上記サイトから得たNginxの設定は、以下の通りです。

# You may add here your
# server {
#	...
# }
# statements for each of your virtual hosts to this file

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

##
# Load Balancer
##
# upstream ubuntu03.it-ishin.com {
upstream backend {
    server vubuntu01.it-ishin.com:80;
    server vubuntu02.it-ishin.com:80;
    server vubuntu03.it-ishin.com:80;
}

server {
    listen  80;
    server_name  ubuntu03.it-ishin.com;
    root	/var/www/html/wordpress;
    location / {
	# proxy_pass http://ubuntu03.it-ishin.com;
	# index  index.html index.htm;
        proxy_pass http://backend;
    }

    location /wp-admin {
        proxy_pass http://backend;
    }

    location /wp-login.php {
        proxy_pass http://backend;
    }

    # location = / {
    #    rewrite ^(.+)$  /index.php;
    #}

    #location = /wp-admin {
    #    rewrite ^(.+)$  /wp-admin/index.php;
    #}

    proxy_set_header Host $host;
    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;
    proxy_set_header X-Real-IP $remote_addr;
}

# HTTP Server
# server {
#	listen	80;
#	server_name		ubuntu03.it-ishin.com;

#	location / {
#		root	/var/www/html/wordpress;
#		index	index.php index.html;
#		try_files $uri $uri/ /index.php?$args;
#	}

#    location ~ \.php$ {
#		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
		# With php5-fpm:
#		fastcgi_pass unix:/var/run/php5-fpm.sock;
#		fastcgi_index index.php;
#		include /etc/nginx/fastcgi_params;
#	}
#}

#location / {
#	proxy_http_version 1.1;
#	proxy_set_header Connection "";
#	proxy_pass http://apache;
#}

Nginxはupstreamディレクティブで、インターネット上のクライアント・ユーザーからのリクエストを振り分けるサーバーを指定するようです。コメント部分は必要はないですが、取り敢えず残しておきました。

ただし、下記設定でも動作するのではないかと思います。

# upstream ubuntu03.it-ishin.com {
upstream backend {
    server vubuntu01.it-ishin.com:80;
    server vubuntu02.it-ishin.com:80;
    server vubuntu03.it-ishin.com:80;
}

server {
    listen  80;
    server_name  ubuntu03.it-ishin.com;
    root	/var/www/html/wordpress;
    location / {
	# proxy_pass http://ubuntu03.it-ishin.com;
	# index  index.html index.htm;
        proxy_pass http://backend;
    }
}

以下、サイト管理者の取りあえずの設定ファイルを記しておきます。Wordpressのプラグインをインストールする際、タイミングによってはプラグインのインストールに失敗してしまう仮想マシンもあるようです。クーロンの設定を短くしてみるとうまく行くかも知れません。ここのところは、ただ今、試行錯誤中です。

# You may add here your
# server {
#	...
# }
# statements for each of your virtual hosts to this file

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

##
# Load Balancer
##
# upstream ubuntu03.it-ishin.com {
upstream backend {
    server vubuntu01.it-ishin.com;
	server vubuntu02.it-ishin.com;
	server vubuntu03.it-ishin.com;
    # server 192.168.1.101;
	# server 192.168.1.102;
	# server 192.168.1.103;
}

server {
    listen  80;
	server_name  ubuntu03.it-ishin.com;
    # root	/var/www/html/wordpress;
	location / {
	    # proxy_pass http://ubuntu03.it-ishin.com;
	    # index  index.html index.htm;
        proxy_pass http://backend;
    }

    location /wp-admin {
        # proxy_pass http://backend;
        proxy_pass http://vubuntu01.it-ishin.com;
    }

    location /wp-login.php {
        # proxy_pass http://backend;
        proxy_pass http://vubuntu01.it-ishin.com;
    }

    # location = / {
    #    rewrite ^(.+)$  /index.php;
    #}

    #location = /wp-admin {
    #    rewrite ^(.+)$  /wp-admin/index.php;
    #}

    # proxy_set_header Host $host;
    # 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;
    # proxy_set_header X-Real-IP $remote_addr;
}

 

Nginxのロードバランサー・サーバーのドキュメントルートは/var/www/html/wordpressとなっていますが、こちらのサーバーにWordpressをインストール必要は全くありません。なお、仮想マシンにUbuntu14.04LTSサーバー版をインストールする際には、①SSHサーバー②LAMPサーバーーを選んでインストールして下さい。忘れた場合は、$ apt-get install mysql-serverとやって(途中で、MySQLの管理者のパスワード設定画面が出ます)、その後で$ apt-get install phpmyadminとやると、LAMPサーバーとなります。MySQLの管理者のパスワードを聞かれた後、phpMyAdminのデータベース用のパスワードを設定することになります。

Apacheのバーチャルホスト機能は使わないでWordpressをインストールしてみて下さい。/etc/apache2/sites-available/000-defaultのドキュメントルートは初期設定で、/var/www/htmlとなっていますが、html内にunzipでWordpressを解凍した上で、/var/www/html/wordpressに変更する。なお、$ apt-get install unzipが必要になります。

また、MySQLはデフォルトでリモートのホストにアクセスすることを禁じています。これについては、下記サイトなどを参照されて下さい。
http://linuxserver.jp/%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89/db/mysql/%E5%A4%96%E9%83%A8%E6%8E%A5%E7%B6%9A%E8%A8%B1%E5%8F%AF%E8%A8%AD%E5%AE%9A.php

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA