网站首页 > 技术教程 正文
第一部分 环境介绍
部署环境:
Host1:Nginx、Memcached、Tomcat1
Host2:Tomcat2
Tomcat_version:8.5.59
第二部分 Nginx+Tomcat实现负载均衡
1、nginx及tomcat的安装省略
2、nginx负载均衡配置:
http标签中定义tomcat集群:
upstream tomcat_server {
#不用ip_hash
server 101.200.229.38:8080;
server 101.200.162.214:8080;
}
server中设置代理,将请求转发给后端tomcat集群处理:
server {
listen 80;
server_name www.xxx.com;
location / {
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;
}
}
关于nginx负载均衡的策略,有以下几种方式:
2.1 ip_hash:
根据客户端地址,同一个ip地址分配给同一台后端服务器处理,这样可以解决session的问题。但是如果该后端服务器宕掉,则session会失效。
缺点:局域网内的用户使用的是同一个公网IP,这对于ip_hash来说,会被认为是同一个客户端,因此总是会将这个公网ip的请求交给同一个后端服务器来处理,因此起不到负载均衡的作用。
2.2 轮询:
每一个请求,按照时间顺序,逐一分配给后端不同的服务器。
缺点:需要对后端服务器做session共享。
2.3 权重:
每个请求,根据后端服务器的权重值来转发。权重越大,表明该服务器处理能力相对越高。主要用于后端服务器性能不同的情况。
第三部分 利用MSM框架实现session共享
Github项目地址:https://github.com/magro/memcached-session-manager
1、msm框架主要使用缓存(如memcache、redis)来存储session信息,后端服务器都可以从该缓存中读写session。
2、tomcat序列化(Serializable)策略介绍:
序列化是指将对象以字符串形式在网络上传输、存储、读取的过程。
java有以下几种序列化框架:
- 默认java
- kryo-serializer
- javolution-serializer
- xstream-serializer
- flexjson-serializer
每种序列化框架需要的依赖jar包不同,本例使用默认java框架
3、准备需要的jar包:
Github上提供了下载链接:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
本例需要的jar包及版本如下:
memcached-session-manager-tc8-2.3.0.jar
memcached-session-manager-2.3.0.jar
spymemcached-2.12.3.jar
注意:对各jar的版本兼容性要求极高!
将以上jar包放在tomcat/lib/目录下。
4、安装memcached,启动memcached:
/usr/local/memcached/bin/memcached -m 512 -d -u memcache -p 11011 -c 1024
-m表示分配内存大小
-d表示后台运行
-u表示以某一用户运行
-p表示监听的端口号
-c表示接受的连接数
修改tomcat/conf/context.xml配置:
<Context>标签中添加如下内容:
memcache单节点:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.10.0.103:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="auto"
sessionBackupTimeout= "1000"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)#34;
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
/>
memcache多节点:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.10.0.103:11211,n2:10.10.0.103:11611"
sticky="false"
sessionBackupAsync="false"
lockingMode="auto"
sessionBackupTimeout= "1000"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)#34;
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
/>
以上配置后,重启tomcat即可。
附件:session共享所需要的jar包下载地址!
http://note.youdao.com/noteshare?id=557039f704e0282bd34d5609a400b1dd
猜你喜欢
- 2024-10-12 优化体系--tomcat参数优化(内存、线程、压缩、集群、ARP)
- 2024-10-12 Linux-tomcat部署,注意几点安全配置
- 2024-10-12 很全的Tomcat实战-调优方案,提升性能必备
- 2024-10-12 Tomcat配置与优化--架构师必修课(tomcat7优化配置)
- 2024-10-12 详解tomcat7优化配置参数(tomcat性能优化方法)
- 2024-10-12 tomcat,nginx,mysql性能调优与配置
- 2024-10-12 Tomcat服务器配置详解(tomcat服务器的配置)
- 2024-09-25 小计Tomcat的调优思路(tomcat8调优)
- 2024-09-25 Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置
- 2024-09-25 企业十大应用-Tomcat-配置详解(tomcat企业版要收费吗)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)