手把手教你,使用 Nginx 搭配 Tomcat 实现负载均衡!(二)

简介: 说到 Nginx ,相信大家都不会陌生,最常用的莫过于:用它来与 Tomcat 搭配做负载均衡,起到灰度发布的作用,同时保证系统高可用!

03、Tomcat安装

直接访问 tomcat 官网(http://tomcat.apache.org/),下载对应的安装包,本次案例选择的是apache-tomcat-8.5.45.tar.gz版本,本次安装环境是centos7

80.jpg

上传到对应的服务器文件夹中,之后解压文件夹

tar -zxvf apache-tomcat-8.5.40.tar.gz

重新命名

mv apache-tomcat-8.5.40 tomcat-1

同样的,再次解压安装包,命名为tomcat-2

mv apache-tomcat-8.5.40 tomcat-2

1)修改 tomcat 端口号

将 tomcat-1 的 http 端口设置为8080,将 tomcat-2 的 http 端口设置为8081。

进入tomcatconf文件夹,修改server.xml

vim server.xml

修改SHUTDOWNHTTP/1.1redirectPortAJP/1.3端口,使其错开,避免重启的时候,报端口被占用问题

tomcat-1 的SHUTDOWNHTTP/1.1redirectPortAJP/1.3设置如下:

<!--关闭服务端口-->
<Server port="9005" shutdown="SHUTDOWN">
...
<!--HTTP服务端口8080,跳转端口9443-->
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="9443" />
<!--AJP服务端口-->
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
...
</Server>

tomcat-2 的SHUTDOWNHTTP/1.1redirectPortAJP/1.3设置如下:

<!--关闭服务端口-->
<Server port="10005" shutdown="SHUTDOWN">
...
<!--HTTP服务端口8081-->
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="10443" />
<!--AJP服务端口-->
<Connector port="10009" protocol="AJP/1.3" redirectPort="10443" />
...
</Server>

2)启动服务

分别进入 tomcat-1 、 tomcat-2 的bin文件夹,执行脚本,启动服务

sh startup.sh

查看服务是否启动成功

ps -ef|grep tomcat

81.jpg

说明已经启动成功了,可以直接在浏览器上分别输入ip:8080ip:8081进行访问了,结果如下:

82.jpg

3)编写Html

为了便于测试,我们创建一个html格式的页面,文件命名为index.html,内容如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        Hello server!
    </body>
</html>

进入tomcatwebapps文件夹,删除ROOT文件夹里面的东西,创建index.html文件;

在 tomcat-1 中,index.html 内容如下:

83.jpg

在 tomcat-2 中,index.html 内容如下:

84.jpg

4)测试

创建好了之后,分别在浏览器上访问ip:8080ip:8081

ip:8080,结果如下:

85.jpg

ip:8081,结果如下:

86.jpg

04、Nginx实现负载均衡

进入 Nginx 的配置文件夹

cd /usr/local/nginx/conf

编辑nginx.conf配置文件

vim nginx.conf

主要新增upstream集群配置点,配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {  
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
     #服务器的集群(这个就是我们要配置的地方)
     #test.com:服务器集群名字,自定义
    upstream  test.com {
        #服务器配置   weight是权重的意思,权重越大,分配的概率越大。
        #127.0.0.1:8080、127.0.0.1:8081对应tomcat服务器地址
        server    127.0.0.1:8080  weight=1;
        server    127.0.0.1:8081  weight=2;
    }
    server {  
        listen       81;
        server_name  localhost;
    location / {
    ·        #配置反向代理地址
            proxy_pass http://test.com;
            proxy_redirect default;
        }
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   html;  
        }  
    }  
}

参数说明:

worker_processes:工作进程的个数,一般与计算机的cpu核数一致worker_connections:单个进程最大连接数(最大连接数=连接数*进程数)include:文件扩展名与文件类型映射表default_type:默认文件类型sendfile :开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。keepalive_timeout:长连接超时时间,单位是秒upstream:服务器的集群配置点

配置好之后,进入/usr/local/nginx/sbin/ 文件夹,重新刷新配置文件

./nginx -s reload

最后,访问Nginx服务器所在ip:81地址,多次刷新,看看效果:

87.jpg88.jpg

至此,Nginx 与 Tomcat 搭配实现负载均衡已经配置完了,是不是很酷!

赶紧去试试吧!

    相关实践学习
    部署高可用架构
    本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
    负载均衡入门与产品使用指南
    负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
    相关文章
    |
    2月前
    |
    缓存 前端开发 JavaScript
    tomcat核心技术+Nginx性能调优技术
    而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
    37 1
    |
    10天前
    |
    负载均衡 算法 应用服务中间件
    面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
    字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
    28 0
    |
    2月前
    |
    Java 应用服务中间件 Apache
    简介Nginx,Tomcat和 Apache
    简介Nginx,Tomcat和 Apache
    简介Nginx,Tomcat和 Apache
    |
    2月前
    |
    负载均衡 Java 应用服务中间件
    |
    2月前
    |
    负载均衡 监控 应用服务中间件
    Nginx负载均衡:你的网站流量翻倍利器
    Nginx负载均衡:你的网站流量翻倍利器
    42 0
    |
    2月前
    |
    消息中间件 关系型数据库 MySQL
    使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
    使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
    60 0
    |
    3月前
    |
    缓存 负载均衡 算法
    【Nginx】Nginx 负载均衡
    【1月更文挑战第25天】【Nginx】Nginx 负载均衡
    |
    3月前
    |
    负载均衡 应用服务中间件 nginx
    【实践】使用Nginx作为GrayLog日志接入的负载均衡
    【实践】使用Nginx作为GrayLog日志接入的负载均衡
    44 0
    |
    3月前
    |
    负载均衡 应用服务中间件 nginx
    百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
    至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
    34 0
    |
    3月前
    |
    负载均衡 安全 前端开发
    百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
    这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
    48 1