LNMP架构之memcache在tomcat中实现负载均衡与交叉存储

文章目录

    • 1.nginx+tomcat+jdk实现动态页面的访问以及负载均衡
        • 1.1jdk的安装配置
        • 1.2tomcat的安装配置
        • 1.3nginx的配置
        • 1.4测试
    • 2.cookie和session以及交叉存储的介绍
    • 3.ngixn+tomcat+memcache实现session交叉存储
        • 3.1nginx实现负载均衡+粘滞
        • 3.2memcache实现session交叉存储

1.nginx+tomcat+jdk实现动态页面的访问以及负载均衡

1.1jdk的安装配置

JDK(Java Development Kit)是整个Java核心,包括Java运行环境、Java工具和Java基础类库。JDK作为JAVA开发的环境,不管做JAVA开发还是做安卓开发,都必须在电脑上安装JDK。

在server3&4上安装jdk:
yum install jdk-8u121-linux-x64.rpm

1.2tomcat的安装配置

Tomcat服务器是一个免费的开发源代码的WEB应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。其主要的应用场景是解析动态程序代码(Java ) 。JSP程序可以处理Tomcat界面。

在server3&4上安装配置:

1.解压tomcat到指定路径
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local

2.做tomcat的软链接
ln -s /usr/local/apache-tomcat-7.0.37 /usr/local/tomcat

3.启动tomcat,检查日志
cd /usr/local/tomcat/bin
./startup.sh

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第1张图片

1.3nginx的配置

在server1上:
cd /usr/local/openresty/nginx/conf
vim nginx.conf
./nginx
./nginx -t
./nginx -s reload

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第2张图片

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第3张图片
LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第4张图片

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第5张图片

1.4测试

在server3&4上:
vim /usr/local/tomcat/webapps/ROOT/test.jsp

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第6张图片
LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第7张图片

访问192.168.43.33:8080和访问192.168.43.44:8080	#查看到tomcat默认页面

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第8张图片

访问192.168.43.11/tets.jsp #看到server3&4的测试页,每刷新一次交换一下(轮询)

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第9张图片
LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第10张图片

2.cookie和session以及交叉存储的介绍

cookie:

在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据( cookie )给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小的数据。

session:

session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

cookie和session的结合使用:

web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:

  • 存储在服务端:通过cookie存储一个session_ id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session id,下次再次请求的时候,会把该session_ id携带上来,服务器根据session_ id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。

  • 将session数据加密,然后存储在cookie中。这种专业术语叫做client side
    session。flask采用的就是这种方式,但是也可以替换成其他形式。

实现交叉存储:

为了对数据的保存更加牢靠,我们选择交叉存放session的方法,即将访问tomcat1上的数据存放在memcache2中,将访问tomcat2上的数据存放在memcache1中,这样存放,当某个tomcat服务断了之后,访问它的客户session并不会消失,而是存放在了对立的memcache,如果存放session的memcache坏了,那么它的数据会立即切换到另一个memcached中。

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第11张图片

3.ngixn+tomcat+memcache实现session交叉存储

3.1nginx实现负载均衡+粘滞

当我们只开启一个tomcat时,产生的数据会保存到本地,但是当开启两个tomcat时,由于在负载均衡状态,受到nginx的调度,server3端提交数据后直接跳到了server4,与之前的建立的session断开了,再次回来数据就不存在了。
为了解决这个问题,我们需要重新编译,添加sticky模块。sticky粘值能让同一个服务器的请求放到同一个后端上。

在server1上对openresty下的nginx重新编译,增加sticky模块:
yum install unzip
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第12张图片

对nginx配置粘滞,避免请求来回跳,信息丢失
vim /usr/local/openresty/conf/nginx.conf
nginx -t
nginx -s reload

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第13张图片

cd /usr/local/openresty/nginx/sbin/
mv nginx nginx.old
cd openresty-1.17.8.2/build/nginx-1.17.8/objs/
cp nginx /usr/local/openresty/nginx/sbin/

./nginx.old -s stop
./nginx -t
cd /usr/local/openresty/nginx/conf
vim nginx.conf  	##加sticky
./nginx -s reload

测试:
粘滞:使用户页面不发生跳转
LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第14张图片

3.2memcache实现session交叉存储

如果server3的tomcat挂掉,那么server3上的数据依然会丢失,因此我们需要memcache的加入实现session交叉存放,即将访问tomcat3上的数据存放在memcache4中,将访问tomcat4上的数据存放在memcache3中。

在server3&4中配置session管理器:

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第15张图片

vim context.xml

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第16张图片

./shutdown.sh
./startup.sh

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第17张图片

在sever3&4中启动memcache:
systemctl start memcached

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第18张图片

测试:
telnet localhost 11211

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第19张图片
LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第20张图片

关闭server3中的tomcat:

在这里插入图片描述

访问192.168.43.11/test.jsp,服务切换到server4上:

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第21张图片
cat /usr/local/tomcat/logs/catalina.out

LNMP架构之memcache在tomcat中实现负载均衡与交叉存储_第22张图片

你可能感兴趣的:(LNMP&mysql,nginx)