tomcat是Apache软件基金会的Jakarta项目中的核心项目,最新的Servlet和JSP规范能够在Tomcat中很好的表现。作为一个免费的开放源代码的Web应用服务器,属于轻量级的应用服务器,在中小型系统和并发量不是很大的场景下被广泛使用,是开发和调试JSP代码的首选。实际上而言,tomcat是Apache服务器的拓展,但是可以独立运行,tomcat可以独立的去处理html和jsp页面
在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。
在现今的互联网架构中会话保持越来越重要,但是会话的保持却在一定程度上依赖于提供服务的服务器上,随着并发量的不断提升,服务器最终会由于负载过高而宕机,因此引入了负载均衡机制,但是负载均衡的调度会使得同一用户的请求被调度到不同的主机之上,会严重的影响到session的保存
操作系统:CentOS7.6
nginx IP:192.168.8.134
tomcat1 IP:192.168.8.160
tomcat2 IP:192.168.8.161
清空防火墙规则
iptables -F
iptables -X
临时设置关闭selinux
setenforce 0
安装jdk,centos7的源默认最高支持jdk1.8
yum -y install java-1.8.0-openjdk-devel
安装nginx,nginx在epel源,因此未安装epel源的话要先安装epel源
[root@nginx ~]#yum -y instll nginx
修改nginx配置文件
[root@nginx ~]#vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
upstream web {
#使用ip_hash算法保持
hash $remote_addr consistent;
server 192.168.8.160:8080;
server 192.168.8.161:8080;
}
server {
listen 80 default_server;
index index.jsp;
location / {
proxy_pass http://web/;
}
}
检查语法并启动nginx
[root@nginx ~]#nginx -t
[root@nginx ~]#systemctl start nginx
安装tomcat以及对应的其他管理工具
[root@tomcat1 ~]#yum -y install tomcat tomcat-lib tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp
创建相关目录
[root@tomcat1 ~]#mkdir -pv /data/app/{WEB-INF,META-INF,classes,lib}
编辑主页文件
[root@tomcat1 ~]#vim /data/app/index.jsp
<%@ page language="java" %>
TomcatA
TomcatA
table align="centre" border="1">
Session ID
<% session.setAttribute("www.test.com","www.test.com"); %>
<%= session.getId() %>
Created on
<%= session.getCreationTime() %>
修改server.xml配置文件,在host中增加一个context做测试
[root@tomcat1 ~]#vim /etc/tomcat/server.xml
修改tomcat-users增加如下几行配置
[root@tomcat1 ~]#vim /etc/tomcat/tomcat-users.xml
创建必要的目录
[root@tomcat2 ~]#mkdir /data
把tomcat1主机配置文件传输给tomcat2
[root@tomcat1 ~]#scp /etc/tomcat/server.xml 192.168.8.161:/etc/tomcat/server.xml
[root@tomcat1 ~]#scp /etc/tomcat/tomcat-users.xml 192.168.8.161:/etc/tomcat/tomcat-users.xml
编辑主页文件
[root@tomcat2 ~]#vim /data/app1/index.jsp
<%@ page language="java" %>
TomcatB
TomcatB
table align="centre" border="1">
Session ID
<% session.setAttribute("www.test.com","www.test.com"); %>
<%= session.getId() %>
Created on
<%= session.getCreationTime() %>
在tomcat2上同样创建此目录
[root@tomcat2 ~]#mkdir /data
把tomcat1配置文件拷贝到tomcat2
[root@tomcat1 ~]#scp -r /data/app/ 192.168.8.161:/data/
[root@tomcat1 ~]#scp /etc/tomcat/server.xml 192.168.8.161:/etc/tomcat/server.xml
[root@tomcat1 ~]#scp /etc/tomcat/tomcat-users.xml 192.168.8.161:/etc/tomcat/tomcat-users.xml
[root@tomcat1 ~]#systemctl start tomcat
[root@tomcat1 ~]#systemctl enable tomcat
[root@tomcat2 ~]#systemctl start tomcat
[root@tomcat2 ~]#systemctl enable tomcat
访问测试,来自客户端的同一个IP始终发往一个后端服务器