tomcat的负载均衡和会话保持
写你的想写的东西,写在tomcat的默认发布目录中
这里写了一个jsp的文件
访问成功
可以用nginx实现反向代理
tomcat负载均衡实现:
这里使用的算法是根据cookie值进行哈希,根据ip地址哈希会有问题.如果是同一台主机再怎么访问都是同一个ip。
tomcat的session会话保持
当负载均衡的时候,其中一台tomcat万一出现下线的情况,会负载到其他tomcat上,这时候会话就断了,所以我们要实现会话保持。
用memcached来实现会话保持
在tomcat中安装memcached
yum install memcached -y
vim /etc/sysconfig/memcached
OPTIONS="-l 0.0.0.0,::1"
编辑配置文件,把这个改成0.0.0.0,因为需要tomcat去连接
然后启动服务查看端口开启了没
五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
set
add
replace
get
delete
session 共享服务器
msm(memcached session manager)提供将Tomcat的session保持到memcached可以实现高可用。
项目早期托管在google code,目前在Github
github网站链接:
https://github.com/magro/memcached-session-manager
https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
将spymemcached.jar、memcached-session-manage、kyro相关的jar文件都放到Tomcat的lib目录
中,这个目录是 $CATALINA_HOME/lib/ ,对应本次安装就是/usr/local/tomcat/lib。
t1和m1部署可以在一台主机上,t2和m2部署也可以在同一台。
当新用户发请求到Tomcat1时, Tomcat1生成session返回给用户的同时,也会同时发给memcached2备
份。即Tomcat1 session为主session,memcached2 session为备用session,使用memcached相当于
备份了一份Session
如果Tomcat1发现memcached2 失败,无法备份Session到memcached2,则将Sessoin备份存放在
memcached1中
修改tomcat配置
vim /usr/local/tomcat/conf/context.xml
另一台也是一样,改一下failoverNodes改成另一台,交叉存储
修改nginx配置
测试:
1.在两台tomcat都开启的情况下:
http://lee.timinglee.org/test.jsp
2.在n1被停止后继续提交信息看是否可以读取到之前的会话信息