首先声明一下这里的nginx是负载均衡器,而不是web服务器!它是作为web服务器前端来用的!

第一种:单纯的nginx负载均衡:(只列出相关nginx.conf配置)

...........

upstream backserver

{

   //这里可以定义负载均衡的方法,默认为轮询

   web server1; //要负载均衡的两台服务器

   web server2;

}

server

{

   location / {

       ..............

       proxy_pass     //名字要与前面的对应,当访问"/"时就会跳转到                                                       backserver那个负载均衡集去了

   }

}

这种方法有一个很大的缺陷,就是当nginx服务器宕机时,那么所有服务器都无法访问了,也就是没有我们常说的高可用性!

第二种:nginx(master)+nginx(backup)+keepalived+1vip

这种方法nginx配置与前面的一样,跟前面不同的关键地方是多了keepalived,他主要是实现nginx的高可用性,当master的nginx宕机时还有backup的nginx替换,确保web服务器正常工作!

列出相关keepalived.conf配置:

nginx(master)

vrrp_initstance VI_1

{

   state MASTER

   ................

}

nginx(backup)

vrrp_initstance VI_1

{

   state BACKUP

   .......................

}

第三种:nginx(master+backup)+nginx(master+backup)+keepalived+2vip+dns轮询

这个方法主要实现nginx的负载,也就是两台nginx服务器都会实现一般工作,而且当一台nginx宕机时,另外一台nginx也会接管它的工作.这种nginx负载很明显是通过2vip+dns轮询实现的,其实也不能说负载均衡了,只是个分配问题.

列出相关keepalived.conf配置:

nginx 1

vrrp_initstance VI_1

{

   state MASTER

   priority 100

   ................

   virtual_ipaddress{

   192.168.100.1         //vip1

   }

}

vrrp_initstance VI_2

{

 

   state BACKUP

   priority 99

   ................

   virtual_ipaddress{

   192.168.100.2         //vip2

   }

}

这样nginx1对于vip1是出于master地位,同时作为vip2的替补

nginx 2

vrrp_initstance VI_1

{

   state BACKUP

   priority 99

   ................

   virtual_ipaddress{

   192.168.100.1         //vip1

   }

}

vrrp_initstance VI_2

{

   state MASTER

   priority 100

   ................

   virtual_ipaddress{

   192.168.100.2         //vip2

   }

}

而nginx2在vip2出于master地位,同时作为vip1的替补

一般来说采用第二种方法已经很好了,但如果想最求更完美的话就花点心思做第三种方法了!