Nginx+Tomcat

均衡负载介绍

负载平衡:一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的

Tomcat集群:一组部署有相同应用的Tomcat服务器。用户的请求无论连接到哪台Tomcat服务器上,都能得到相同的处理。

Nginx+Tomcat_第1张图片

负载均衡服务器:将用户的请求根据特定规则转发到Tomcat服务器上进行处理。从而实现完整的集群处理系统。

 

主流负载均衡服务器:

Nginx:基于特定环境、配置简单、使用灵活、成本低廉,可以满足大部分的负载均衡需求经因为它的稳定性、丰富的功能集、目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等

 

Nginx+Tomcat均衡负载

使用Nginx作为Tomcat的负载平衡器,Tomcat的会话Session数据存储在Redis,能够实现0当机的7x24运营效果。

当我们需要部署新应用代码时,只要停止任何一台tomcat,所有当前在线用户都会导向到运行中的tomcat实例,因为会话数据被序列化到Redis,在线用户不会受到影响,一旦停掉的tomcat实例上线,另外其他重复部署过程。

 

Nginx+Tomcat_第2张图片

1,安装两个tomcat服务器

1,安装两个Tomcat:端口号:一个8080,一个8081

2,打开Tomcat1的conf目录下的server.xml,修改三处端口

               connectionTimeout="20000"

               redirectPort="8443" />

    redirectPort="8443" />

 

3,将同一个web项目复制到webApps下 修改页面标题用于标识具体的 Tomcat容器:tomcat1或tomcat2

2,安装Nginx服务器

1,下载Nginx服务器:

下载地址:  http://nginx.org/en/download.html

 

2,下载完成后进行解压,将解压后的文件放到预备安装的Nginx的目录下

Nginx+Tomcat_第3张图片

3,启动Nginx服务

双击nginx.exe,启动Nginx服务,查看任务管理器:

验证是否启动,直接访问http://localhost如下图所示,代表安装启动成功

Nginx+Tomcat_第4张图片

4,Nginx的cmd简单命令:在bin目录下操作

nginx.exe -s stop                   //停止nginx

nginx.exe -s reload                //重新加载nginx

nginx.exe -s quit                     //退出nginx

 

3,配置Nginx实现均衡负载

Nginx配置

        Nginx 的配置主要是修改 nginx/conf/nginx.conf文件

 

1,修改conf/nginx.conf文件,在server标签上边添加upstream如下:

upstream localhost{

#weigth参数表示权值,权值越高被分配到的几率越大

#本机上的Squid开启3128端口

        server 127.0.0.1:8080 weight=1;

        server 127.0.0.1:8081 weight=1;

}

这里指定了本机下的两个Tomcat实例,端口分别为8080,8081,权重都为1,后边配置Tomcat实例

 

2,配置server标签 中的location,指向刚才的localhost!

  #主机配置

    server {

        listen  80;

#域名

        server_name  localhost;

#字符集  utf-8

        #charset utf-8;

 

# 第一个必选规则

#反向代理配置,将所有请求全部转发到upstream中定义的目标服务器中。

        location  /  {

    #此处配置的域名必须与upstream的域名一致,才能转发。

    proxy_pass http://localhost;

}

 

#第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项

location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {

 proxy_pass http://localhost;

}

}

 

3,启动Nginx、Tomcat1、Tomcat2

浏览器地址栏中输入http://localhost/

按F5刷新页面,浏览器页面会在Tomcat1与Tomcat2之间切换,至此负载均衡配置完成。

 

注意事项:

1,Upstreamname 改成 localhost,否则请求能转发,但是项目中所有的路径不对。

2,server_name域名 和 upstream 的name 一致!

 

4,测试负载均衡

修改EBP项目标题:TOMCAT1、TOMCAT2 用于区分服务器:

 

1,修改:两个login.jsp页面、adminLayout.jsp、userLayout.jsp

2,可以看出来,nginx已经对请求进行了转发,注意一下session会话!

 

登录成功后,我们将user放到session作用域了,页面标题也已经显示了。

继续点击其它页面,发现请求到另一个tomcat了,session作用域也消失了。

 

解决方式:

session是存在服务器端,分布式之后,session的维护就变得困难。

可以使用Redis实现session共享。

 

 

 

 

你可能感兴趣的:(Nginx)