Openrestry与tomcat实现负载均衡及stick解决数据覆盖,session交叉存放

tomcat负载轮询的部署

  • 实验机上配置java的运行环境
  • 下载jdk包并解压并做java的软连接

[root@server1 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr.local/
[root@server1 ~]# cd /usr/local
[root@server1 local]# ln -s jdk1.7.0_79/ java

  • 添加java的环境变量方便调用并测试是否可以使用java命令
    [root@server1 local]# vim /etc/profile
    [root@server1 local]# source /etc/profile
    添加文件如下所示:
    在这里插入图片描述
    测试其是否可以自动补全
    在这里插入图片描述
    负载均衡的实现
主机名服务
172.25.42.1openrestry,tomcat ,memcache
172.25.42.2tomcat ,memcache
  • server1上tomcat配置
    下载tomcat安装包并解压安装设置软链接

    [root@server1 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
    [root@server1 ~]# cd /usr/local/
    [root@server1 local]# ls
    apache-tomcat-7.0.37 bin etc games include jdk1.7.0_79 lib lib64 libexec lnmp openresty sbin share src tomcat
    [root@server1 local]# ln -s apache-tomcat-7.0.37/ tomcat

  • 开启tomcat

    [root@server1 local]# cd tomcat/
    [root@server1 tomcat]# ls
    bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
    [root@server1 tomcat]# cd bin
    [root@server1 bin]# ./startup.sh

查看端口,8080端口为tomcat的默认端口
在这里插入图片描述

  • 编辑openrestry的nginx配置文件并检测重启
    [root@server1 bin]# vim /usr/local/openresty/nginx/conf/nginx.conf
    添加tomcat服务(8080端口)
    在这里插入图片描述
    注释开启的服务(快速缓存的内容)
    在这里插入图片描述

[root@server1 bin]# /usr/local/openresty/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful
[root@server1 bin]# /usr/local/openresty/nginx/sbin/nginx -s reload

检测服务是否出错并重启

  • 在浏览器访问
    在这里插入图片描述
    访问8080端口出现的时图像界面

当访问index.jsp页面时出现的为文字
在这里插入图片描述
[root@server1 ROOT]# vim index.jsp
[root@server1 ROOT]# cat index.jsp
<%=new java.util.Date() %>
[root@server1 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT

再次访问index.jsp
在这里插入图片描述

  • server2上的tomcat配置
  • 將server1的tomcat与java及java的环境变量复制到server2
    [root@server1 local]# scp -r /usr/local/jdk1.7.0_79/ root@172.25.42.2:/usr/local/
    [root@server1 local]# scp -r /usr/local/tomcat root@172.25.42.2:/usr/local/
    [root@server1 local]# scp -r /etc/profile root@172.25.42.2:/etc/profile##

[root@server2 local]# source /etc/profile##加载环境变量
在这里插入图片描述

  • 打开server2上的tomcat并查看端口

[root@server2 bin]# pwd
/usr/local/tomcat/bin
[root@server2 bin]# ./startup.sh
在这里插入图片描述
8080端口正在被/java使用
在这里插入图片描述

  • 实现负载均衡
    在server1的openrestry的nginx添加负载均衡策略
    [root@server1 local]# vim /usr/local/openresty/nginx/conf/nginx.conf

在这里插入图片描述
在这里插入图片描述
检测是否有配置错误并重启
在这里插入图片描述

  • 编写server1与server2测试页
    server1测试页
    在这里插入图片描述server2测试页
    在这里插入图片描述

  • 测试
    在浏览器输入172.25.42.1/index.jsp并不断刷新查看结果,每次刷新后都会访问另一台的发布文件
    在这里插入图片描述

在这里插入图片描述

tomcat中session的实现

  • tomcat中出现数据覆盖的情况
    1.给server1与server2添加新的测试页test.jsp
    在这里插入图片描述
    2.在浏览器中测试
    在这里插入图片描述
    在server1上上传数据westos1
    在这里插入图片描述
    可以看到提交的westos1数据被记录,然后在server2上传数据westos2

在这里插入图片描述
上传westos2后,westos1的数据却被覆盖,只保留了westos2的数据,若我们继续上传数据,上传的新数据会不断覆盖旧的数据,那么如何来解决呢?

  • 解决数据覆盖,将数据上传到同一个后端服务器

  • 解压nginx及nginx的sticky安装包并关闭nginx的日志
    [root@server1 ~]# tar zxf nginx-sticky-module-ng
    [root@server1 ~]# tar zxf nginx-1.16.0.tar.gz
    在这里插入图片描述

在这里插入图片描述

  • 编译安装nginx
    [root@server1 nginx-1.16.0]# ./configure --prefix=/usr/local/lnmp/nginx --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx --add-module=/root/nginx-sticky-module-ng
    [root@server1 nginx-1.16.0]# make && make install
  • 关闭openresty下的nginx并将器配置文件复制到lnmp下的nginx
    [root@server1 nginx-1.16.0]# cd /usr/local/openresty/nginx
    [root@server1 nginx]# ./sbin/nginx -s stop
    在这里插入图片描述
  • 修改配置文件并检查是否有误,无误后开启nginx
    在这里插入图片描述

在这里插入图片描述

[root@server1 conf]# ../sbin/nginx -t
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server1 conf]# ../sbin/nginx
  • 在浏览器输入网址172.25.42.1/test.jsp再次上传数据进行测试
    在这里插入图片描述
    可以看到即使上传了三组数据,之前的数据依旧没有被覆盖,数据都绑定在server1,可以使用。

那么如过server1的服务down掉,我们的数据会怎么样呢?
tomcat中交叉存储相关问题

  • 关闭server1的tomcat后再次访问172.25.42.1/test.jpg来查看页面
  • 清空tomcat的日志方便观察现象
    在这里插入图片描述
    catalina.out为日志的存储文件,所有的信息都存储在该文件内。
    [root@server1 logs]# > catalina.out ##清空该文件

    继续在测试页面上传数据依旧可以保存
  • 关闭server1的tomcat然后在测试页上传数据查看结果
    在这里插入图片描述
    关闭tomcat
    在这里插入图片描述
    在server2上传数据后刷新页面,发现只有新上传的数据,server1的数据全都不见。
    查看server2的tomcat日志查看情况。
    在这里插入图片描述
    server2的日志只有新上传的数据westos5与westos6

那么我么如何来实现在某台服务器关闭后保证其数据不会丢失呢?这可以用交叉存放来实现

  • 交叉存储的实现

  • server2安装memcached并开启
    交叉存储至少要保证其中一台的tomcat开启
    [root@server2 tomcat]# yum install -y memcached
    [root@server2 tomcat]# /etc/init.d/memcached start

  • 获取实现交叉存储相关的安装包并将这些安装包放在server1与server2的/usr/local/tomcat/lib目录下

在这里插入图片描述
这些安装包中除memcached-session-manager-tc6-1.6.3.jar外都放入/usr/local/tomcat/lib中

[kiosk@foundation42 Desktop]$ scp jar/* root@172.25.42.1:/usr/local/tomcat/lib
[kiosk@foundation42 Desktop]$ scp jar/* root@172.25.42.2:/usr/local/tomcat/lib

[root@server2 lib]# rm -fr memcached-session-manager-tc6-1.6.3.jar
[root@server1 lib]# rm -fr memcached-session-manager-tc6-1.6.3.jar

  • 编辑tomcat的配置文件
    [root@server1 lib]# cd /usr/local/tomcat/conf
    [root@server1 conf]# vim context.xml
    添加内容如下所示:

将配置文件发给server2,并将failoverNodes改为n2

[root@server1 conf]# scp context.xml root@172.25.42.2:/usr/local/tomcat/conf
[root@server2 lib]# cd /usr/local/tomcat/conf
[root@server2 conf]# vim context.xml
在这里插入图片描述

  • 重启server1与server2的tomcat

[root@server1 bin]# pwd
/usr/local/tomcat/bin
[root@server1 bin]# ./shutdown.sh ##重启服务,tomcat没有重启,只能关闭后在打开
[root@server1 bin]# ./startup.sh
[root@server2 bin]# ./shutdown.sh
[root@server2 bin]# ./startup.sh
在这里插入图片描述

  • 在浏览器网页上进行测试

在这里插入图片描述可以看到当前存储数据的主机为server2

关闭server2
在这里插入图片描述

在这里插入图片描述
断开server2的tomcat后再次上传数据westos4,这时接收数据的服务器变为了server1,可以看到server2保存的数据依旧在。

  • 查看server1的tomcat日志
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值