当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪windows nginx 负载均衡配置教程      越来越成熟稳健的nginx,已被众多大型或门户网站采用为HTTP与前端缓存服务器的首选。 今天,我们介绍nginx在windows下用作负载均衡的相关知识,希望对大家有所帮助。 实验环境: (2台服务器.........
    ▪nginx同时作为负载均衡和Web缓存服务器      Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成。 最新的Nginx 0.8.32版本,proxy_cache和fastcgi_cache已经比较完善,完全可以取代Squid,同时作为负载均衡服务器和Web缓存服.........
    ▪超详细的nginx负载均衡配置      本文讲述nginx-0.7.28中的负载均衡配置。 本文从安装步骤一点点说起,因为我们要把整个操作环境搭建出来,所以安装时大家要非常仔细。 开始学习nginx的负载均衡设置,借助tomacat来实现。 .........

[1]windows nginx 负载均衡配置教程
    来源: 互联网  发布时间: 2013-12-24

越来越成熟稳健的nginx,已被众多大型或门户网站采用为HTTP与前端缓存服务器的首选。
今天,我们介绍nginx在windows下用作负载均衡的相关知识,希望对大家有所帮助。

实验环境:
(2台服务器)
第一台:
CPU:Inter(R) Pentium(R) 4 CPU 2.8G
内存:1G
系统:windows 7
IIS: IIS 7
nginx:nginx/Windows-0.8.22
IP:172.10.1.97
环境:本地

第二台:
CPU:Inter(R) Pentium(R) 4 CPU 3.0G
内存:2G
系统:windows Server 2003
IIS: IIS 6
IP:172.10.1.236
环境:远程

说明:
本次测试,软件nginx放在本地(172.10.1.97),也就是说放在域名绑定的那台服务器,这台服务器的IIS不能使用 80端口,因为等下nginx软件要使用80这个端口。
下载nginx的地址如下:
nginx下载:http://nginx.net/
本次测试使用的版本下载:nginx/Windows-0.8.22

下载解压到C:,把目录名改成nginx

第一:
在本地(172.10.1.97)这台服务器IIS创建一个网站,使用端口为808,如下图:


IIS 网站绑定设置图

第二:
在远程172.10.1.236的IIS创建一个网站,使用端口为80,如下图:


远程IIS绑定设置图

第三:
以上已经设置好两台服务器的IIS了,下面配置nginx软件来实现网站负载均衡,打开如下文件:

C:nginxconfnginx.conf

1、找到内容server {
在这上面加入如下内容:
 

代码如下:
upstream xueit.com {
server 172.10.1.97:808;
server 172.10.1.236:80;
}

(这是负载切换使用的服务器网站IP)

2、找到location / {
root html;
index index.html index.htm;
}

把内容更改如下:
 

代码如下:
location / {
proxy_pass http://;
proxy_redirect default;
}

3、找到server {
listen 80;
server_name localhost;

把内容改成如下:
 

代码如下:
server {
listen 80;
server_name 172.10.1.97;

(这是监听访问域名绑定那台服务器80端口的请求)

好,在这里就这么简单配置好了,下面看下以上3步配置的图:


负载配置图

第四:

都配置好了,下面启动nginx这软件

进入命令提示符CMD,进入c:nginx>,输入nginx命令,如下图:


启动nginx

这时候,系统进程有两个nginx.exe进程,如下图:


系统nginx进程

停止nginx运行输入nginx -s stop 即可

第五:

经过以上的配置,现在我们看下负载效果:

在本地(172.10.1.97)这服务器打开IE,输入:http://172.10.1.97

第一次打开网站的结果图:


第一次运行网站图

再刷新一下网页,出现的结果图:


再次访问网站图

负载配置成功。

网上介绍说nginx软件可以处理并发上万,所以绝对是个非常不错的选择。

如果网站访问量非常大,可以专门用一台服务器跑nginx,其它服务器跑网站程序(几台服务器的程序都是一样的),这样负载就没有太大问题,如果再不行,把网站一些栏目做一个2级域名,2级域名同样做负载,这样更厉害了吧。
nginx软件在linux上跑性能比在windows上跑要好,所以做负载可以用linux跑nginx,.net开发的网站放到windows 服务器IIS上。


    
[2]nginx同时作为负载均衡和Web缓存服务器
    来源: 互联网  发布时间: 2013-12-24

Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成。
最新的Nginx 0.8.32版本,proxy_cache和fastcgi_cache已经比较完善,完全可以取代Squid,同时作为负载均衡服务器和Web缓存服务器来使用。

Nginx从0.7.48版本开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面,但是,通过一个第三方的Nginx模块,可以清除指定URL的缓存。

Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。

最新的Nginx 0.8.32版本,proxy_cache和fastcgi_cache已经比较完善,加上第三方的ngx_cache_purge模块(用于清除指定URL的缓存),已经可以完全取代Squid。我们已经在生产环境使用了 Nginx 的 proxy_cache 缓存功能超过两个月,十分稳定,速度不逊于 Squid。

在功能上,Nginx已经具备Squid所拥有的Web缓存加速功能、清除指定URL缓存的功能。而在性能上,Nginx对多核CPU的利用,胜过Squid不少。另外,在反向代理、负载均衡、健康检查、后端服务器故障转移、Rewrite重写、易用性上,Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。

1、Nginx 负载均衡与缓存服务器在 Linux 下的编译安装:

代码如下:

ulimit -SHn 65535  
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz  
tar zxvf pcre-8.00.tar.gz  
cd pcre-8.00/  
./configure  
make && make install  
cd ../  
 
wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz  
tar zxvf ngx_cache_purge-1.0.tar.gz  
 
wget http://nginx.org/download/nginx-0.8.32.tar.gz  
tar zxvf nginx-0.8.32.tar.gz  
cd nginx-0.8.32/  
./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0 --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-

http_ssl_module  
make && make install  
cd ../  
  

2、/usr/local/webserver/nginx/conf/nginx.conf
配置文件内容如下:

代码如下:

user www www;  
 
worker_processes 8;  
 
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit;  
 
pid /usr/local/webserver/nginx/nginx.pid;  
 
#Specifies the value for maximum file descriptors that can be opened by this process.  
worker_rlimit_nofile 65535;  
 
events  
{  
use epoll;  
worker_connections 65535;  
}  
 
http  
{  
include mime.types;  
default_type application/octet-stream;  
 
charset utf-8;  
 
server_names_hash_bucket_size 128;  
client_header_buffer_size 32k;  
large_client_header_buffers 4 32k;  
client_max_body_size 300m;  
 
sendfile on;  
tcp_nopush on;  
 
keepalive_timeout 60;  
 
tcp_nodelay on;  
 
client_body_buffer_size 512k;  
proxy_connect_timeout 5;  
proxy_read_timeout 60;  
proxy_send_timeout 5;  
proxy_buffer_size 16k;  
proxy_buffers 4 64k;  
proxy_busy_buffers_size 128k;  
proxy_temp_file_write_size 128k;  
 
gzip on;  
gzip_min_length 1k;  
gzip_buffers 4 16k;  
gzip_http_version 1.1;  
gzip_comp_level 2;  
gzip_types text/plain application/x-javascript text/css application/xml;  
gzip_vary on;  
 
#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区  
proxy_temp_path /data0/proxy_temp_dir;  
#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天清理一次缓存,硬盘缓存空间大小为30GB。  
proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;  
upstream backend_server {  
server 192.168.8.43:80 weight=1 max_fails=2 fail_timeout=30s;  
server 192.168.8.44:80 weight=1 max_fails=2 fail_timeout=30s;  
server 192.168.8.45:80 weight=1 max_fails=2 fail_timeout=30s;  
}  
server  
{  
listen 80;  
server_name www.yourdomain.com 192.168.8.42;  
index index.html index.htm;  
root /data0/htdocs/www;  
location /  
{  
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。  
proxy_next_upstream http_502 http_504 error timeout invalid_header;  
proxy_cache cache_one;  
#对不同的HTTP状态码设置不同的缓存时间  
proxy_cache_valid 200 304 12h;  
#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内  
proxy_cache_key $host$uri$is_args$args;  
proxy_set_header Host $host;  
proxy_set_header X-Forwarded-For $remote_addr;  
proxy_pass http://backend_server;  
expires 1d;  
}  
#用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。  
location ~ /purge(/.*)  
{  
#设置只允许指定的IP或IP段才可以清除URL缓存。  
allow 127.0.0.1;  
allow 192.168.0.0/16;  
deny all;  
proxy_cache_purge cache_one $host$1$is_args$args;  
}  
#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。  
location ~ .*.(php|jsp|cgi)?$  
{  
proxy_set_header Host $host;  
proxy_set_header X-Forwarded-For $remote_addr;  
proxy_pass http://backend_server;  
}  
access_log off;  
}  
}  
  

3、启动 Nginx:  

代码如下:
/usr/local/webserver/nginx/sbin/nginx  

4、清除指定的URL缓存示例:

本文转自:张宴 blog.s135.com


    
[3]超详细的nginx负载均衡配置
    来源: 互联网  发布时间: 2013-12-24

本文讲述nginx-0.7.28中的负载均衡配置。
本文从安装步骤一点点说起,因为我们要把整个操作环境搭建出来,所以安装时大家要非常仔细。

开始学习nginx的负载均衡设置,借助tomacat来实现。
在这里我们使用NFS服务器,要保证这些数据程序是同步的之后才能进行后面的操作。

环境描述:
前端一台nginx服务器做调度。
后端两台tomcat做WEB服务器。
动态页与静态页都由tomcat来处理。

所需软件:
nginx-0.7.28.tar.gz
pcre-7.8.tar.gz
apache-tomcat-6.0.20.tar.gz
jdk-6u14-linux-i586-rpm.bin

架构说明:
三台服务器:一台调度也就是nginx服务器,它还是NFS服务器,我们把2个tomcat的webapps目录挂载到NFS服务器上,这样数据程序是同步的了。

配置步骤:

一、web服务器的配置

首先安装两台tomcat,两台安装都一样

1.安装JDK

代码如下:
# pwd 
/usr/local 
# chmod a+x jdk-6u14-linux-i586-rpm.bin 
# ./jdk-6u14-linux-i586-rpm.bin 
# ln -s /usr/java/jdk1.6.0_14 /usr/local/java

设置环境变量
# vi profile
末尾增加如下内容  

代码如下:
JAVA_HOME=/usr/java/jdk1.6.0_14 
CLASSPATH=/usr/java/jdk1.6.0_14/lib/dt.jar:/usr/java/jdk1.6.0_14/lib/tools.jar 
PATH=/usr/java/jdk1.6.0_14/bin:$PATH 
export PATH JAVA_HOME CLASSPATH

2.安装tomcat  

代码如下:
# cp apache-tomcat-6.0.20.tar.gz /usr/local/ 
# cd /usr/local/ 
# tar xzvf apache-tomcat-6.0.20.tar.gz 
# ln -s apache-tomcat-6.0.20 tomcat 
# vi /usr/local/tomcat/bin/catalina.sh

加入一行:  

代码如下:
JAVA_HOME=/usr/java/jdk1.6.0_14 
# /usr/local/tomcat/bin/startup.sh 

启动服务后访问本地的8080端口可以看到对应apache tomcat页面了
把Tomcat加到自启动:
# vi /etc/rc.d/rc.local
在里面加入如下代码:  

代码如下:
export JDK_HOME=/usr/java/jdk1.6.0_14 
export JAVA_HOME=/usr/java/jdk1.6.0_14 
/usr/local/tomcat/bin/startup.sh

至此tomcat已安装成功了

优化: tomcat 比如防止内存溢出; TCP/IP   比如time_wait与closed_wait等等

二、 安装 nginx、nfs 注意它们是一台服务器上

1.安装 nginx

在安装之前首先要安装pcre-7.9.tar.gz  

代码如下:
# tar zxvf pcre-7.9.tar.gz 
# cd pcre-7.9 
# ./configure 
# make && make install

安装nginx  

代码如下:
# tar zxvf nginx-0.7.61.tar.gz 
# cd nginx-0.7.61 
# ./configure --with-http_stub_status_module --prefix=/usr/local/nginx 
# make && make install

修改nginx的配置文件

我这里是把原先的重命名然后新建了一个nginx.conf
#vi nginx.conf   

代码如下:
user nobody nobody; 
worker_processes   8; 
pid   /usr/local/nginx/logs/nginx.pid; 
worker_rlimit_nofile 51200; 
events 

use epoll; 
worker_connections 51200; 

http{ 
includemime.types; 
default_type   application/octet-stream; 
server_names_hash_bucket_size 128; 
client_header_buffer_size 32k; 
large_client_header_buffers 4 32k; 
client_max_body_size 8m; 
 
sendfile on; 
tcp_nopush on; 
keepalive_timeout 60; 
tcp_nodelay on; 
fastcgi_connect_timeout 300; 
fastcgi_send_timeout 300; 
fastcgi_read_timeout 300; 
fastcgi_buffer_size 64k; 
fastcgi_buffers 4 64k; 
fastcgi_busy_buffers_size 128k; 
fastcgi_temp_file_write_size 128k; 
gzip on; 
gzip_min_length   1k; 
gzip_buffers 4 16k; 
gzip_http_version 1.0; 
gzip_comp_level 2; 
gzip_typestext/plain application/x-javascript text/css application/xml; 
gzip_vary on; 
#设定负载均衡列表
upstream   backend 
{
server 192.168.100.89:8080; 
server 192.168.100.90:8080; 

#设定虚拟主机 
server { 
listen 80; 
server_name  www.syitren.com; 
#对 / 所有做负载均衡 (本机nginx采用完全转发,所有请求都转发到后端的tomcat集群) 
location / {
root /var/www ; 
index index.jsp index.htm index.html; 
proxy_redirect off; 
#保留用户真实信息 
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_pass  http://backend; 

#location /nginx {
#access_log   on; 
#auth_basic   "NginxStatus"; 
#auth_basic_user_file   /usr/local/nginx/htpasswd; 
#} 
log_format   access   '$remote_addr - $remote_user [$time_local] "$request" ' 
'$status $body_bytes_sent "$http_referer" ' 
'"$http_user_agent" $http_x_forwarded_for'; 
access_log   /var/log/access.log   access; 

检查nginx的配置文件  

代码如下:
# /usr/local/webserver/nginx/sbin/nginx -t

启动nginx  

代码如下:
# /usr/local/webserver/nginx/sbin/nginx

重启nginx  

代码如下:
# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

(1)查看负载均衡信息

代码如下:
location /nginx {
stub_status on; 
access_log   on; 
auth_basic   "NginxStatus"; 
auth_basic_user_file   /usr/local/nginx/htpasswd; 

其中/usr/local/nginx/htpasswd可以用apache自带的功能生成。

最后在IE里访问:
http://www.syitren.com/nginx, 然后输入用户名密码就进入了。

进入之后的说明

输入地址 http://www.syitren.com/nginx/,输入验证帐号密码,即可看到类似如下内容:

代码如下:
Active connections: 328 
server accepts handled requests 
9309 8982   28890 
Reading: 1 Writing: 3 Waiting: 324 

第一行表示目前活跃的连接数。
第三行的第三个数字表示Nginx运行到当前时间接受到的总请求数,如果快达到了上限,就需要加大上限值了。
第四行是Nginx的队列状态。

(2)负载均衡

代码如下:
upstream   backend 
{
server 192.168.100.89:8080; 
server 192.168.100.90:8080; 
}

三、 配置NFS

需要安装rpm包portmap、nfs,

代码如下:
# vi /etc/export 
/var/www   192.168.100.89(rw,sync,no_root_squash),192.168.100.90(rw,sync,no_root_squash) 
# service portmap restart 
# service nfs start 
# exportfs -rv 

重新输出共享目录,
# showmoun -e

查看本机共享的目录
然后tomcat的两台服务器挂载,
# mount 192.168.100.88:/var/www   /usr/local/tomcat/weapps

然后我们要在两台tomcat的配置文件中即server.xml中做虚拟主机要与nginx.conf里的一致才OK。
# vi server.xml 
 

代码如下:
<Host name="www.syitren.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false"  xmlNamespaceAware="false">
<Context path="" docBase="/usr/local/tomcat/webapps/" debug="0" reloadable="true" crossContext="true"/>
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www.syitren.com_log." suffix=".txt"
timestamp="true"/>
</Host>

四、测试
写一个测试session的页,上传到虚拟主机对应的目录。
(1)访问一次刷新一次再刷新发现时间每次都不一样,就是来回出现两台tomcat的系统时间,说明成功了。
(2)然后把其中的一台tomcat停掉,这时我们再刷新其中有一个就没有响应了,但过了一分钟左右就是一台机器提供服务了,说明,nginx可以自动把 down的服务器去除,从而使客户端透明。
(3)然后再把停掉的tomcat服务器开启,过一段时间后,nginx服务器又把它加入调度行列。这都是自动的。

本文转自:http://bbs.yahunet.com/thread-10029-1-1.html,为方便大家的阅读,做了部分内容的修改,在此感谢原作者的辛苦付出。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
php iis7站长之家
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3