一.负载均衡的简单配置
1.下载nginx
2.tomcat*2 配置不同的端口用于正常启动,在jsp中<%= session.getId()%>可以查看jSessionId,
tomcat自带的root目录的应用是session是false的,内置对象没有seesion可以打开
3.配置nginx.conf
upstream myserver{ #nginx代理的路径 可配置权重,长连接等
server 127.0.0.1:8888;
server 127.0.0.1:9999;
}
server {
listen 80;
server_name www.nginxstudy.com; #nginx拦截的访问路径,如果这样写的话要在hosts文件中
# 配置127.0.0.1 www.nginxstudy.com 模拟DNS转换器功能,也可以使用localhost就不用配置了
location / {
proxy_pass http://myserver/1.jsp; #对应上面的upstream后面的myserver两者要一致 1.jsp就是在服务上的一个路径
}
}
4.启动两个tomcat,nginx就可以了,浏览器输入www.nginxstudy.com就可以看到访问两个不同的服务器,但是session没有实现共享.
二.nginx常用的命令
nginx -s quit 停止ngix
nginx -s reload 重新载入nginx(当配置信息发生修改时)
三.nginx实现session共享的方式
1.依靠广播方式来实现的session在不同服务器上的复制
适用场景:
浪费带宽,服务每增加一台,要广播一倍的session,适用较少的服务器情况
配置:
步骤一:修改server.xml文件,最简单的集群配置只需要将节点中注释掉的下面这句取消注释即可:
Xml代码:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
使用这样方法配置的集群会将Session同步到所在网段上的所有配置了集群属性的实例上(此处讲所在网段可能不准确,是使用Membership 的address和port来区分的。tomcat集群的实例如果在Membership配置中有相同的address和port值的tomcat被分到同一个集群里边。他们的session是相互共享的,同一个session的集群被称为一个cluster。可以配置多个cluster,但是cluster和cluster之间的session是不共享的)。也就是说如果该广播地址下的所有Tomcat实例都会共享Session,那么假如有几个互不相关的集群,就可能造成Session复制浪费,所以为了避免浪费就需要对节点多做点设置了,如下:
Xml代码
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
</Channel>
</Cluster>
加了一个Channel,里面包了个Membership,咱们要关注的就是membership的port属性和address属性,不同的集群设置不同的port值或address值,从目前的使用来看,基本上是隔离开了。
步骤二:修改项目的web.xml文件:
web.xml文件的修改很简单:只需要在节点<web-app></web-app>中添加这个节点<distributable/>就可以了。
2.使用Tomcat集群+redis的Session共享配置方法(单点登录)
1.用户登录获取用户名,密码生成token,在redis服务中存储(token,user),并配置数据失效时间
2.用户每次访问都要携带这个token,每次访问会先经过redis校验,通过的话就会在session中存储用户信息,并刷新失效时间
3.用户登出,修改失效时间(redis无效件删除策略惰性删除+定期删除)
四. nginx配置高可用keeplive
配置高可用keeplive(blog推荐顺序)
https://blog.csdn.net/u1012410733/article/details/57078407
https://www.cnblogs.com/youzhibing/p/7327342.html
https://blog.csdn.net/dingsai88/article/details/51015681
五. 配置nginx长短连接的学习
https://blog.csdn.net/dream_flying_bj/article/details/54709549
http://blog.51cto.com/gyj110/2056555