Nginx是一个高性能的HTTP和反向代理WEB服务器。Nginx具有占用内存小,并发能力强的特点,是搭建WEB服务的常用工具。
反向代理的两个重要作用是隐藏应用服务器和负载均衡。我们在《Nginx 反向代理配置教程》中详细描述反向代理的配置过程,下面在此基础上来配置负载均衡功能。
1.负载均衡
受硬件条件的限制,一台应用服务器的响应能力是有限的。当用户的访问量超过了一台应用服务器的处理能力时,就需要增加应用服务器,或者搭建应用服务器集群。这时,反向代理就可以根据配置的权重向多台应用服务器转发请求,避免单台服务器能力不足的问题。
2.配置负载均衡
在sites-enabled新增监听8000端口虚拟主机,可以直接拷贝default配置进行修改。目录结构如下:
firefly@firefly:/etc/nginx/sites-enabled$ ls
8000 8080 8090 default
8000端口的虚拟主机配置为:
upstream test_http {
server localhost:8080 weight=1;
server localhost:8090 weight=2;
}
server {
listen 8000 default_server;
server_name _;
location / {
proxy_pass http://test_http;
}
}
Nginx通过upstream来定义一组提供相同服务的服务器,如配置文件中的8080端口和8090端口WEB服务器。
当用户访问服务器8000端口时,Nginx会反向代理到upstream定义的服务器组,达到负载均衡的目的。默认情况下,Nginx按照加权轮转的方式将请求分发到各服务器,权重越高,转发到的概率越高。
3.验证负载均衡
配置修改好之后,需要重启Nginx服务。
sudo service nginx restart
服务重启后,来验证一下负载均衡功能。
jishu@Jishu:~$ curl http://192.168.1.11:8000
bbbbbbbbbb
jishu@Jishu:~$ curl http://192.168.1.11:8000
bbbbbbbbbb
jishu@Jishu:~$ curl http://192.168.1.11:8000
aaaaaaaaa
jishu@Jishu:~$ curl http://192.168.1.11:8000
bbbbbbbbbb
jishu@Jishu:~$ curl http://192.168.1.11:8000
bbbbbbbbbb
jishu@Jishu:~$ curl http://192.168.1.11:8000
aaaaaaaaa
从curl命令访问情况来看,转发到8090端口服务器的概率比较高,符合weight定义,负载均衡功能配置成功。