LNMPロードバランシング

まず、いくつかの基本的な概念

1、PV値

PV値(ページビュー):ページビュー

コンセプト:日にウェブサイトのすべてのページは、総数が見られていました。(大規模なサイトでは、通常のレベルの数千万ます)

2、UV值

UV値(ユニークビジター)ユニーク訪問者

コンセプト:ウェブサイトは、日内のユーザの数にアクセスします。(しばしば千万以上まで大サイト)

3、独立したIP

コンセプト:日にウェブサイト、アクセスにどのように多くの個別のIPアドレス。

すべてのビュー内のLANへの外部アクセスは値のUV独立値のIPよりも若干大きいので、一般的に同じパブリックIPアドレス、およびを共有する場合

10分では、負荷分散アーキテクチャをLNMPます

これらのパラメータ値は愛ステーションネットワークにより照会することができます

10分では、負荷分散アーキテクチャをLNMPます

第二に、並行性の高いアイデアに対処します

ウェブサイト、PVをUV、独立したIPが大きくなると、それは、高い同時実行に負荷分散とサイトのレイアウト階層アーキテクチャには、この時間をリードします。

ロードバランシング

ハードウェア:すぐには、効果は、F5-BIGIPとして、価格は非常に高価であり、非常に良いです

ソフトウェア:LVS(Linux仮想サーバー)、nginxの(Webサーバ、ロード・バランシング)

ロードバランシングの実装戦略

(1)ポーリング、

ロードバランサは、Webサーバーの背面に要求を転送回します。

(2)IPハッシュを、

クライアントと同じアドレス、常に同じホストを要求します。

(3)最小接続

サーバに最小負荷へのロードバランサ要求。

チャートは以下のとおりです。

10分では、負荷分散アーキテクチャをLNMPます

同時の数が増加し続ける場合は、CDNのアーキテクチャを使用することができます

10分では、負荷分散アーキテクチャをLNMPます

三、nginxの紹介

1、一般的に使用されるWebサーバ

apacheの:機能的には、歴史的、モジュールのサポートが非常に豊富で、メモリのコストを比較し、ヘビー級の製品です。

短所:PHPプロセスの各よりコストのリソースは、高い同時実行がより多くの要求を処理できない場合、サーバーのリソースを消費するためにつながります。

lighttpdの:低メモリのオーバーヘッド、CPU占有率が低く、優れた性能、豊富な機能モジュール、軽量なWebサーバです。

nginxの:リソース、CPUに、したがって、高い同時実行で30000から50000の高い並列性を実現するために、より多くの要求を処理することができます。

IISの窓は、ウェブサーバソフトウェアが付属しています

nginxのの二つの主要な用途:

(1)httpサーバ

(2)プロキシ

フォワードプロキシ

10分では、負荷分散アーキテクチャをLNMPます

リバースプロキシ

10分では、負荷分散アーキテクチャをLNMPます

2. [理由nginxの

(1)高並行性に接続することができ、正式なテスト50,000同時接続が同時接続2から40000をサポートすることができ、実際の運用環境で、支持することができます。

以下(2)メモリ消費量

Nginx+php(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150MB内存(15MB*10=150MB)开启的64个php-cgi进程消耗1280MB内存(20MB*64=1280MB)

(3)成本低廉

购买F5 BIG-IP ,NetScaler等硬件负载均衡交换机需要10多万甚至几十万人民币。而Nginx为开源软件,可以免费试用,并且可用于商业用途。

10分では、負荷分散アーキテクチャをLNMPます

(4)配置文件非常简单:通俗易懂,即使非专业管理员也能看懂。

(5)支持 rewrite重写规则:能根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。

(6)内置的健康检查功能:如果nginx proxy后端的某台服务器宕机了,不会影响前端访问。

(7)节省带宽,支持gzip压缩。

(8)稳定性高:用于反向代理,宕机的概率微乎其微。

(9)支持热部署。在不间断服务的情况下,对软件版本升级。

10分では、負荷分散アーキテクチャをLNMPます

nginx在反向代理,rewrite规则,稳定性,静态化文件处理,内存消耗等方面,表现出了很强的优势,选用nginx取代传统的apache 服务器,将会获得多方面的性能提升。

(8)支持的操作系统

FreeBSD 3.x,4.x,5.x,6.x i386; FreeBSD 5.x,6.x amd64;Linux 2.2,2.4,2.6 i386; Linux 2.6 amd64;Solaris 8 i386; Solaris 9 i386 and sun4u; Solaris 10 i386;MacOS X (10.4) PPC;

四、nginx的搭建

1、安装

安装前注意:

模块依赖性:Nginx的一些模块需要其他第三方库的支持,例如gzip模块需要zlib 库,rewrite模块需要pcre库,ssl功能需要openssl库等。

(1) 确保底层库都已安装

运行 yum install zlib* pcre* openssl*

10分では、負荷分散アーキテクチャをLNMPます

(2) 创建一个用户和用户组

创建www组与www用户 ,理论上来讲用户与用户组的名称无所谓,但尽量要有意义

groupadd www

useradd -g www -s /usr/sbin/nologin www

(3) 编译安装nginx

第一步:下载nginx

wget

10分では、負荷分散アーキテクチャをLNMPます

10分では、負荷分散アーキテクチャをLNMPます

第二步:解压并进入目录

tar ….

10分では、負荷分散アーキテクチャをLNMPます

Cd …

10分では、負荷分散アーキテクチャをLNMPます

第三步:配置

先查看configure的配置项,并保存成一个帮助文档

10分では、負荷分散アーキテクチャをLNMPます

将常用的配置项保存成一个安装脚本文件

Vim nginx_install.sh

内容如下:

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_image_filter_module --with-pcre --http-client-body-temp-path=/usr/local/nginx/tmp/client_body_temp --http-fastcgi-temp-path=/usr/local/nginx/tmp/fastcgi_temp --http-proxy-temp-path=/usr/local/nginx/tmp/proxy_temp --http-uwsgi-temp-path=/usr/local/nginx/tmp/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/tmp/scgi_temp

给sh文件加上可执行的权限

10分では、負荷分散アーキテクチャをLNMPます

然后执行

第四步:编译安装

make && make install

2、管理

(1)查看帮助文档

Cd /usr/local/nginx/sbin

./nginx -h

10分では、負荷分散アーキテクチャをLNMPます

(2)启动nginx

直接执行安装目录下的sbin目录下的nginx

10分では、負荷分散アーキテクチャをLNMPます

(3)关闭nginx

可以执行 nginx -s stop 或者 执行 pkill nginx

10分では、負荷分散アーキテクチャをLNMPます

(4)热启动

可以执行 nginx -s reload (前提是nginx已经在运行中)

10分では、負荷分散アーキテクチャをLNMPます

扩展:如果想用service 服务名 选项来重启或停止nginx,可以按以下步骤操作:

知识点:service 服务名 能操作成功的前提是 /etc/rc.d/init.d目录下要有与服务名同名的可执行文件

10分では、負荷分散アーキテクチャをLNMPます

所以我们可以在这个目录下新建nginx文件

vim /etc/rc.d/init.d/nginx

内容:

#!/bin/sh

# chkconfig: - 85 15

# description: nginx is a World Wide Web server. It is used to serve

start() {

echo 'Starting Nginx ...'

/usr/local/nginx/sbin/nginx > /dev/null 2>&1 &

}

stop() {

echo 'Stoping Nginx ...'

/usr/local/nginx/sbin/nginx -s stop > /dev/null 2>&1 &

}

reload() {

echo 'Reloading Nginx ...'

/usr/local/nginx/sbin/nginx -s reload

}

if [ $# -ne 1 ]

then

echo 'please input one params like start|restart|stop|reload'

exit 1

fi

case "$1" in

'start')

start

;;

'stop')

stop

;;

'restart')

stop

sleep 2

start

;;

'reload')

reload

;;

'*')

echo 'please input one params like start|restart|stop|reload'

;;

esac

记得给这个文件添加可执行权限

chmod +x /etc/rc.d/init.d/nginx

加入到开机自启动:

chkconfig --add nginx

chkconfig --level 345 nginx on

五、虚拟主机配置

1、配置文件介绍

Nginx的配置文件位于安装目录下的conf目录下

可以用以下命令查看非注释部分的内容

egrep -v '#|^$' nginx.conf

-v 代表取反(去掉匹配到的内容)

10分では、負荷分散アーキテクチャをLNMPます

在配置文件中,http段里面的server段是配置虚拟主机使用的。如果想要配置多个虚拟主机,则就在http段里面创建多个 server段即可。

注意配置文件中,每一行要使用分号结束,指令与{之间有空格。

Listen 后面可以是端口号,也可以是IP:端口号

Server_name 后面可以是域名,多个域名之间空格隔开,也可以是IP地址

在 http{}代码段里添加 client_max_body_size 200m; 以支持 php 上传大文件。(请根据自己项目需求来定值)

10分では、負荷分散アーキテクチャをLNMPます

六、编译 php与nginx整合

1、编译安装php

(1) 第一步:安装PHP

1) 下载php

shell># cd ~

shell># wget

2) 解压并进入目录

shell># tar zxf php-5.6.24.tar.gz

shell># cd php-5.6.24

3) 将configure参数及详情解析另存为一个文件,以供学习参考用:

shell># ./configure --help > php_configure.txt

4) 编写一个辅助shell文件,帮我们配置php

shell># vim php_install.sh

为了避免写错,建议大家直接复制以下内容(都写在一行上,不要换行):

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-opcache --with-zlib-dir --with-bz2 --with-libxml-dir=/usr --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-mbstring --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-iconv --disable-ipv6 --enable-static --enable-inline-optimization --enable-sockets --enable-soap --with-openssl --with-curl

以上内容的解释如图

10分では、負荷分散アーキテクチャをLNMPます

把刚刚的shell文件加上可执行权限:

shell># chmod +x ./php_install.sh

5) 执行shell文件进行软件的配置和环境检测

shell># ./php_install.sh

6) 编译软件并且进行安装

shell># make && make install

(2) 第二步:配置

1) 复制配置文件

shell># cp php.ini-production /usr/local/php/etc/php.ini

shell># cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

赋予其可执行权限

shell># chmod +x /etc/rc.d/init.d/php-fpm

拷贝产生php-fpm的配置文件

shell># cd /usr/local/php/etc

shell># cp php-fpm.conf.default php-fpm.conf

2) 配置php.ini

shell># vim php.ini

· 找到;date.timezone = 修改为 date.timezone = Asia/Shanghai

· 根据自己的需求调整以下选项的值

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

display_errors = On

max_execution_time = 60

max_input_time = 60

memory_limit = 256M

post_max_size = 256M

upload_max_filesize = 256M

3) 配置php-fpm.conf

shell># vim php-fpm.conf

· 找到user = nobody 和 group = nobody,将nobody改成www

· 找到listen.owner=nobody和listen.group= nobody,将nobody改成www

4) 将php-fpm加入服务并自动启动

shell># service php-fpm start

shell># chkconfig --add php-fpm

shell># chkconfig --level 345 php-fpm on

2、配置nginx支持php

第一步:在nginx.conf中找到location ~ .php$

10分では、負荷分散アーキテクチャをLNMPます

复制并去掉注释,将root改成你的虚拟主机的路径

保存并重载配置文件,

shell># /usr/local/nginx/sbin/nginx -s reload

在html目录下新建一个PHP文件,代码如下:

10分では、負荷分散アーキテクチャをLNMPます

在浏览器输入php页面的网址,可以发现并不能访问

10分では、負荷分散アーキテクチャをLNMPます

原因是官方给的默认配置文件中,

10分では、負荷分散アーキテクチャをLNMPます

要求要把php文件放到/scripts目录下。其实这个要求我们不一定要遵从。

改进的方案如下:

10分では、負荷分散アーキテクチャをLNMPます

保存并重载

10分では、負荷分散アーキテクチャをLNMPます

就可以让nginx支持访问类似http://www.a.com/index.php以及http://www.a.com/index.php?id=5这样的页面了。

3、优化nginx配置文件

第二步:优化

如果把所有的server代码段都放在nginx.conf里面的话,会让nginx.conf显得又臃肿又乱。建议把它们分离去。

例如,直接把所有的server代码段都剪切到/usr/local/nginx/conf/vhost.conf里面

然后在nginx.conf里面换成

include vhost.conf

10分では、負荷分散アーキテクチャをLNMPます

虚拟主机的代码都移到了vhost.conf里面了

10分では、負荷分散アーキテクチャをLNMPます

至此,nginx.conf已经很优化了,我们再来优化vhost.conf

第三步:优化vhost.conf

将root语句和 index语句都提取到location外面

10分では、負荷分散アーキテクチャをLNMPます

第四步:再一次优化vhost.conf

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

这两个语句都剪切到fastcgi.conf里面去

只留下include fastcgi.conf;

10分では、負荷分散アーキテクチャをLNMPます

fastcgi.conf文件中新增了以下两句:

10分では、負荷分散アーキテクチャをLNMPます

至此,nginx已经支持访问php页面,并且nginx.conf和vhost.conf已经很优化了。

只是还无法支持像thinkphp的pathinfo形式的访问

http://www.a.com/index.php/Admin/public/login

4、与ThinkPHP整合

第一步:将vhost.conf的location ~ .php$ { 的$去掉

10分では、負荷分散アーキテクチャをLNMPます

可以发现能支持pathinfo的访问方式,但是无法识别出模块、控制器和方法

10分では、負荷分散アーキテクチャをLNMPます

然后将location代码段写成

location ~ .php {

fastcgi_split_path_info ^(。。+ PHP)(/.*)$;

fastcgi_param PATH_INFO $ fastcgi_path_info。

fastcgi.confが含まれます。

10分では、負荷分散アーキテクチャをLNMPます

nginxのを保存してリロード

あなたはアクセスのthinkphp形パス情報をサポートすることができます

10分では、負荷分散アーキテクチャをLNMPます

ステップ2:vhost.confを最適化

これらの2

fastcgi_split_path_info ^(。。+ PHP)(/.*)$;

fastcgi_param PATH_INFO $ fastcgi_path_info。

Fastcgi.confだけfastcgi.confが含ま残し、内側にカットされ、ステートメントが可能

10分では、負荷分散アーキテクチャをLNMPます

ステップ3:擬似静的機能を有効にします

コードのサーバーの場所/ {セグメント、書き込み内部

try_files $ uriの/index.php$uri。

nginxのを保存してリロード

あなたはthinkphpのサポート書き換えにアクセスすることができます

http://www.a.com/Admin/public/login

七、ロード・バランシング

1、ロードバランシング回路図

10分では、負荷分散アーキテクチャをLNMPます

2、簡単な負荷分散を達成するために

サーバーリスト

機械192.168.81.1

VM 192.168.81.6

テンセントクラウド123.207.231.180

ロードバランサの設定

上流デモ{

サーバー192.168.81.1;

サーバ123.207.231.180;

}

サーバー{

80を聞きます。

SERVER_NAME fzjh.com;

位置/ {

proxy_passます。http://デモ。

proxy_set_headerホスト$ホスト;

proxy_set_header X-ピールIPの$ REMOTE_ADDR;

proxy_set_headerのX-転送さ-について$ proxy_add_x_forwarded_for。

}}10分では、負荷分散アーキテクチャをLNMPます

そして、ロードバランサのIPアドレスに解決するようにしてくださいfzjh.comを作ります

10分では、負荷分散アーキテクチャをLNMPます

コンフィギュレーションファイルを保存し、リロード

アクセス効果:

10分では、負荷分散アーキテクチャをLNMPます

10分では、負荷分散アーキテクチャをLNMPます

おすすめ

転載: www.cnblogs.com/herocan/p/11502374.html