Nginx+Tomcat 实现负载均衡

1、nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。它主要有以下优点:
1) 高并发连接:
官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。
2) 内存消耗少:
在3万并发连接下,开启的10个Nginx 进程才消耗150M内(15M*10=150M)。
3) 配置文件非常简单:
风格跟程序一样通俗易懂。
4)成本低廉:
Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
5)支持Rewrite重写规则:
能够根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。
6)置的健康检查功能:
如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
7) 节省带宽:
支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
8) 稳定性高:
用于反向代理,宕机的概率微乎其微
2、nginx三大功能
由于nginx的性能很好,因此国内很多大公司都在使用,最主要的原因也是nginx是开源免费的。除了上面描述的一系列功能,项目中主要用nginx来实现以下三个功能:

动静分离
反向代理
负载均衡

动静分离

动静分离的原理非常简单,我们可以将一些静态资源html文件、图片等交给nginx来处理,将后台请求转发给后台服务器处理,由于nginx会有缓存作用,因此这样不仅仅加快了访问速度,而且也减小了tomcat服务器的负载。

反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连的客户端,此时代理服务器对外就表现为一个服务器。
Nginx+Tomcat 实现负载均衡_第1张图片(需要注意的是代理服务器可以作为前端服务器来处理前端等请求处理静态资源,但是不能处理后端服务器的请求。)
反向代理又称为Web服务器加速,是针对Web服务器提供加速功能的。它作为代理Cache,但并不针对浏览器用户,而针对一台或多台特定Web服务器(这也是反向代理名称的由来)。代理服务器可以缓存一些web的页面,降低了web服务器的访问量,所以可以降低web服务器的负载。web服务器同时处理的请求数少了,响应时间自然就快了。同时代理服务器也存了一些页面,可以直接返回给客户端,加速客户端浏览。

Nginx+Tomcat 实现负载均衡_第2张图片
2、负载均衡主要有以下特点:

分散后台服务器的负载

自动去掉后台宕机的服务器

缓存后台请求内容,加速请求速度

nginx负载均衡主要有以下五种策略:
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
默认情况下是轮询的策略,但是这种方式的使用有一个问题,分布式session不一致的问题,不过我们可以使用ip_hash来将同一ip地址上的请求分配到一台服务器中处理,这样就不会出现session不一致的问题。这个问题不是我们这篇文章讨论的重点,感兴趣的读者可以自行查询资料。
3、技术实践
3.1)对于环境的要求当然必须安装Java了,还有安装配置nginx服务器,以及tomcat服务器。
服务器分配如下:一台 nginx 服务器,一台tomcat服务器即可,tomcat服务器需要修改不同端口号,避免端口冲突并在tomcat服务器上配置好JAVA环境变量,配置java 环境变量非常简单 ,一般以普通用户执行,输入java -version 出现以下即表明配置完成(注意的是tomcat 版本应与java版本匹配)。
在这里插入图片描述
3.2)通过ftp 工具上传至服务器上如下图 (通过两套tomcat进行实现)
Nginx+Tomcat 实现负载均衡_第3张图片
3.3)修改端口号
然后修改这两个Tomcat的启动端口,分别为18080和28080,下面以修改第一台Tomcat为例,打开Tomcat的conf目录下的server.xml,并修改前进行备份配置文件 server.xml。
Nginx+Tomcat 实现负载均衡_第4张图片
3.4)修改第一套tomcat端口号为 18080 (apache-tomcat-8.5.50)
Nginx+Tomcat 实现负载均衡_第5张图片
3.5)修改第二套tomcat端口号为 28080 (apache-tomcat-8.5.51)
Nginx+Tomcat 实现负载均衡_第6张图片
3.6)分别通过端口访问导航页即可(注意区分端口号)
tomcat1:
Nginx+Tomcat 实现负载均衡_第7张图片tomcat2:
Nginx+Tomcat 实现负载均衡_第8张图片3.7)安装编译Nginx
下载资源并解压资源 tar -zxvf nginx-1.8.1.tar.gz 如下:(建议用普通用户执行,其它下载安装编译方法皆可)
在这里插入图片描述
3.8)编译安装 cd nginx-1.8.1 执行 ./configure --prefix=/usr/local/nginx 命令指定nginx的安装位置,我们指定了/usr/local/nginx这个目录make && make install (注意系统插件完备的情况下)
3.9 )查看
进入到/usr/local目录下我们可以看到多了nginx目录,说明我们已经安装成功
Nginx+Tomcat 实现负载均衡_第9张图片
4.实现负载均衡配置
4.1)修改配置文件nginx.conf 并实现负载均衡
Nginx+Tomcat 实现负载均衡_第10张图片
4.2)启动nginx
cd /usr/local/nginx/sbin 执行 ./nginx即可
在这里插入图片描述
4.3)启动测试
我们即可输入:localhost/index.jsp即可查看运行状况了
4.4)第一次访问,发现访问的是Tomcat2上的程序
Nginx+Tomcat 实现负载均衡_第11张图片
4.5)第二次访问,发现访问的仍然是Tomcat2上的程序
Nginx+Tomcat 实现负载均衡_第12张图片
4.6)第三次访问,发现访问的是Tomcat1上的程序
Nginx+Tomcat 实现负载均衡_第13张图片
即时,nginx+tomcat 实现负载均衡配置完成。如有其它疑问请广大博友评论。

你可能感兴趣的:(中间件,nginx)