天天看點

redis Session會話共享chkconfig: 2345 80 90description: Start and Stop redis

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 'NR2 {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/[email protected]""@"/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号

繼續閱讀