nginx+tomcat 实现负载均衡部署
nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。它主要有以下优点:
- 高并发连接:
官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。 - 内存消耗少:
在3万并发连接下,开启的10个Nginx 进程才消耗150M内(15M*10=150M)。 - 配置文件非常简单:
风格跟程序一样通俗易懂。 - 成本低廉:
Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。 - 支持Rewrite重写规则:
能够根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。 - 内置的健康检查功能:
如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。 - 节省带宽:
支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。 - 稳定性高:
用于反向代理,宕机的概率微乎其微
由于nginx的性能很好,因此国内很多大公司都在使用,最主要的原因也是nginx是开源免费的。除了上面描述的一系列功能,项目中主要用nginx来实现以下三个功能:
- 动静分离
- 反向代理
- 负载均衡
负载均衡
负载均衡主要有以下特点:
- 分散后台服务器的负载
- 自动去掉后台宕机的服务器
- 缓存后台请求内容,加速请求速度
nginx负载均衡主要有以下五种策略:
- 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 - weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 - ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 - fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。 - url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
策略简单理解就是nginx 依据什么规则进行转发到各个服务器上面
环境搭建:
2个tomcat都启动起来,tomcat相关知识这里不进行赘述
修改tomcat的title避免启动多了不知道哪个是哪个
我们可以去tomcat服务器中找打bin/Catalina.bat(Windows环境下,linux下找到.sh文件即可)文件,依次修改TITLE选项为app01、app02、app03:
主要说下nginx的配置
主要是在config/nginx.config文件中:
使用upstream来配置tomcat集群,其主要配置如下,两台服务器,在最后一行可以指定负载均衡的策略,如果什么也不写默认轮询策略,这里我们使用轮询策略,主要是方便观察:
这里我配置了2个
观察效果
上面2个页面一直替换着显示,证明访问不通的tomcat
但是这个带有session的系统一直进不去,也很正常,在tomcat1里面登录后,再访问进入tomcat2里面了 session没有需要重新登录,所以就一直再这个地方, 后面再学习session共享的问题吧