当前位置: 首页 > news >正文

基于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

 

  1. <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为例

  1. #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热点。 略看了一下&#xff0c;感觉太复杂&#xff0c;要配置的东西太多&#xff0c;因此在这里写出一种更简洁的方法。 要集群tomcat主要是解决SESSION共享的问题&#xff0c;因此我利用memcac…...

ESIM实战文本匹配

引言 今天我们来实现ESIM文本匹配&#xff0c;这是一个典型的交互型文本匹配方式&#xff0c;也是近期第一个测试集准确率超过80%的模型。 我们来看下是如何实现的。 模型架构 我们主要实现左边的ESIM网络。 从下往上看&#xff0c;分别是 输入编码层(Input Ecoding) 对前…...

基于虚拟仿真技术的汽车燃油泵控制

在当前激烈的竞争环境下&#xff0c;汽车行业正在加速产业和技术更迭&#xff0c;整车厂对大型ECU嵌入式控制系统和软件的需求迫在眉睫。 然而&#xff0c;复杂而庞大的汽车系统往往由多个物理系统组成&#xff0c;系统所对应的模型都需要在不同的领域实现&#xff1a;发动机、…...

angular:HtmlElement的子节点有Shadow dom时奇怪的现象

描述&#xff1a; 这样写时&#xff0c;会自动跳过shadow dom节点的遍历 const cloneElement this.contentElement.cloneNode(true) as HTMLElement; for(let childNodeIndex 0; childNodeIndex < cloneElement.childNodes.length; childNodeIndex) {element.appendChild…...

栈与队列--删除字符串中的所有相邻重复项

给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#xff0c;直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例&#xff1a; 输入&#x…...

使用SSH地址拉取远程仓库代码报下面的错误

说明&#xff1a;配置了SSH秘钥后&#xff0c;使用SSH地址克隆代码&#xff0c;依旧无法拉取代码&#xff0c;提示下面这个信息。 Their offer&#xff1a;ssh-rsa&#xff0c;ssh-dss fatal&#xff1a;Could not read from remote repository. Please make sure you have the…...

easycms v5.5 分析 | Bugku S3 AWD排位赛

前言 这个awd打的悲&#xff0c;后台默认用户名密码为admin:admin&#xff0c;但是几乎所有人都改了 而且一进去看到这个cms就有点懵逼&#xff0c;都不知道这个cms是干嘛的&#xff08;没用过相似的cms&#xff09; 虽然网上找出了很多相关的漏洞&#xff0c;但是不知道为什…...

成都营运《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作

成都营运《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作...

创邻科技Galaxybase助力SPG推动知识图谱应用落地

1. 知识图谱实践应用&#xff1a;从理论到落地的全景视角 知识图谱&#xff0c;作为一种先进的数据模型和信息表示策略&#xff0c;极大地提升了信息检索与分析的能力。该模型利用图结构&#xff0c;将不同领域、层次和类别的信息有机整合&#xff0c;令复杂的数据关系变得清晰…...

《TCP/IP网络编程》阅读笔记--域名及网络地址

目录 1--域名系统 2--域名与 IP 地址的转换 2-1--利用域名来获取 IP 地址 2-2--利用 IP 地址获取域名 3--代码实例 3-1--gethostbyname() 3-2--gethostbyaddr() 1--域名系统 域名系统&#xff08;Domain Name System&#xff0c;DNS&#xff09;是对 IP 地址和域名进行相…...

我的C#基础

using System; namespace HelloWorldApplication }TOC 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。 为帮助您在CSDN创作的文章获得更多曝光和关注&#xff0c;我们为您提供了专属福利&#xff1a; 已注册且未在CSDN平台发布过…...

【UnityShaderLab实现“Billboard“始终面向相机_播放序列图的效果_案例分享(内附源码)】

"Billboard"始终面向相机 Shader "billboard" {Properties{_MainTex ("Main Tex", 2D) = "white" {}_Color (...

Ceph入门到精通-S3 基准测试工具warp使用入门

S3 基准测试工具。 下载 下载适用于各种平台的二进制版本。 配置 可以使用命令行参数或环境变量配置 Warp。 可以使用 、 在命令行上指定要使用的 S3 服务器&#xff0c;也可以选择指定 TLS 和自定义区域。--host--access-key--secret-key--tls--region 也可以使用 、、 和…...

Docker--未完结

一.Docker是干什么的 在没亲自使用过之前&#xff0c;再多的术语也仅仅是抽象&#xff0c;只有写的人或者使用过的人能看懂。 所以&#xff0c;作为新手来说&#xff0c;只要知道Docker是用于部署项目就够了&#xff0c;下面展示如何用Docker部署项目及Docker常用命令。 二、…...

string的使用和模拟实现

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; C&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大…...

基础算法---区间合并

直接上题目,不废话! 题目 给定 n 个区间 [l,r]&#xff0c;要求合并所有有交集的区间。 注意如果在端点处相交&#xff0c;也算有交集。 输出合并完成后的区间个数。 例如&#xff1a;[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 文件&#xff0c;内容如下&#xff1a; 创建服务容器的方法&#xff0c;可以根据自己的情况选择&#xff1a; 1、以下示例为宿主机没有安装 node 环境的写法&#xff1b; 2、先在本地构建包含 node 和 express 的基础镜像&#xff0…...

商城系统开发,如何确保用户数据的安全性?

确保用户数据的安全性是商城系统开发中至关重要的一项任务。随着数字化时代的到来&#xff0c;用户的个人信息和交易数据已成为黑客和不法分子的重要目标&#xff0c;因此保护用户数据的安全性对于商城系统的成功运营至关重要。在开发商城系统时&#xff0c;以下几个方面是确保…...

黑客必备工具Kali Linux,安装与使用教程全包含,从入门到精通,全网最详细全面的Kali Linux教程

Kali Linux是一个高级渗透测试和安全审计Linux发行版&#xff0c;目前可以说是网络安全人员的专用系统。 Kali Linux功能非常强大&#xff0c;能够进行信息取证、渗透测试、攻击WPA / WPA2保护的无线网络、离线破解哈希密码、将android、Java、C编写的程序反编译成代码等等&am…...

Qt QFile与QTextStream高效文本处理实战指南

1. Qt文件处理基础与QFile核心用法 在Qt开发中&#xff0c;文件操作是每个开发者必须掌握的基础技能。无论是处理配置文件、记录日志还是数据持久化&#xff0c;都离不开对文件的读写操作。QFile作为Qt框架中专门用于文件操作的类&#xff0c;提供了跨平台的文件处理能力&…...

ColorControl开源显示调校工具:从新手到专家的HDR优化之路

ColorControl开源显示调校工具&#xff1a;从新手到专家的HDR优化之路 【免费下载链接】ColorControl Easily change NVIDIA display settings and/or control LG TVs 项目地址: https://gitcode.com/gh_mirrors/co/ColorControl 在数字显示技术快速发展的今天&#xff…...

【AI】-----向量数据库核心应用场景

向量数据库核心应用场景 1. 大模型 / RAG 知识库&#xff08;最主流&#xff09; 企业内部文档、合同、产品手册语义检索解决大模型幻觉、知识过时问题客服机器人、智能问答、私域知识库 2. 推荐系统 电商&#xff1a;相似商品、猜你喜欢短视频/内容&#xff1a;基于用户兴趣的…...

别再到处找免费AI了!用Cherry Studio+OpenRouter,5分钟搞定DeepSeek-R1和Gemini Pro 2.0

高效获取顶级AI模型的实战指南&#xff1a;Cherry Studio与OpenRouter深度整合方案 在探索前沿AI技术时&#xff0c;许多开发者都面临一个共同困境&#xff1a;如何在预算有限的情况下&#xff0c;稳定使用如DeepSeek-R1和Gemini Pro 2.0这样的尖端大语言模型&#xff1f;市面上…...

MiniCPM-V-2_6代码截图理解:函数逻辑分析+注释生成效果展示

MiniCPM-V-2_6代码截图理解&#xff1a;函数逻辑分析注释生成效果展示 1. 引言&#xff1a;当AI能看懂代码截图 你有没有遇到过这样的情况&#xff1a;看到一个复杂的代码截图&#xff0c;想要理解其中的函数逻辑&#xff0c;却需要一行行手动输入代码&#xff1f;或者面对一…...

Retinaface+CurricularFace在网络安全领域的创新应用

RetinafaceCurricularFace在网络安全领域的创新应用 1. 引言 想象一下这样的场景&#xff1a;一家金融机构的服务器机房&#xff0c;只有授权人员才能进入&#xff1b;一个远程办公系统&#xff0c;确保登录者确实是员工本人&#xff1b;一个高安全性的数据平台&#xff0c;每…...

MixText+BERT还能这么玩?手把手复现FPMT论文中的‘概率伪混合’黑科技

解密FPMT论文中的概率伪混合&#xff1a;BERT隐藏层的动态插值艺术 在自然语言处理领域&#xff0c;数据增强一直是提升模型泛化能力的关键技术。传统MixText方法通过线性插值在输入层混合样本&#xff0c;但这种"一刀切"的方式忽视了不同样本对模型训练的差异化价值…...

在Ubuntu 22.04上为RK3588编译带RKmpp和RGA的FFmpeg(保姆级避坑指南)

在Ubuntu 22.04上为RK3588编译带RKmpp和RGA的FFmpeg&#xff08;保姆级避坑指南&#xff09; RK3588作为Rockchip新一代旗舰SoC&#xff0c;其强大的多媒体处理能力吸引了众多开发者。本文将手把手带你完成FFmpeg的完整编译流程&#xff0c;重点解决环境配置、依赖管理、运行时…...

RWKV7-1.5B-g1a开源模型实战:轻量级AI助手在中小企业的落地

RWKV7-1.5B-g1a开源模型实战&#xff1a;轻量级AI助手在中小企业的落地 1. 模型简介 rwkv7-1.5B-g1a 是一个基于 RWKV-7 架构的多语言文本生成模型&#xff0c;专为中小企业设计的轻量级AI助手解决方案。这个1.5B参数的模型在保持较小体积的同时&#xff0c;提供了足够强大的…...

六足机器人如何自己“学会”走路?手把手教你用Q-learning实现自适应步态

六足机器人如何自己“学会”走路&#xff1f;手把手教你用Q-learning实现自适应步态 想象一下&#xff0c;当你把一只六足机器人放在崎岖不平的地面上时&#xff0c;它能够像昆虫一样迅速调整自己的步伐&#xff0c;找到最稳定的行走方式。这种看似简单的行为背后&#xff0c;隐…...