一、Nginx + Apache 通过反向代理实现负载均衡
一、Nginx简单介绍
Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器。也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能。而最常见的就是使用Nginx实现负载均衡。
Nginx反向代理的过程:
用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。
Nginx负载均衡的过程(会自动选择压力较小的服务器进行访问):
Nginx的应用
1、到官网下载Windows版本,下载地址:http://nginx.org/en/download.html
2、解压到磁盘任一目录
3、修改配置文件:具体参考备注。
4、启动服务:
直接运行nginx.exe,缺点控制台窗口关闭,服务关闭。
守护进程的方式启动:start nginx.exe
停止服务:nginx -s stop
重新加载配置:nginx -s reload
最简单的配置实例(conf/nginx.conf):
worker_processes 1; #工作进程数
events {
worker_connections 1024; #设置单个进程最大连接数
}
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream;#默认文件类型
sendfile on;
keepalive_timeout 65; #长连接超时时间,单位是秒
#主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
upstream cloudtest.com {
#weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动
server 127.0.0.1:8081 weight=2;
#server 127.0.0.1:8082 backup;
server 127.0.0.1:8080 weight=3;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://cloudtest.com;
proxy_redirect default;
}
}
二、Tomcat的准备工作
首先,由于我是在一台机器用Nginx + Tomcat,所以我需要修改tomcat配置,使Windows可以运行多台tomcat。
只需要修改三个端口号(还未被使用的端口号)就可以了:
<Server port="8007" shutdown="SHUTDOWN"></Server>
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
三、运行结果
1、修改上面两个Tomcat的默认页面(为了区分下面到底访问的是那一台Tomcat,随便改一下即可)
2、启动自己配置好的Tomcat
3、切换到自己Nginx解压目录:start nginx
结果如下:
第一次访问,发现访问的是Tomcat1上的程序:
然后刷新几次,会交替访问Tomcat2和Tomcat1的程序:
四、总结
谁能想到实现一个高性能的负载均衡集群会如此简单。Nginx的功能如此强大,配置却如此简单,我们还有什么理由拒绝它呢?这比我们动不动就十多万至几十万人民币的F5 BIG-IP、NetScaler等硬件负载均衡交换机廉价了不知多少。此外,大家别忘了Nginx不仅仅是一个反向代理服务器,它本身也可以托管网站,作为Web服务器,进行Http服务处理。