相对于LVS来说,Nginx做反向代理工作在网络更高层(7层),但对于一般的负载均衡场合已足够应付。若访问量非常大或稳定性要求非常高的场合,选择LVS还是有必要的。
本文力求用最简的例子来演示如何使用Nginx做反向代理实现负载均衡。
实现目标:用Nginx的80端口负载均衡本机8001和8002两个http服务。
开始:
1、安装Nginx。
不多说了,直接进入下一步,配置Nginx。
2、配置Nginx
修改nginx.conf配置文件
……
upstream http_server_pool{
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass ;
proxy_set_header Host localhost;
proxy_set_header X-Forwarded-For $remote_addr;
}
……
}
3、创建8001服务
这里为了便捷,使用Python自带的SimpleHTTPServer来实现HTTP服务。
为了方便看出效果,新建一个a目录,创建一个index.html文件,直接输出“This is 8001!”。
在a目录下执行
python -m SimpleHTTPServer 8001
4、创建8002服务
(参照上一步)
5、运行Nginx
6、轮询效果测试
访问localhost,多刷几次页面,会发现有时输出“This is 8001!”,有时是“This is 8002!”。
7、故障测试
手动分别把8001或8002服务停掉,访问localhost会被引导到能够正常工作的那一个服务上。
只要8001和8002没有全停,服务均能通过80端口正常对外提供。