1. 程式人生 > >Centos7下Nginx+Tomcat配置反向代理,使用redis解決session一致性問題

Centos7下Nginx+Tomcat配置反向代理,使用redis解決session一致性問題

localhost 第一次 方案 days tom gin align title 瀏覽器

一、session一致性問題

使用集群方案解決網站高並發問題時,就會部署多臺應用服務器。當用戶第一次通過客戶端(如:瀏覽器)訪問服務器時,服務器會創建對應的session,

使用Nginx反向代理,假如用戶A第一次訪問站點,被反向代理到服務器一處理,服務器一創建對應sessionA記錄信息,用戶A再次訪問站點時,被反向代理到服務二處理,

而服務器二沒有記錄用戶A的session信息,就會新創建sessionB,導致用戶A之前操作丟失。

我們可以通過讓多個服務器統一到同一個地方新建session和取session,來解決session不一致的問題。

二、基於上篇搭建好Nginx+Tomcat環境信息,可以使用memcached解決session一致性問題

Linux下Nginx+Tomcat配置反向代理

三、Redis簡介

  REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。

四、配置

1、安裝Redis,默認端口為6379

cd  /usr/local/redis/
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
tar  xzf redis-4.0.8.tar.gz
cd  redis-4.0.8
make

2、啟動,並且修改/usr/local/redis/redis-4.0.8/redis.conf 的bind值,改為本機ip

./redis-server  --protected-mode no

3、上傳jar包到tomcat的lib目錄下,實現讓多個服務器統一到redis新建session和取session

jar包可以去github查看下載,地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

4、修改每一個tomcat配置信息

a、為了便於測試,修改/usr/local/tomcat/apache-tomcat-8.0.50/conf/server.xml文件,Engine節點添加jvmRoute="tomcat1"(103行左右,多個tomcat修改名字不同)

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1" >

   b、修改/usr/local/tomcat/apache-tomcat-8.0.50/conf/context.xml,實現tomcat到Memcached新建session和取session,在Context節點裏添加如下配置

memcachedNodes="redis://192.168.182.131:6379",這個ip需要是自己安裝的redis的ip

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
         memcachedNodes="redis://192.168.182.131:6379"
         requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
         />

五、測試

瀏覽器訪問192.168.182.130,ctrl + F5刷新瀏覽器,查看session信息是否和預期一致。

六、tomcat和nginx安裝可以參考個人的隨筆

Linux環境下安裝Tomcat

CentOS7編譯安裝Nginx

yexiangyang

[email protected]


Centos7下Nginx+Tomcat配置反向代理,使用redis解決session一致性問題