Win7系统下搭建Nginx+Tomcat高性能负载均衡集群

一、引言

在工作中,为了响应高并发,经常会在Tomcat前面挡一层 Nginx,用 Nginx 来转发请求,这种情况下,我们会在 Nginx 后面放置好多 Tomcat,这就是所谓的集群,示意图如下。本文只是简单的搭建一个Nginx+Tomcat的集群框架。
这里写图片描述
在搭建框架之前,我们先了解一下,什么是反向代理?什么是负载均衡?

反向代理

当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,此时,我们想要直接从个人电脑访问到服务器集群中服务器的时候是无法访问的,必须要通过第三方服务器才能访问集群。

这个时候,我们可以通过第三方服务器访问服务器集群的内容,但是我们并不知道是集群中的哪一台服务器提供的内容,此种代理方式称为反向代理

负载均衡

公司会建立很多的服务器,这些服务器组成了服务器集群。当用户访问网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器。

所以,用户每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

一句话:Nginx会给你分配集群中服务器压力小的那一个去访问

环境工具 :两个Tomcat + 一个Nginx

这里写图片描述

二 、修改Tomcat配置文件和页面文件,并启动

1、修改1号Tomcat的server.xml中的端口号,端口号改为18080,如下图:

这里写图片描述

2、修改2号Tomcat的server.xml中的端口号,端口号改为28080,如下图:

这里写图片描述

3、修改1号Tomcat中webapps下面ROOT下面的index.jsp文件,如下图:

这里写图片描述

4、修改2号Tomcat中webapps下面ROOT下面的index.jsp文件,如下图:

这里写图片描述

三、修改Nginx配置文件,并启动

这里写图片描述

四、实验结果

启动两个Tomcat和Nginx
这里写图片描述

在浏览器中输入:http://192.168.1.102
页面如下:
这里写图片描述

不断刷新,会看到两个tomcat的index.jsp页面会重复出现,如下页面:
这里写图片描述

上面页面交替出现的频率是由在Nginx的配置文件中设置的weight有关。


2018.7.30补充:负载均衡的策略

负载均衡架构图:
这里写图片描述
负载均衡策略 3 种方式:
(1)、Nginx 提供轮询(round robin)
(2)、用户IP哈希(client IP)
(3)、指定权重

负载均衡时Session的处理策略

Session是Tomcat服务器上的内存空间,如果一个用户发出多个请求,却发到了多个tomcat服务器中,那么就会出现Session不同步的问题。

解决方案1:

将一个用户的请求锁定到某一台服务器上,简单,但是缺乏容错性,一旦某个服务器发生故障,Session可能丢失,
(但是服务器发生故障是一个低概率事件,如果一个服务器经常挂掉,要么是硬件有问题,要么是应用有问题),
可以使用用户IP哈希实现。

解决方案2:

Session复制策略,基于网络的广播策略,一个节点Session变化,其他节点同步复制,具有容错性,
但节点多或复制量大时对网络负荷大,使网络效率低下,甚至阻塞:

(1)、 在/conf/server.xml文件中开启Session复制的选项,将<Cluster>注释去掉,7.0默认值以配置好,
		需要接收器<Receiver>绑定内网(一般服务器都有两块网卡)网卡地址,修改端口>。
(2)、在应用中指定应用是在分布式部署之下,在web.xml中添加<distributable/>选项

解决方案3:

额外创建一个共享的空间用来存放Session,所有服务器共享一个Session 

memcached缓存共享方案基本原理粘性Session与非粘性Session方式:(需要一些工具jar包,官网有目录和下载连接
在/conf/context.xml中进行配置,全局有效)
这里写图片描述

集群环境中应用代码应注意的问题

(1)、传递Session需要实体类序列化支持,实现可序列化接口,设置版本号
(2)、获取用户IP地址方法的变化,获取真实客户端ip而不是Nginx代理地址
(3)、动静分离结构的预规划, 一般高并发的网站上,资源类的文件,如js,css,图片通常是由静态服务器处理,Nginx处理静态文件效率就非常高,而Tomcat处理静态文件是它很大的一个弱势,tomcat只负责动态请求的处理。那么编码的时候就要考虑静态资源最后可能要被拿出去,地址会有变化,所以在开发的时候应该规划访问地址,保持最大灵活性。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

止步前行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值