生产环境Session解决方案、Session服务器之Redis

 

目录

一、服务器配置

二、安装nginx

三、安装配置Tomcat:

 四、配置session

Session服务器之Redis

Redis与Memcached的区别

安装部署redis


一、服务器配置

IP地址

主机名

软件包列表

192.168.100.131

huyang1

nginx

192.168.100.133

huyang3

JDK Tomcat  

192.168.100.135

huyang5

JDK Tomcat

二、安装nginx

配置主机名:
[root@localhost ~]# hostname nginx
[root@localhost ~]# bash
安装nginx软件包并修改:
[root@nginx ~]# yum -y install pcre-devel zlib-devel openssl-devel 
[root@nginx ~]# useradd -s /sbin/nologin -M nginx
[root@nginx ~]# tar xf nginx-1.15.9.tar.gz -C /usr/src/
[root@nginx ~]# cd /usr/src/nginx-1.15.9/
[root@nginx ~]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install

--prefix=/usr/local/nginx 		#指定安装目录
--user=nginx --group=nginx 		#指定运行的用户和组
--with-file-aio 				#启用文件修改支持
--with-http_stub_status_module #启用状态统计
--with-http_ssl_module 		#启用ssl模块
--with-http_flv_module 		#启用flv模块,提供寻求内存使用基于时间的偏移量文件
--with-http_gzip_static_module	#启用gzip静态压缩
 
[root@nginx ~]# ln -s /usr/local/nginx/sbin/nginx  /sbin/
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
34     upstream tomcat_pool {
 35         server 192.168.100.133:8080 weight=1 max_fails=1 fail_timeout=10s;
 36         server 192.168.100.135:8080 weight=1 max_fails=1 fail_timeout=10s;
 37     }
 38 
 39     server {
 40         listen       80;
 41         server_name  localhost;
 42         charset utf-8;
 43         
 44         location / {
 45             root   html;
 46             index  index.html index.htm;
 47             proxy_pass http://tomcat_pool;
 48         }   
[root@nginx ~]# nginx

三、安装配置Tomcat:

配置主机名:
[root@localhost ~]# hostname node1  另外一台机器配置为node2
[root@localhost ~]# bash
安装配置Tomcat
解压apache-tomcat-7.0.54.tar.gz 包
[root@tomcat1 ~]# tar xf apache-tomcat-7.0.54.tar.gz 

解压后生成apache-tomcat-7.0.54文件夹,将该文件夹移动到/usr/local下,并改名为tomcat
[root@tomcat1 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat

启动Tomcat
[root@tomcat1 ~]# /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:      /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

Tomcat 默认运行在8080端口
[root@tomcat1 ~]# netstat -lnpt | grep java
tcp        0      0 :::8080                     :::*                        LISTEN      3318/java   

浏览器访问测试 192.168.100.133:8080 和 192.168.100.135:8080

均呈现下列图形!

 四、配置session

建立session.jsp的测试页面
[root@node1 ~]# vim /usr/local/tomcat/webapps/ROOT/session.jsp
Session ID:<%= session.getId() %><BR>
SessionPort:<%= request.getServerPort() %>
<% out.println("This tomcat server 192.168.100.133");%>

[root@node2 ~]# vim /usr/local/tomcat/webapps/ROOT/session.jsp
Session ID:<%= session.getId() %><BR>
SessionPort:<%= request.getServerPort() %>
<% out.println("This tomcat server 192.168.100.135");%>		
Session绑定:
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
34     upstream tomcat_pool {
35         ip_hash;
 36         server 192.168.100.133:8080 weight=1 max_fails=1 fail_timeout=10s;
 37         server 192.168.100.135:8080 weight=1 max_fails=1 fail_timeout=10s;
 38     }
[root@nginx ~]# killall -HUP nginx

 浏览器访问测试 192.168.100.131/session.jsp

 刷新,id和IP地址都会变化

Session服务器之Redis

Redis与Memcached的区别

  1. 内存利用率:使用简单的key-value(键值对)存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。
  2. CPU性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached还是稍有逊色。
  3. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  4. Redis支持数据的备份,即master-slave模式的数据备份。
  5. Redis不仅仅支持简单的key-Value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

安装部署redis

[root@huyang5 ~]# tar xf redis-6.2.12.tar.gz -C /usr/src/

[root@huyang5 ~]# cd /usr/src/redis-6.2.12/

[root@huyang5 redis-6.2.12]# make

[root@huyang5 redis-6.2.12]# mkdir -p /usr/local/redis/{bin,etc,var}

[root@huyang5 redis-6.2.12]# cd src/

[root@huyang5 src]# cp redis-benchmark  redis-check-aof redis-cli redis-server  /usr/local/redis/bin/

[root@huyang5 redis-6.2.12]# cp ../redis.conf  /usr/local/redis/etc

[root@huyang5 redis-6.2.12]# cp ../sentinel.conf  /usr/local/redis/etc

[root@huyang5 redis-6.2.12]# vim /usr/local/redis/etc/redis.conf //修改配置文件

[root@huyang5 redis-6.2.12]# killall -9 redis-server

启动redis:

[root@huyang5 redis-6.2.12# /usr/local/redis/bin/redis-server  &&   /usr/local/redis/etc/redis.conf

[root@huyang5 redis-6.2.12]# netstat -anpt |grep redis

监控redis共享session:

[root@huyang5 redis-6.2.12]# /usr/local/redis/bin/redis-cli -p 6379  monitor

[root@huyang5 redis-6.2.12]# cp tomcat-redis-session-manage-tomcat7.jar tomcat-juli.jar commons-logging-1.1.3.jar commons-pool2-2.2.jar jedis-2.5.2.jar /usr/local/tomcat/lib

修改context.xml文件以支持调用redis

[root@huyang5/3 redis-6.2.12]# vim /usr/local/tomcat/conf/context.xml

[root@huyang5 ~]# /usr/local/tomcat/bin/shutdown.sh

[root@huyang5 ~]# /usr/local/tomcat/bin/startup.sh

[root@huyang5 redis-session]# netstat -anpt | grep :6379

[root@huyang3 ~]# netstat -anpt | grep :6379

浏览器访问测试 http://192.168.100.131/session.jsp 

刷新一次:这样就锁定在了135的session id

同理也可以反过来锁定133的session id

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/48871.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[STL]list使用介绍

[STL]list使用 注&#xff1a;本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop…

位图和布隆过滤器+哈希切分思想

文章目录 一.位图(bitset)底层实现: 二.布隆过滤器(bloomFilter)底层实现: 三.哈希切分思想 一.位图(bitset) 位图是一种以一个比特位为数据记录单元的哈希表 ,以无符号整数为key值,采用直接定址法(不存在哈希冲突的问题),其哈希映射函数为 f ( k e y ) k e y ( k e y 的存在…

快速排序qsort讲解

hello大家好&#xff0c;我是c语言boom家宝&#xff0c;今天为大家分享的博客内容是qsort快速排序&#xff0c;简称快排的一个知识点的讲解。 在讲到快排之前&#xff0c;允许博主先提一嘴冒泡排序。大家在c语言的学习过程中&#xff0c;冒泡排序是必不可少会学习到的一个思想&…

Hudi数据湖技术引领大数据新风口(三)解决spark模块依赖冲突

文章目录 解决spark模块依赖冲突2.2.6 执行编译命令2.2.7 编译成功 下一章 核心概念后记 解决spark模块依赖冲突 修改了Hive版本为3.1.2&#xff0c;其携带的jetty是0.9.3&#xff0c;hudi本身用的0.9.4&#xff0c;存在依赖冲突。 1&#xff09;修改hudi-spark-bundle的pom文…

kafka集群

目录 broker ZooKeeper consumer group&#xff08;消费者组&#xff09; 分区&#xff08;Partitions&#xff09; 副本&#xff08;Replicas&#xff09; 主题&#xff08;Topic&#xff09; 偏移量&#xff08;offset&#xff09; broker 一个kafka进程就是一个broker…

备战秋招 | 笔试强训17

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、假设A为抽象类&#xff0c;下列声明&#xff08;&#xff09;是正确的 A. int fun(A); B. A Obj; C. A fun(int); D. A *p; 2、虚函数可不可以重载为内联&#xff1f; A. 可以 B. 不可以 C. 语法…

uni-app踩坑记

打包h5如何配置域名&#xff1a; 在manifest.json中配置域名 配置完成后无论是测试环境还是正式环境都带上/mobile/&#xff0c;否则会报错404 如何引入调试工具erada: 在默认的index.html中直接引入erada&#xff0c;页面样式会整个错乱&#xff0c;解决方案就是引入官方…

低代码开发平台源码

什么是低代码开发平台&#xff1f; 低代码来源于英文“Low Code&#xff0c;它意指一种快速开发的方式&#xff0c;使用最少的代码、以最快的速度来交付应用程序。通俗的来说&#xff0c;就是所需代码数量低&#xff0c;开发人员门槛低&#xff0c;操作难度低。一般采用简单的图…

学习笔记|大模型优质Prompt开发与应用课(二)|第二节:超高产文本生成机,传媒营销人必备神器

文章目录 01 文字写作技能的革新&#xff0c;各行各业新机遇四大类常见文字工作新闻记者的一天新闻记者的一天–写策划prompt 新闻记者的一天–排采访prompt生成结果prompt生成结果 大模型加持&#xff0c;文字写作我们如何提效营销创作营销创作-使用预置法为不同平台生成文案p…

产品开发八大模块交流︱奇瑞新能源汽车产品开发院院长荣升格

奇瑞新能源汽车股份有限公司研发中心/产品开发院院长荣升格先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;产品开发八大模块交流。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; VUCA时代…

从源码分析Handler面试问题

Handler 老生常谈的问题了&#xff0c;非常建议看一下Handler 的源码。刚入行的时候&#xff0c;大佬们就说 阅读源码 是进步很快的方式。 Handler的基本原理 Handler 的 重要组成部分 Message 消息MessageQueue 消息队列Lopper 负责处理MessageQueue中的消息 消息是如何添加…

用WhatsApp开拓和跟进客户,需要注意这些雷点

我们很多新手小白在利用WhatsApp开拓和维护客户的时候&#xff0c;总是容易犯一些错误&#xff0c;踩到雷点&#xff0c;这不利于客户对企业的印象&#xff0c;不利于增长&#xff0c;下面我们来说一些需要注意的点&#xff1a; 1、专业正确的用语 不管外贸人是跟进哪个国家…

29.Git版本控制工具

1.Git简介 Git是一开源的分布式版本控制系统&#xff0c;提供了存储代码、管理版本历史、分支和合并等功能。 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理&#xff0c;是软件配置管理的核心思想之一。它的主要目的是跟踪和记录软件开发过程…

双重for循环优化

项目中有段代码逻辑是个双重for循环&#xff0c;发现数据量大的时候&#xff0c;直接导致数据接口响应超时&#xff0c;这里记录下不断优化的过程&#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code&#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…

如何利用Requestly提升前端开发与测试的效率

痛点 B站最牛的Python接口自动化测试进阶教程合集&#xff08;真实企业项目实战&#xff09; 前端测试 在进行前端页面开发或者测试的时候&#xff0c;我们会遇到这一类场景&#xff1a; 在开发阶段&#xff0c;前端想通过调用真实的接口返回响应在开发或者生产阶段需要验证前…

Vue 中通用的 css 列表入场动画效果

css 代码 .gradientAnimation {animation-name: gradient;animation-duration: 0.85s;animation-fill-mode: forwards;opacity: 0; }/* 不带前缀的放到最后 */ keyframes gradient {0% {opacity: 0;transform: translate(-100px, 0px);}100% {opacity: 1;transform: translate…

算法38:反转链表

一、需求 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例3&#xff…

MSFCS互相联动

MSF&CS互相联动 1. 前言2. CS联动MSF2.1. 案例测试2.1.1. CS设置联动监听器2.1.2. CS设置联动MSF会话2.1.3. MSF设置监听 3. MSF联动CS3.1. 案例测试3.1.1. MSF生成木马3.1.2. 设置监听3.1.3. CS设置监听3.1.4. MSF转移会话3.1.5. 查看上线 4. 其它 1. 前言 在日常渗透测试…

基于K8s环境·使用ArgoCD部署Jenkins和静态Agent节点

今天是「DevOps云学堂」与你共同进步的第 47天 第⑦期DevOps实战训练营 7月15日已开营 实践环境升级基于K8s和ArgoCD 本文节选自第⑦期DevOps训练营 &#xff0c; 对于训练营的同学实践此文档依赖于基础环境配置文档&#xff0c; 运行K8s集群并配置NFS存储。实际上只要有个K8s集…

VMPWN的入门级别题目详解(二)

实验四 VMPWN4 题目简介 这道题应该算是虚拟机保护的一个变种&#xff0c;是一个解释器类型的程序&#xff0c;何为解释器&#xff1f;解释器是一种计算机程序&#xff0c;用于解释和执行源代码。解释器可以理解源代码中的语法和语义&#xff0c;并将其转换为计算机可以执行的…