redis Session会话共享

redis Session会话共享
redis会话共享:
会话(session /sei/shen):是当前动态网站开发过程中的一个必要功能,用于保留客户对网站的操作状态的记录,从而实现网站的登录、添加购物车等交互式功能

会话的存储方式:
1、本地硬盘存储
2、数据库存储

为什么会需要会话:
http协议自身是无状态协议,是不会记录对网站的操作状态,但后续因为动态网站的出现,为了能够给用户提供便利以及更好服务,从而使用会话的功能,让用户可以在刷新网站后,之前对网站的操作不被丢失

cookie:也是用于保存访问网站的状态信息,与session不同的是,cookie保存在客户端,session保存在服务端,并且session可以存放的内容比cookie要多的多,所以目前已经很少再单用cookie保存状态信息了,通常都是cookie和session联用,session不保存状态信息,cookie只是保存相应的session ID号,来实现状态信息的记录与调用

nginx-tomcat配合redis-session实现会话共享
=nginx-tomcat配合redis-session实现会话共享==
案例环境:
nginx:192.168.40.14
tomcat1:192.168.40.15
tomcat2:192.168.40.16
redis:192.168.40.17

部署环境=
==安装nginx=
yum -y install gcc gcc-c++ pcre-devel zlib-devel make
systemctl stop firewalld
setenforce 0
tar -xf nginx-1.6.0.tar.gz -C /usr/src/
useradd -M -s /sbin/nologin -r nginx
cd /usr/src/nginx-1.6.0
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

=====安装Tomcat=
tar -xf jdk-8u60-linux-x64.tar.gz
mv jdk1.8.0_60/ /usr/local/java
echo “export JAVA_HOME=/usr/local/java” >> /etc/profile
echo “export PATH=/usr/local/java/bin:$PATH” >> /etc/profile
. /etc/profile
echo $PATH
java -version
tar -xf apache-tomcat-8.5.41.tar.gz
mv apache-tomcat-8.5.41 /usr/local/tomcat
systemctl stop firewalld
setenforce 0

=安装redis
yum -y install gcc gcc-c++
tar -xf redis-4.0.9.tar.gz
cd redis-4.0.9/
make
cd src/
mkdir -p /usr/local/redis
cp -p redis-server redis-cli redis-benchmark /usr/local/redis/
cp /root/redis-4.0.9/redis.conf /usr/local/redis/
cd /usr/local/redis/
ln -s /usr/local/redis/redis-cli /usr/bin/redis
systemctl stop firewalld
setenforce 0

==配置redis主配置文件=
#将redis监听的网卡IP改成自身对外监听的网卡IP地址
sed -i "/^bind 127.0.0.1 / s / 127.0.0.1 / / s/127.0.0.1/ /s/127.0.0.1/(ifconfig ens32 | awk 'NR
2 {print $2}’)/g" redis.conf

#关闭redis的保护模式,类似linux的安全机制,所以必须关闭
sed -i ‘/protected-mode/s/yes/no/g’ redis.conf

#开启redis后台守护进程模式,否则redis会在前台运行
sed -i ‘/daemonize/s/no/yes/g’ redis.conf

#设置redis密码
sed -i ‘/requirepass/s/foobared/123123/g’ redis.conf

#将redis密码那一行得注释去掉
sed -i ‘/requirepass 123123/s/^#//g’ redis.conf

#修改日志文件存放路径及名称
sed -i ‘/logfile/s@""@"/var/log/redis.log"@g’ redis.conf

#修改redis最大使用内存,需要小于主机内存或等于主机内存,可使用free -m查询主机内存
sed -i ‘/maxmemory /s//500MB/g’ redis.conf
sed -i ‘/maxmemory 500MB/s/^#//g’ redis.conf

=主库生成redis启动脚本
cat <>/etc/init.d/redis
#!/bin/sh

chkconfig: 2345 80 90

description: Start and Stop redis

#PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/redis/redis-server
REDIS_CLI=/usr/local/redis/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/usr/local/redis/redis.conf"
AUTH=“123123”
LISTEN_IP=$(netstat -utpln |grep redis-server |awk ‘{print $4}’|awk -F’:’ ‘{print $1}’ |uniq)

case “$1” in
start)
if [ -f $PIDFILE ]
then
echo “$PIDFILE exists, process is already running or crashed”
else
echo “Starting Redis server…”
$EXEC $CONF
fi
if [ “$?”=“0” ]
then
echo “Redis is running…”
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo “$PIDFILE does not exist, process is not running”
else
PID=$(cat $PIDFILE)
echo “Stopping …”
$REDIS_CLI -h $LISTEN_IP -p $REDISPORT -a $AUTH SHUTDOWN
while [ -x ${PIDFILE} ]
do
echo “Waiting for Redis to shutdown …”
sleep 1
done
echo “Redis stopped”
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo “Usage: /etc/init.d/redis {start|stop|restart|force-reload}” >&2
exit 1
esac
END

chmod +x /etc/init.d/redis
启动redis

配置nginx
vim /usr/local/nginx/conf/nginx.conf

#在http模块中增加upstream,注意增加到server之上
upstream tomcat {
server 192.168.40.15:8080 weight=1 max_fails=3 fail_timeout=10;
server 192.168.40.16:8080 weight=1 max_fails=3 fail_timeout=10;
}

#在server模块中增加location匹配
location ~ (.*).jsp {
proxy_pass http://tomcat;
}

==增加tomcat测试页=
#192.168.40.15
vim /usr/local/tomcat/webapps/ROOT/1.jsp
111

#192.168.40.16
vim /usr/local/tomcat/webapps/ROOT/1.jsp
222

=====验证能否实现nginx负载均衡
/usr/local/tomcat/bin/startup.sh
curl 192.168.40.14/1.jsp

=====配置tomcat与redis连接软件
#软件名称jedis.jar,可通过下载TomcatClusterRedisSessionManager获得
unzip tomcat-cluster-redis-session-manager.zip
cp tomcat-cluster-redis-session-manager/lib/* /usr/local/tomcat/lib/
cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /usr/local/tomcat/conf/
cd /usr/local/tomcat/conf/

=====编辑redis-data-cache.properties=
vim redis-data-cache.properties

redis.hosts=192.168.40.17:6379 #指定redis主机IP及端口号
redis.password=123123 #指定redis密码

#其他参数含义,走默认即可
//是否支持集群,默认的是关闭
#- set true to enable redis cluster mode
redis.cluster.enabled=false
//连接redis的那个库
#- redis database (default 0)
#redis.database=0
//连接超时时间
#- redis connection timeout (default 2000)
#redis.timeout=2000

=====修改context.xml配置文件从而能够使用redis连接工具=
vim context.xml

#将以下参数增加到标签中

====修改web.xml文件中的会话保持时间=
#默认文件中就有这个参数,我们只需单独修改时间即可,单位秒,可根据实际情况来修改会话保持时间

60

==重启tomcat=
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

=====生成会话共享测试页=
vim /usr/local/tomcat/webapps/ROOT/2.jsp

#将以下内容粘贴进去

<% //HttpSession session = request.getSession(true); System.out.println(session.getCreationTime()); out.println("
SESSION ID:" + session.getId() + "
"); out.println("Session created time is :" + session.getCreationTime() + "
"); %>

==最终测试
#浏览器访问192.168.40.11/2.jsp,看是否session ID号是否会发生改变,不变化则配置成功
#登录redis,用keys *查看数据库中是否有session ID号

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值