基于nginx的tomcat负载均衡和集群(超简单)
今天看到"基于apache的tomcat负载均衡和集群配置 "这篇文章成为javaEye热点。
略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法。
要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了。
你可以自己写tomcat的扩展来保存SESSION到memcached。
这里推荐使用memcached-session-manager这个开源项目(http://code.google.com/p/memcached-session-manager/ ),下面简称msm。
如何安装nginx、memcached、tomcat这些就不多说了。
先说明一下测试环境:
tomcat1、nginx、memcached安装在192.168.1.11
tomcat2安装在192.168.1.101
下面分步实现基于nginx的tomcat负载均衡和集群配置
一,tomcat集群
1,先下载msm及其依赖包
http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar
http://spymemcached.googlecode.com/files/memcached-2.4.2.jar
http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar
2,将这5个包放到$TOMCAT_HOME/lib目录下
3,修改$TOMCAT_HOME/conf/server.xml
-
<Context docBase="E:/java_codes/TestSession/WebContent" path="" reloadable="true" > <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:localhost:11211" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false" /> </Context>
这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如:
n1:localhost:11211 n2:localhost:11212
sessionBackupTimeout的单位为分钟
E:/java_codes/TestSession/WebContent 替换成你的WEB目录
修改后重启两个TOMCAT即可,这个时候已经解决SESSION的共享问题.
二,配置nginx实现负载均衡
以我的nginx.conf为例
-
#user nobody; worker_processes 1; error_log logs/error.log; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #gzip on; upstream www.docyeah.com { server 192.168.1.11:8080; server 192.168.1.101:8080; } server { listen 80; server_name www.docyeah.com; charset utf-8; location / { root html; index index.html index.htm; proxy_pass http://www.docyeah.com; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 100m; } location ~ ^/(WEB-INF)/ { deny all; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
将www.docyeah.com替换成你的域名
192.168.1.11和192.168.1.101替换成你服务器的IP
OK,已经完成。启动nginx即可。
这是我采用的负载均衡及集群方案,希望大家拍砖.
补充:nginx在配置upstream时,有两个参数:
ip_hash(同一IP一直使用同一台server服务)
weight(server的使用权重,数值越大,nginx分发的请求越多)
通过配合这两个参数,能粗糙地解决session共享的问题。
对于一些不是太依赖session的应用,或者只有用户登录时保存,那么我认为可以用Cookies代替。
即使真的要Session共享,我认为手动写代码保存到Memcached比为Tomcat加插件好,这样能获得更好的可控性。
相关文章:
基于nginx的tomcat负载均衡和集群(超简单)
今天看到"基于apache的tomcat负载均衡和集群配置 "这篇文章成为javaEye热点。 略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法。 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcac…...
ESIM实战文本匹配
引言 今天我们来实现ESIM文本匹配,这是一个典型的交互型文本匹配方式,也是近期第一个测试集准确率超过80%的模型。 我们来看下是如何实现的。 模型架构 我们主要实现左边的ESIM网络。 从下往上看,分别是 输入编码层(Input Ecoding) 对前…...
基于虚拟仿真技术的汽车燃油泵控制
在当前激烈的竞争环境下,汽车行业正在加速产业和技术更迭,整车厂对大型ECU嵌入式控制系统和软件的需求迫在眉睫。 然而,复杂而庞大的汽车系统往往由多个物理系统组成,系统所对应的模型都需要在不同的领域实现:发动机、…...
angular:HtmlElement的子节点有Shadow dom时奇怪的现象
描述: 这样写时,会自动跳过shadow dom节点的遍历 const cloneElement this.contentElement.cloneNode(true) as HTMLElement; for(let childNodeIndex 0; childNodeIndex < cloneElement.childNodes.length; childNodeIndex) {element.appendChild…...
栈与队列--删除字符串中的所有相邻重复项
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入&#x…...
使用SSH地址拉取远程仓库代码报下面的错误
说明:配置了SSH秘钥后,使用SSH地址克隆代码,依旧无法拉取代码,提示下面这个信息。 Their offer:ssh-rsa,ssh-dss fatal:Could not read from remote repository. Please make sure you have the…...
easycms v5.5 分析 | Bugku S3 AWD排位赛
前言 这个awd打的悲,后台默认用户名密码为admin:admin,但是几乎所有人都改了 而且一进去看到这个cms就有点懵逼,都不知道这个cms是干嘛的(没用过相似的cms) 虽然网上找出了很多相关的漏洞,但是不知道为什…...
成都营运《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作
成都营运《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作...
创邻科技Galaxybase助力SPG推动知识图谱应用落地
1. 知识图谱实践应用:从理论到落地的全景视角 知识图谱,作为一种先进的数据模型和信息表示策略,极大地提升了信息检索与分析的能力。该模型利用图结构,将不同领域、层次和类别的信息有机整合,令复杂的数据关系变得清晰…...
《TCP/IP网络编程》阅读笔记--域名及网络地址
目录 1--域名系统 2--域名与 IP 地址的转换 2-1--利用域名来获取 IP 地址 2-2--利用 IP 地址获取域名 3--代码实例 3-1--gethostbyname() 3-2--gethostbyaddr() 1--域名系统 域名系统(Domain Name System,DNS)是对 IP 地址和域名进行相…...
我的C#基础
using System; namespace HelloWorldApplication }TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。 为帮助您在CSDN创作的文章获得更多曝光和关注,我们为您提供了专属福利: 已注册且未在CSDN平台发布过…...
【UnityShaderLab实现“Billboard“始终面向相机_播放序列图的效果_案例分享(内附源码)】
"Billboard"始终面向相机 Shader "billboard" {Properties{_MainTex ("Main Tex", 2D) = "white" {}_Color (...
Ceph入门到精通-S3 基准测试工具warp使用入门
S3 基准测试工具。 下载 下载适用于各种平台的二进制版本。 配置 可以使用命令行参数或环境变量配置 Warp。 可以使用 、 在命令行上指定要使用的 S3 服务器,也可以选择指定 TLS 和自定义区域。--host--access-key--secret-key--tls--region 也可以使用 、、 和…...
Docker--未完结
一.Docker是干什么的 在没亲自使用过之前,再多的术语也仅仅是抽象,只有写的人或者使用过的人能看懂。 所以,作为新手来说,只要知道Docker是用于部署项目就够了,下面展示如何用Docker部署项目及Docker常用命令。 二、…...
string的使用和模拟实现
💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 C👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大…...
基础算法---区间合并
直接上题目,不废话! 题目 给定 n 个区间 [l,r],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3] 和 [2,6] 可以合并为一个区间 [1,6]。 输入格式 第一行包含整数 n。 接下来 n 行&am…...
C++(day4)
思维导图 封装Mystring #include <iostream> #include<cstring>using namespace std;class Mystring{ public://无参构造函数Mystring():size(10){strnew char[size];strcpy(str,"");cout<<"无参构造函数"<<endl;}//有参构造函数…...
docker 部署 node.js(express) 服务
1、在 express 项目根目录下新增 Dockerfile 文件,内容如下: 创建服务容器的方法,可以根据自己的情况选择: 1、以下示例为宿主机没有安装 node 环境的写法; 2、先在本地构建包含 node 和 express 的基础镜像࿰…...
商城系统开发,如何确保用户数据的安全性?
确保用户数据的安全性是商城系统开发中至关重要的一项任务。随着数字化时代的到来,用户的个人信息和交易数据已成为黑客和不法分子的重要目标,因此保护用户数据的安全性对于商城系统的成功运营至关重要。在开发商城系统时,以下几个方面是确保…...
黑客必备工具Kali Linux,安装与使用教程全包含,从入门到精通,全网最详细全面的Kali Linux教程
Kali Linux是一个高级渗透测试和安全审计Linux发行版,目前可以说是网络安全人员的专用系统。 Kali Linux功能非常强大,能够进行信息取证、渗透测试、攻击WPA / WPA2保护的无线网络、离线破解哈希密码、将android、Java、C编写的程序反编译成代码等等&am…...
Qt QFile与QTextStream高效文本处理实战指南
1. Qt文件处理基础与QFile核心用法 在Qt开发中,文件操作是每个开发者必须掌握的基础技能。无论是处理配置文件、记录日志还是数据持久化,都离不开对文件的读写操作。QFile作为Qt框架中专门用于文件操作的类,提供了跨平台的文件处理能力&…...
ColorControl开源显示调校工具:从新手到专家的HDR优化之路
ColorControl开源显示调校工具:从新手到专家的HDR优化之路 【免费下载链接】ColorControl Easily change NVIDIA display settings and/or control LG TVs 项目地址: https://gitcode.com/gh_mirrors/co/ColorControl 在数字显示技术快速发展的今天ÿ…...
【AI】-----向量数据库核心应用场景
向量数据库核心应用场景 1. 大模型 / RAG 知识库(最主流) 企业内部文档、合同、产品手册语义检索解决大模型幻觉、知识过时问题客服机器人、智能问答、私域知识库 2. 推荐系统 电商:相似商品、猜你喜欢短视频/内容:基于用户兴趣的…...
别再到处找免费AI了!用Cherry Studio+OpenRouter,5分钟搞定DeepSeek-R1和Gemini Pro 2.0
高效获取顶级AI模型的实战指南:Cherry Studio与OpenRouter深度整合方案 在探索前沿AI技术时,许多开发者都面临一个共同困境:如何在预算有限的情况下,稳定使用如DeepSeek-R1和Gemini Pro 2.0这样的尖端大语言模型?市面上…...
MiniCPM-V-2_6代码截图理解:函数逻辑分析+注释生成效果展示
MiniCPM-V-2_6代码截图理解:函数逻辑分析注释生成效果展示 1. 引言:当AI能看懂代码截图 你有没有遇到过这样的情况:看到一个复杂的代码截图,想要理解其中的函数逻辑,却需要一行行手动输入代码?或者面对一…...
Retinaface+CurricularFace在网络安全领域的创新应用
RetinafaceCurricularFace在网络安全领域的创新应用 1. 引言 想象一下这样的场景:一家金融机构的服务器机房,只有授权人员才能进入;一个远程办公系统,确保登录者确实是员工本人;一个高安全性的数据平台,每…...
MixText+BERT还能这么玩?手把手复现FPMT论文中的‘概率伪混合’黑科技
解密FPMT论文中的概率伪混合:BERT隐藏层的动态插值艺术 在自然语言处理领域,数据增强一直是提升模型泛化能力的关键技术。传统MixText方法通过线性插值在输入层混合样本,但这种"一刀切"的方式忽视了不同样本对模型训练的差异化价值…...
在Ubuntu 22.04上为RK3588编译带RKmpp和RGA的FFmpeg(保姆级避坑指南)
在Ubuntu 22.04上为RK3588编译带RKmpp和RGA的FFmpeg(保姆级避坑指南) RK3588作为Rockchip新一代旗舰SoC,其强大的多媒体处理能力吸引了众多开发者。本文将手把手带你完成FFmpeg的完整编译流程,重点解决环境配置、依赖管理、运行时…...
RWKV7-1.5B-g1a开源模型实战:轻量级AI助手在中小企业的落地
RWKV7-1.5B-g1a开源模型实战:轻量级AI助手在中小企业的落地 1. 模型简介 rwkv7-1.5B-g1a 是一个基于 RWKV-7 架构的多语言文本生成模型,专为中小企业设计的轻量级AI助手解决方案。这个1.5B参数的模型在保持较小体积的同时,提供了足够强大的…...
六足机器人如何自己“学会”走路?手把手教你用Q-learning实现自适应步态
六足机器人如何自己“学会”走路?手把手教你用Q-learning实现自适应步态 想象一下,当你把一只六足机器人放在崎岖不平的地面上时,它能够像昆虫一样迅速调整自己的步伐,找到最稳定的行走方式。这种看似简单的行为背后,隐…...
