Linux 之nginx 负载均衡集群:

     实验环境:10.72.4.37 (dr,是lnmp 的环境),10.72.4.48 (rs1),10.72.4.39 (rs2,是lamp 的环境),三台机上均安装nginx。[rpm  -qal nginx 查看nginx  的黙认安装目录]


【如果是没有安装nginx的,按以下步骤操作:


Centos 6下如果安装过epel的yum源可以直接yum安装nginx  yum install -y nginx 

或者源码包编译nginx, 官网地址http://nginx.org/  下载合适版本(最好不要最新)

下载后解压编译安装:

 ./configure --prefix=/usr/local/nginx; make; make install

源码包cd /usr/local/nginx/conf; yum安装 cd /etc/nginx

vim nginx.conf // 增加

include lb.conf;

vim lb.conf  //增加如下  #编译upstream


[root@dir ~]# vim /usr/local/nginx/conf/vhosts/lb.conf #编译upstream 

upstream 321.com {

    server 10.72.4.39:80 weight=2;#此处可以加端口,也可以不加,黙认是80

    server 10.72.4.48:80 weight=1;

}

server {

    listen 80;

    server_name www.321.com;

    location / {

        proxy_pass      http://321.com/;

        proxy_set_header Host   $host;

        proxy_set_header X-Real-IP      $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

[root@dir ~]# ipvsadm -C  #清空之前实验的所有规则

[root@dir ~]# iptables -t nat -F

[root@dir ~]# iptables -F

[root@dir ~]# /etc/init.d/nginx start  #启动nginx

Starting Nginx:                                            [  OK  ]


[root@dir ~]# curl -xlocalhost:80 www.321.com  #在dir 上curl测试,因为加了权重,两次rs2,一次rs1


Linux 之nginx 负载均衡集群_均衡集群


[root@rs2 ~]# /etc/init.d/nginx stop  #停掉rs2 上的 nginx 服务

Stopping nginx:                                            [  OK  ]


[root@dir ~]# curl -xlocalhost:80 www.321.com  #服务器直接把rs2 剔除

Welcome to china,wumai 2016-12-23 RS1_rs1

#全是rs1 ,不会切换到rs2,因为rs2的服务已要停了,服务器自动把RS2

Linux 之nginx 负载均衡集群_Linux_02


重新启动rs2上的nginx 服务又恢复原来两台rs 的工作状态

Linux 之nginx 负载均衡集群_均衡集群_03



--------------------------------------------------------

Linux 之nginx 负载均衡集群可以针对目录来操作。楼主末亲测。

来源 :http://ask.apelearn.com/question/920


我的需求: 当请求的目录是 /aaa/ 则把请求发送到机器a,当请求的目录为/bbb/则把请求发送到机器b,除了目录/aaa/与目录/bbb/外,其他的请求发送到机器b


我的配置文件内容为:

  1. upstream aaa.com

  2. {

  3.             server 192.168.111.6;

  4. }


  5. upstream bbb.com

  6. {

  7.             server 192.168.111.20;

  8. }


  9. server {

  10.         listen 80;

  11.         server_name li.com;

  12.         location /aaa/

  13.         {

  14.             proxy_pass http://aaa.com/aaa/;

  15.             proxy_set_header Host   $host;

  16.             proxy_set_header X-Real-IP      $remote_addr;

  17.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


  18.         }


  19.         location /bbb/

  20.         {

  21.             proxy_pass http://bbb.com/bbb/;

  22.             proxy_set_header Host   $host;

  23.             proxy_set_header X-Real-IP      $remote_addr;

  24.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


  25.         }

  26.         location /

  27.         {

  28.             proxy_pass http://bbb.com/;

  29.             proxy_set_header Host   $host;

  30.             proxy_set_header X-Real-IP      $remote_addr;

  31.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


  32.         }


  33. }


说明:

1 以上配置文件中的 aaa.com 以及 bbb.com 都是自定义的,随便写。
2 upstream 中的server 可以写多个,例如

upstream aaa.com 
{
            server 192.168.111.6;
            server  192.168.111.4;
            server  192.168.111.5;
}

3 proxy_pass http://aaa.com/aaa/  这里必须要加这个目录,不然就访问到根目录了。
4 实际上,上述配置文件中, localtion /bbb/ 部分是可以省略掉的,因为后边的 location /  已经包含了/bbb/,所以即使我们不去定义  localtion /bbb/ 也是会访问到 bbb.com 的。