百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Nginx+Tomcat集群实现负载均衡(windows版)

off999 2025-01-01 22:16 24 浏览 0 评论

我们这里做tomcat集群就需要考虑到session共享问题。

在集群下实现session统一有以下几种解决方案:

1、请求精确定位:session sticky,例如基于访问ip的hash策略,即当前用户的请求都集中定位到一台服务器中,这样单台服务器保存了用户的session登录信息,如果宕机,则等同于单点部署,会丢失,会话不复制。

2、session复制共享:session replication,如tomcat自带session共享,主要是指集群环境下,多台应用服务器之间同步session,使session保持一致,对外透明。 如果其中一台服务器发生故障,根据负载均衡的原理,调度器会遍历寻找可用节点,分发请求,由于session已同步,故能保证用户的session信息不会丢失,会话复制,。

此方案的不足之处:

必须在同一种中间件之间完成(如:tomcat-tomcat之间).

session复制带来的性能损失会快速增加.特别是当session中保存了较大的对象,而且对象变化较快时, 性能下降更加显著,会消耗系统性能。这种特性使得web应用的水平扩展受到了限制。

Session内容通过广播同步给成员,会造成网络流量瓶颈,即便是内网瓶颈。在大并发下表现并不好

3、基于cache DB缓存的session共享

即使用cacheDB存取session信息,应用服务器接受新请求将session信息保存在cache DB中,当应用服务器发生故障时,调度器会遍历寻找可用节点,分发请求,当应用服务器发现session不在本机内存时,则去cacheDB中查找,如果找到则复制到本机,这样实现session共享和高可用。

我们这里是基于Tomcat自带的session复制共享!

1、准备Tomcat集群

去 [tomcat官网](https://tomcat.apache.org/) 下载对应tomcat。

将下载下来的压缩包解压缩到对应文件夹中,因为我们要集群,所以这里最少复制两个tomcat。我这里准备了两个tomcat,8081端口和9000端口。端口自定义即可,但不能重复。tomcat端口修改这里不作赘述。

启动tomcat,并访问点击 Clustering/Session Replication HOW-TO

找到这段内容,复制 同时打开文件 tomcat1路径\conf\server.xml ,找到

<Engine name="Catalina" defaultHost="localhost">

这一行,把刚刚复制的内容直接粘贴在这标签里面,如图所示:

同理,将另一个tomcat做同样修改。

官方的文档中还有这样一句话,Make sure your web.xml has the <distributable/> element。

这句话的意思就是需要在你web项目的web.xml中包含 <distributable/>。作用就是开启session复制,在服务启动后就会自动监听并辅助session。

找一个web项目放到两个tomcat的webapps下面。先启动修改web.xml,再关闭tomcat;

到这里tomcat的webapps/web.xml 修改。再分别启动两台tomcat

2、nginx配置负载均衡

下载nginx并安装。
找到nginx安装目录进入到conf文件夹下。打开 nginx.conf 文件,修改配置如下:

user root;

worker_processes  4;
events {
    # 最大并发数
    worker_connections  1024;
}
http{
    # 待选服务器列表
    upstream myproject{
        # ip_hash指令,将同一用户引入同一服务器。
        # ip_hash;
        server 127.0.0.1:9000 weight=1;
        server 127.0.0.1:8081 weight=1;
        }

    server{
	
                # 监听端口
                listen 8888;
				
                # 根目录下
                location /portal-web/ {
                    # 选择哪个服务器列表
                    proxy_pass http://myproject/portal-web/;
					proxy_redirect default;
					#proxy_set_header Host $host;
					#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }

            }
}

这里是配置了负载均衡,以方便验证我们的session一致问题。

3、验证session一致性

打开两台项目地址
8081 :未登录查看session

9000:未登录查看session

此时我们登录其中任意一台,我这里登录8081 这台

直接刷新9000这台,发现也登录上了。这时我们基于tomcat的session一致性就完成了。

但是我们上面安装的nginx还没用到,要知道实际生产环境只有一个地址,不可能让用户去访问两个地址。所以nginx主要是做了一个代理作用。

访问nginx地址,发现也登录上来了。大功告成!!!

相关推荐

阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?

TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...

高流量大并发Linux TCP性能调优_linux 高并发网络编程

其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...

性能测试100集(12)性能指标资源使用率

在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...

Linux 服务器常见的性能调优_linux高性能服务端编程

一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...

Nginx性能优化实战:手把手教你提升10倍性能!

关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...

高并发场景下,Spring Cloud Gateway如何抗住百万QPS?

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...

Kubernetes 高并发处理实战(可落地案例 + 源码)

目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...

高并发场景下,Nginx如何扛住千万级请求?

Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...

Spring Boot+Vue全栈开发实战,中文版高清PDF资源

SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...

Docker-基础操作_docker基础实战教程二

一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...

你有空吗?跟我一起搭个服务器好不好?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...

部署你自己的 SaaS_saas如何部署

部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...

Docker Compose_dockercompose安装

DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...

京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统

前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...

Kubernetes (k8s) 入门学习指南_k8s kubeproxy

Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...

取消回复欢迎 发表评论: