锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. Nginx和Tomcat实现负载均衡群集部署应用

Nginx和Tomcat实现负载均衡群集部署应用

0
  • 软件开发
  • 发布于 2024-07-29
  • 13 次阅读
黄健
黄健

原文链接:https://blog.csdn.net/jxjdhdnd/article/details/140351538

在当今互联网高并发访问的环境下,单一的Web服务器很难满足不断增长的用户需求。为了提高系统的可靠性、可扩展性和高可用性,实现负载均衡和集群部署是一个非常重要的解决方案。

Nginx凭借其高性能、高并发和低资源占用的特点,成为了一款出色的反向代理服务器和负载均衡器。它可以在多台Web服务器之间分发请求,实现负载均衡,同时还提供了缓存、压缩等优化功能,有效提高了Web应用程序的响应速度和可靠性。

而Tomcat则是一款广泛使用的Java Web应用服务器,它支持集群部署,可以将多个Tomcat实例组合成一个逻辑上的服务器集群,实现请求的负载均衡和会话共享,从而提高了系统的可扩展性和高可用性。

无论是Nginx还是Tomcat,它们在负载均衡和集群部署方面都有着独特的优势和特点,根据具体的应用场景和需求,合理选择和配置这两种技术,可以极大地提升Web应用程序的性能和可靠性。

实验环境

Nginx IP地址:192.168.192.100/24

Tomcat1 ip地址:192.168.192.111/24

Tomcat2 ip地址:192.168.192.112/24

本案例我们将以Nginx作为负载均衡器,Tomcat作为应用服务器的负载群集的设置方法

Tomcat1

1.查看JDK是否安装

[root@localhost ~]# java -version

-bash: java: 未找到命令

如果没有配置java不要慌,如果有的话是会显示的

配置本地源或者阿里源来安装

yum install -y java-1.8.0-openjdk

上传安装包 解压安装

解压完成之后移动

开启tomcat

[root@localhost ~] tar -zxf apache-tomcat-9.0.91.tar.gz    解压

 

 

 

[root@localhost ~ ]mv apache-tomcat-9.0.91 /usr/local/tomcat8   移动到 /usr/local下

 

 

[root@localhost ~] /usr/local/tomcat8/bin/startup.sh		开启tomcat

Using CATALINA_BASE:   /usr/local/tomcat8

Using CATALINA_HOME:   /usr/local/tomcat8

Using CATALINA_TMPDIR: /usr/local/tomcat8/temp

Using JRE_HOME:        /usr

Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar

Using CATALINA_OPTS:   

Tomcat started.

访问测试

访问Tomcat的ip地址8080 出现以下页面表示成功

创建存放的目录和页面

创建/web/webapp1目录,修改Tomcat 配置文件 server.xml,将网站文件目录更改到/web/webapp1/路径下

mkdir -p /web/webapp1

在/web/webapp1/路径下建立 index.jsp,为了区别将测试页面 index,jsp 的内容更改如下

vim /web/webapp1/index.jsp

加入以下内容

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

<html>

<head>

    <title>JSP test1 page</title>

</head>

<body>

    <% out.println("Welcome to test site, http://www.test1.com");%>

</body>

</html>

修改Tomcat存放路径

vim /usr/local/tomcat8/conf/server.xml

[root@localhost ~]# netstat -nultp | grep 8080

tcp6       2      0 :::8080                 :::*                    LISTEN      1133/java           

[root@localhost ~]# kill -9 1133

重启

[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh

查看进程关闭进程

重新访问测试

Tomcat2

都也一样需要注意的是页面内容记得修改

Nginx配置

下载所需组件

yum groupinstall "Development Tools"

yum install -y pcre-devel zlib-devel openssl-devel

如果还缺什么组件 可以自己下载 如果没有包 可以配置阿里源来下载

root@localhost ~ groupadd www

root@localhost ~ useradd -g www www -s /bin/false

root@localhost ~ tar -xzf nginx-1.26.1.tar.gz 

root@localhost ~ cd nginx-1.26.1/

[root@localhost nginx-1.26.1] ./configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module

 

 

make && make install

编辑Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

 

 

        upstream tomcat_server {

        server 192.168.192.111:8080 weight=1;

        server 192.168.192.112:8080 weight=1;

    }

 

 

          location ~ \.jsp$ {

            proxy_pass   http://tomcat_server;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }
[roót@localhost~]#/usr/local/nginx/sbin/nginx -t

命令解释

upstream 指令用于定义一组服务器,这些服务器将作为负载均衡池,Nginx 会根据负载均衡算法将请求分发到这些服务器上。在这个例子中,定义了一个名为 tomcat_server 的上游服务器组,包含两台服务器 192.168.192.111:8080 和 192.168.192.112:8080,它们的权重都是 1。

将所有以 .jsp 结尾的请求代理到 tomcat_server 上游服务器组,实现了对 JSP 页面的负载均衡。

测试 Nginx 配置文件是否正确

配置完成之后重启

nginx有多个进程记得一并杀死

[root@localhost ~]# netstat -nultp | grep nginx

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 57513/nginx: master

[root@localhost ~]# kill -9 57513

[root@localhost ~]# kill -9 57514

[root@localhost ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

查看进程

测试负载均衡效果

不断刷新浏览器测试,可以看到由于权重相同,页面会反复在以下两个页面来回切换第一次访问,出现test1的测试页面,刷新后,第二次访问,出现 1est2 的试页面,。这说明负载均衡群集搭建成功,已经可以在两个Tomcat server站点进行切换

再次访问测试

访问jsp的文件时 给予回复的是Tomcat服务器 并且两个服务器来回切换

标签: #软件开发 1171 #JAVA 991 #新手必读 21
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.