+ -
当前位置:首页 → 问答吧 → nginx负载均衡问题请教

nginx负载均衡问题请教

时间:2009-08-25

来源:互联网

我有二台机器ip分类是 A机器:222.214.216.1  B机器:222.214.216.161
分类在二台机子上装了nginx
用B台机子nfs挂起A台机子的网站目录,A台机子作为主web
我按照网上说的已在A台机子的nginx.conf配置上加入
upstream myproject {
    server 222.214.216.1;
    server 222.214.216.2;
  }
经过测试无效果,
一直不明白的就是B台机子上怎么配置.难道只要在A机子上的nginx.conf加入以上代码就可以吗.
请求达人们帮帮我.

作者: yhf111   发布时间: 2009-08-25

你的思路是错误的,必须纠正。
所谓负载均衡,是要求有一台主要的机器,然后有X台从机。
根本谈不上nfs,如果非要用的话,可能就是各个从机间的同步了。
主机的作用就是负载均衡,其他机器,无需配置。
但是实现真正意义上的负载均衡,nginx还不行。
我用的最多的就是用它来备份,当一台server宕机以后,其他机器再上。

如果你真的想用它作负载均衡的话:
server 192.168.8.1:3128 weight=5;
server 192.168.8.2:80  weight=1;
server 192.168.8.3:80  weight=6;
需要这样配置,weight=权值,权值越高,容易被分配到的几率越高。

作者: xieaotian   发布时间: 2009-08-25

nginx说明上说可以实现的,二台之间的负载的,

但是配置不成功的,

作者: yhf111   发布时间: 2009-08-25

你照着我说的作了么

作者: xieaotian   发布时间: 2009-08-25

A机器:222.214.216.1  B机器:222.214.216.161
A机子主要是放置nginx+php+mysql
现在B机我用NFS挂载A机网站目录程序,我直接输入B机的ip地址是可以访问网站的,
现在主要是不知道如何实现负载平均,,
版主
你说的意思是在nginx.conf
中加入

upstream mysvr {
server 222.214.216.1 weight=5;    (这里是A机器)
server 222.214.216.161  weight=6; (这里是B机器)
}
location / {
proxy_pass      http://mysvr;
}

我看到没有任何效果,


版主
帮帮我,二台机子如何实现负载平均,,

我现在用了dns
但是dns负载的不均匀。

作者: yhf111   发布时间: 2009-08-26

本帖最后由 yhf111 于 2009-8-26 12:02 编辑

user host host;
worker_processes 2;
error_log logs/nginx_error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 1500;
events {
use epoll;
worker_connections 1500;
}

http {
include mime.types;
default_type application/octet-stream;
charset gb2312;

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 8 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_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;

#limit_zone crawler $binary_remote_addr 10m;

upstream mysvr {
server 222.214.216.1 weight=5;    (这里是A机器)
server 222.214.216.161  weight=6; (这里是B机器)
}


server {
listen 80;
server_name www.xxxxx.cn;
root /home/web1;
index index.php index.html;
location /NginxStatus {   
    stub_status        on;   
    access_log         on;   
    auth_basic         "NginxStatus";   
    auth_basic_user_file htpasswd;   
  }

location / {
proxy_pass      http://mysvr;
}

location ~ .*\.(php|php5)?$ {
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param  SCRIPT_FILENAME  /home/web1/$fastcgi_script_name;
fastcgi_index index.php;
include fcgi.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
      expires      15d;
    }

location ~ .*\.(js|css)?$
   {
     expires     24d;
   }  
}
}
}


这是我的配置,这个配置文件是在A机器上的,帮助看一下,谢谢!

作者: yhf111   发布时间: 2009-08-26

配置没问题阿
你可以再虚拟一台系统,一台主系统,两台负载均衡的系统。
然后再主系统里配置负载配置,再试试。
还有你凭什么说没效果呢?你试如何测试的?

作者: xieaotian   发布时间: 2009-08-26

谢谢版主

作者: yhf111   发布时间: 2009-08-26

版主,这样要如何才能测试出效果呀,

作者: yhf111   发布时间: 2009-08-26

我这样测试的,我分别输入二个机子的ip /NginxStatus
然后看看那个连接并发请求的个数,就知道有没有成功。。。。。。如果a和b机同时都有并发,说明这个是成功了,,,,不知道我理解的对不对的

作者: yhf111   发布时间: 2009-08-26

也可以

作者: xieaotian   发布时间: 2009-08-27

我觉得应该先顺一下网络结构

作者: z0800   发布时间: 2009-09-04