搭建高性能WEB服务器nginx搭建与配置



 

实验环境:(2台服务器)
第一台:

  
系统:Win2003
   nginx
nginx/Windows-0.8.32
   IP
192.168.0.51
  
环境:本地

第二台:
  
系统:Win2003
   IP
192.168.0.52
  
环境:远程

说明:
 
本次测试,软件nginx放在本地(192.168.0.51),也就是说放在域名绑定的那台服务器,这台服务器的IIS不能使用80端口,因为等一下nginx软件要使用80这个端口。(为了方便,我将本机的hosts文件添加了我要测试的域名   192.168.0.51    www.g.cn
下载nginx的地址如下:
nginx
下载:http://nginx.net/

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

一切准备就绪,开始实验:

No.1

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

IIS 网站绑定设置图

No.2

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

 

 

No.3

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

C:\nginx\conf\nginx.conf

1、找到内容server {

在它的上面加入如下内容:

upstream  www.g.cn { 
   server   192.168.0.51:808;
   server   192.168.0.52:80;
    }

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

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

把内容更改如下:

location / {
            proxy_passhttp://www.g.cn;
           proxy_redirect default;
        }

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

把内容改成如下:

server {
       listen       80;
        server_name  192.168.0.51;

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

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

负载配置图

No.4

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

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

启动nginx

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

系统nginx进程

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

 

 

No.5

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

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

       第一次打开网站的结果:

      

第一次访问网站图

        

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

再次访问网站图

OK,测试成功o(_)o

经过这次测试,可见网站的负载平衡并不是难事。也没有必要另外购买硬件设备。补充一点,nginx软件在linux上跑性能比在windows上跑要好,所以做负载可以用linuxnginx.net开发的网站放到windows服务器IIS上。

如果网站访问量非常大,可以专门用一台服务器跑nginx,其它服务器跑网站程序(几台服务器的程序都是一样的),这样负载就没有太大问题,如果再不行,把网站一些栏目做一个2级域名,2级域名同样做负载,这样就ok了。

 

 

nginx负载均衡基于iphashsession黏贴

webserver 2010-10-17 18:07:43 阅读30 评论0   字号:大中小 订阅

nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。
nginx
upstream目前支持的5种方式的分配

1
、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}

2
weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3
ip_hash
每个请求按访问iphash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}

5
url_hash(第三方)
按访问urlhash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

在需要使用负载均衡的server中增加

proxy_pass
http://backserver/;
upstream backserver{

ip_hash;
server 127.0.0.1:9090 down; (down
表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight
默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (
其它所有的非backup机器down或者忙的时候,请求backup机器)
}

max_fails
:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
 
fail_timeout:max_fails
次失败后,暂停的时间

 

 

 

一般做负载均衡,都需要后端多台web服务器之间实现session共享,否则用户登录可能就有问题了。

今天看nginx文档时候,发现nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。

原文如下:
The key for the hash is the class-C network address of the client. This methodguarantees that the client request will always be forwarded to the same server.But if this server is considered inoperative, then the request of this clientwill be transferred to another server. This gives a high probability clientswill always connect to the same server.

就是说我可以在两台服务器上跑两个论坛,但共享一个后台数据库,而不用去关心session共享的问题,前面启用ip_hash,正常情况下,客户端上网 获得IP,登录浏览发帖等都会被转到固定的后端服务器上,这样就不会出问题了。应该说来访IP分布越广,负载均衡就越平均。嘿嘿,如果都是同一个C来的用 户,那就没用了。

虚拟机上搭了个环境测试了一下:

装了三个nginx,分别在808182端口上。

80
端口上的nginx做负载均衡前端,配置到后面两个nginx

upstream test{
            ip_hash;
            server 127.0.0.1:81 ;
            server 127.0.0.1:82 ;
        }

81端口的nginx上写个简单的html,内容为1;在82端口的nginx上写个内容为2html,两个文件同名。

在有ip_hash的时候,刷新页面http://192.168.1.33/index.html,始终显示为1,没有ip_hash的时候,则为轮流的12

你可能感兴趣的:(负载均衡)