生产环境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

相关推荐
桂月二二4 小时前
探索前端开发中的 Web Vitals —— 提升用户体验的关键技术
前端·ux
P7进阶路4 小时前
Tomcat异常日志中文乱码怎么解决
java·tomcat·firefox
hunter2062065 小时前
ubuntu向一个pc主机通过web发送数据,pc端通过工具直接查看收到的数据
linux·前端·ubuntu
qzhqbb5 小时前
web服务器 网站部署的架构
服务器·前端·架构
刻刻帝的海角5 小时前
CSS 颜色
前端·css
浪浪山小白兔6 小时前
HTML5 新表单属性详解
前端·html·html5
lee5767 小时前
npm run dev 时直接打开Chrome浏览器
前端·chrome·npm
2401_897579657 小时前
AI赋能Flutter开发:ScriptEcho助你高效构建跨端应用
前端·人工智能·flutter
limit for me7 小时前
react上增加错误边界 当存在错误时 不会显示白屏
前端·react.js·前端框架
浏览器爱好者7 小时前
如何构建一个简单的React应用?
前端·react.js·前端框架