Nginx+Tomcat是如何实现负载均衡的
admin
2023-03-28 16:21:29
0

的负载均衡(Server Load Balancing)是对多台云服务器(计算集群)进行流量分发的网络服务设备。它可以通过流量分发,快速提高应用系统对外的服务能力;隐藏实际服务端口,增强内部系统的安全性;通过消除服务单点故障,提升应用系统的可靠性。今天就给大家介绍下Nginx+Tomcat是如何实现负载均衡的

Nginx+Tomcat是如何实现负载均衡的

首先对知识点了解
  • 集群(Cluster)
    简单来说就是用N台云服务器构成一个松耦合的多处理器系统(对外是一个服务器),内部通过网络实现通信。让N台服务器之间相互协作,共同承载一个网站的请求压力。用知乎上一个作者的话来说就是“同一个业务,部署在多个服务器上”,这就是集群。 集群中比较重要的是任务调度。

  •  负载均衡(Load Balance)
    简单来说就是根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服务器群来处理网站的请求,从而共同完成工作任务。

nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器

  1. 高并发连接:
    官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。

2.内存消耗少:
在3万并发连接下,开启的10个Nginx 进程才消耗150M内(15M*10=150M)。

3.稳定性高:
用于反向代理,宕机的概率微乎其微
4.配置文件非常简单:
风格跟程序一样通俗易懂。
5.内置的健康检查功能:
如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
等等优点

由于nginx的性能很好,因此国内很多大公司都在使用,最主要的原因也是nginx是开源免费的。除了上面描述的一系列功能,项目中主要用nginx来实现以下三个功能:

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

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

反向代理:
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连的客户端,此时代理服务器对外就表现为一个服务器。

负载均衡主要特点:

  • 减轻后台服务器负载
  • 自动去掉后台宕机服务器
  • 缓存后台请求内容,加速请求速度

nginx负载均衡主要策略:

  1. 轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  2. weight
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  3. ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
  4. fair
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  5. url_hash
    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

默认情况下是轮询的策略,但是这种方式的使用有一个问题,分布式session不一致的问题,不过我们可以使用ip_hash来将同一ip地址上的请求分配到一台服务器中处理,这样就不会出现session不一致的问题。这个问题不是我们这篇文章讨论的重点,感兴趣的读者可以自行查询资料。

配置安装

需要tomcat和nginx  (前两章博客有tomcat,nginx详细的安装及简介)

安装成功后
tomcat配置文件说明
cd /usr/local/tomcat7/conf/
catalina.policy:权限控制配置文件
catalina.properties:tomcat属性配置文件
server.xml :主配置文件

主配置server.xml文件说明:


##表示tomcat关闭端口,默认只对本机地址开放,可以再本机通过telnet 127.0.0.1 8005 对tomcat进行关闭操作

##tomcat 启动的默认端口号为8080.


##tomcat启动AJP1.3连接器时默认的端口号。

我们可以创建一个新的目录,来设置默认网页。

mkdir -p /web/webapp
cd /web/webapp

写一个jsp的默认网页
vim index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  

        
         JSP test1 page
         
        
        <% out .println("welcom to test sits,http://www.text1.com");%>
        

#编辑主配置文件
vim server.xml  #添加以下部分内容

     
                        以上内容是存在的,添加下面这一条
             
             

重新启动tomcat

/usr/local/tomcat7/bin/shutdown.sh  #关闭
/usr/local/tomcat7/bin/startup.sh   #启动tomcat

访问tomcat页面
Nginx+Tomcat是如何实现负载均衡的

配置好tomcat,在配置nginx
vim /usr/local/nginx/conf/nginx.conf
在nginx.conf配置

在server中添加红色部分内容(在localtion下添加)
     location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat-server; (tomcat-server是一个自定义名称)
        }

在http段中添加一下内容(最后一行的大括号上边添加)
  upstream tomcat-server {
                server 192.168.3.101:8080 weight=1;
                server 192.168.3.102:8080 weight=1;
        }

重启一下nginx
再次访问(访问的并不是tomcat,而是nginx,访问页面会轮询出现tomcat的页面。)
至此,我们就完成了对nginx负载均衡的测试。

如果大家还有什么地方需要了解的可以在官网找我们的专业技术工程师的,技术工程师在行业内拥有十几年的经验了,所以会比小编回答的更加详细专业。官网链接www.yisu.com

 

相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...