Nginx 配置负载均衡

先给大家推荐首歌,纣王老胡的涩,有人说这首歌听起来就很穷,而我可能因为太穷了,所以听起来觉得特别好听。


我没那么多物理机去搭负载均衡测试需要的环境,所以我在自己的机器上搭了三个虚拟机,电脑差不多要爆炸了。
虚拟机:VMware Workstation 
操作系统: centos6.3

服务器:nginx


先说一下要实现的目标:
当我在我的物理机上访问http://www.test.com的时候,会访问到192.168.1.102这台反向代理服务器,然后反向代理服务器转发请求给另外的两台服务web服务器。


如何验证配置成功:

我这里配置的nginx使用轮训分流的方式实现负载均衡,所以当我在物理机的浏览器上访问http://www.test.com的时候,每次刷新页面都会轮流访问两台web服务器(192.168.1.103 和 192.168.1.106),我只要把放在两台web服务器的代码改成输出不同的内容,就知道反向代理服务器把请求转发给谁了。为了效果明显,
192.168.1.103的web服务器输出字符串“192.168.1.103"
192.168.1.106的web服务器输出字符串“192.168.1.106”


配置步骤:

创建三个虚拟机,环境都一样安装了nginx:
虚拟机一:192.168.1.102, 用来作为反向代理的服务器
虚拟机二:192.168.1.103 普通的web服务器
虚拟机三:192.168.1.106 普通的web服务器


这里不用分三次安装centos跟nginx,只需要配置一个就行了,然后根据第一个环境克隆出两个,但是网卡得单独配置。


虚拟机网络配置:
怎么创建虚拟机就不说了,但是这里说一下,因为要配置成三个环境能够互相通信,可以把虚拟机的网络适配器的网络连接设置为桥接模式。
安装完centos之后,要配置一下网卡,手动设置一下ip,然后把子网掩码设置成我们的物理机一样。用命令:
vi /etc/sysconfig/network-scripts/ifcfg-eth0


主要是配置下面三个参数:
BOOTPROTO="static"
IPADDRE=192.168.1.102
NETMASK=255.255.255.0


设置完成之后用ifdown eth0 和 ifup eth0重启一下网卡,然后用service iptables stop把三个环境的防火墙关了。


网卡配置也可以参考这篇文章(http://jahng.cn/node/12),反正目标只有一个,三台主机能够互相通信。

安装nginx:
前面说过,通过在我的物理机上访问http://www.test.com的时候访问到192.168.1.102这台反向代理服务器,所以在我的物理机上配置一下host文件,把www.test.com 指向 192.168.1.102。
文件在C:\Windows\System32\drivers\etc\hosts
添加:192.168.1.102      www.test.com
好了,到现在为止,web环境跟虚拟主机都配置好了,现在要做的就是配置反向代理服务器:
修改nginx的配置文件
 vi /etc/nginx/nginx.conf

添加红色框部分

clipboard.png

修改虚拟主机配置
vi /etc/nginx/conf.d/default.conf
修改红色部分


clipboard2.png


用命令重启一下nginx
service nginx restart
然后在物理机访问http://www.test.com

clipboard3.png

再刷新一遍:

clipboard4.png