天天看点

Nginx实现多个Tomcat均衡负载实例

之前只是看过nginx的转发和均衡负载的功能,然后为了演示最近动手做了下,体会到了nginx的强大~

先来自度娘的一波nginx介绍:

                                                         Nginx

Igor Sysoev从2002年开始开发NGINX,并在2004年发布了第一个公开版本。目前,它是第二流行的开源web服务器,全球有超过30%的网站在使用它。 NGINX依靠异步事件驱动架构来帮助其处理大量的并发会话,由于其对资源的轻量利用和伸缩自如的特性,它成为了广受欢迎的web服务器。 NGINX不仅可作为web服务器进行部署,也可作为代理服务器或负载平衡器。

1.Nginx的安装

事先说一下我的是Linux系统,下面是两种安装方法

第一种安装方法:通过自带的软件仓库安装:sudo apt-get install nginx

安装好的文件位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件

/usr/share/nginx:存放静态文件

/var/log/nginx:存放日志

第二种方法:通过官网下载源程序压缩包安装,具体方法见百度的一篇博客:https://www.cnblogs.com/EasonJim/p/7806879.html

我是采用的第一种方法,然后想要操控nginx服务器可以直接service nginx start/stop/restrat

2.修改Tomcat的配置文件

因为我只有一台电脑,没法实现真正的均衡负载,我就在我电脑上运行三个tomcat服务器,然后通过修改nginx配置文件作为代理,访问同一个url时以轮询的方式来实现均衡负载

直接去tomcat官网下载一个压缩包,解压成3个tomcat,然后修改他们的端口保证他们运行起来不冲突

具体修改配置端口步骤:

来到tomcat的根目录,在/conf下的server.xml是配置tomcat的文件,打开,修改3个端口

比如修改成这样:

Nginx实现多个Tomcat均衡负载实例
Nginx实现多个Tomcat均衡负载实例
Nginx实现多个Tomcat均衡负载实例

注意是修改port那的端口,那个8443不用动,保存

然后每个tomcat的这3个端口都不能相同,否则会产生冲突

产生冲突会无法启动,通过lsof -i:端口号 可以看相应端口的占用情况,必要时直接kill掉进程就好了

修改完成后去每一个tomcat的bin文件里通过./startup.sh来启动,webapps下的examples是tomcat自带的一个例子,输入

localhost:端口号/examples可以查看该例子,然后我对每个tomcat的index.html做出了些修改以查看均衡负载的效果:

Nginx实现多个Tomcat均衡负载实例
Nginx实现多个Tomcat均衡负载实例
Nginx实现多个Tomcat均衡负载实例

3.配置Nginx配置文件

来到/etc/nginx 目录下通过配置nginx.conf来实现均衡负载

nginx负载均衡策略:

轮询 默认方式
weight 权重方式
ip_hash 依据ip分配方式
least_conn 最少连接方式
fair(第三方) 响应时间方式
url_hash(第三方) 依据URL分配方式

这里用轮询的方式进行测试:

在nginx.conf中的http{}中的server{}前加上:

upstream test{
  server 127.0.0.1:8080;
  server 127.0.0.1:8081;
  server 127.0.0.1:8082;
}
           

这里的test表示均衡分配策略,默认情况下是轮询,会均衡负载到填写的每个web服务器中,之前按照博客上的标准轮询写的那个策略名字,然后报了错误代码400,之后修改成了test。。莫名其妙就成功了

之后为了测试转发功能,同时也是使端口不冲突,我把server里的listen 8080;改成了listen 80;

然后把server{}里的location /{}修改成(原来的注意要注释掉):

location /{
            proxy_pass http://test;
        }
           

保存,service nginx restart;(如果之前没启动就start)

然后就可以看到均衡负载效果:

Nginx实现多个Tomcat均衡负载实例
Nginx实现多个Tomcat均衡负载实例
Nginx实现多个Tomcat均衡负载实例

继续阅读