Nginx+Tomcat+Redis负载均衡实现Session共享

环境描述

tomcat1:192.168.194.100:18080
tomcat2:192.168.194.100:28080
Nginx:  192.168.194.100:80
redis:  192.168.194.100:6379

1. Nginx安装与配置

【1】配置yum下载Nginx

第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo

cd /etc/yum.repos.d/vim nginx.repo

填写如下内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

保存,则会产生一个/etc/yum.repos.d/nginx.repo文件。

【2】安装Nginx

下面直接执行如下指令即可自动安装好Nginx:

yum install nginx -y

【3】配置Nginx代理tomcat

配置/etc/nginx/nginx.conf 文件

vi /etc/nginx/nginx.conf

在http里面加入如下配置:

 #服务器的集群  upstream  netitcast.com {  #服务器集群名字 随便取  server    localhost:18080  weight=1;#服务器配置 weight是权重的意思,权重越大分配的概率越大。 server    localhost:28080  weight=2;  }     #当前的Nginx的配置  server {  listen       80;              #监听80端口,可以改成其他端口  server_name  192.168.194.100; #当前服务的域名  location / {  proxy_pass http://netitcast.com;  #服务器集群名字 跟上面一致proxy_redirect default;  }  }

【4】启动Nginx

安装完成,下面直接就可以启动Nginx了:

service nginx start # 启动Nginx服务
service nginx stop  # 停止Nginx服务

至此,Nginx已经全部配置安装完成。

【5】测试Nginx

浏览器输入http://192.168.194.100:80

                     Welcome to nginx!If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.

如果得到以上信息,表示nginx启动成功

2. Redis安装与配置

此处忽略

安装与配置完成后,需要启动redis

3. Tomcat+Redis session共享

【1】toncat下载

去官网下载apache-tomcat-7.0.81.tar.gz压缩包,解压两个Tomcat,分别命名为tomcat1和tomcat2。

【2】修改server.xml文件

然后修改这两个Tomcat的启动端口,分别为18080和28080,下面以修改第一台Tomcat为例,打开Tomcat的conf目录下的server.xml:修改如下三处

#修改tomcat1的server.xml
<Server port="18005" shutdown="SHUTDOWN">
<Connector port="18080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />

第二台Tomcat

#修改tomcat2的server.xml
<Server port="28005" shutdown="SHUTDOWN">
<Connector port="28080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="28009" protocol="AJP/1.3" redirectPort="8443" />

【3】配置第三方jar和context.xml文件

下载3个jar包,需要将他们放在tomcta的lib文件夹下面。切记是tomcat的lib下面。

tomcat-redis-session-manager1.2.jar
jedis-2.7.2.jar
commons-pool2-2.0.jar

jar包已上传,下载地址:

链接:http://pan.baidu.com/s/1o8JrgRg 密码:dgqm

配置context.xml

<?xml version='1.0' encoding='utf-8'?>
<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  host="192.168.194.100"  port="6379"  password="password" 如果设置了密码则在这里配置上database="0"  redis默认16个database 第一个是0 最后一个是15maxInactiveInterval="60" />
</Context>

【4】将demo项目分别放到两个tomcat的webapps文件中,然后分别启动两个tomcat

#demo已上传,下载地址:链接:http://pan.baidu.com/s/1o8JrgRg 密码:dgqm

【5】通过demo 的登录案例,测试session共享

浏览器登录成功后的页面

用户: huang
密码: huang
sessionID: DE50FE269D71187B5BC01DAD40394158

然后查看redis客户端

cd /usr/local/redis/
./bin/redis-cli  #进入客户端127.0.0.1:6379> keys *
1) "DE50FE269D71187B5BC01DAD40394158"127.0.0.1:6379> get DE50FE269D71187B5BC01DAD40394158
"\xac\xed\x00\x05sr\x00Dcom.orangefunction.tomcat.redissessions.SessionSerializationMetadataB\xd9\xd9\xf7v\xa2\xdbL\x03\x00\x01[\x00\x15sessionAttributesHasht\x00\x02[Bxpw\x14\x00\x00\x00\x10\xf7\nY\x82Z\x91\x06\xa68\xa3\xb8\xf6\xa6\x06Rvxsr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x00\x00\x01^\x97\xa2\b\x15sq\x00~\x00\x03\x00\x00\x01^\x97\xa2\b\x15sr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexq\x00~\x00\x04\x00\x1bw@sr\x00\x11java.lang.Boolean\xcd r\x80\xd5\x9c\xfa\xee\x02\x00\x01Z\x00\x05valuexp\x00sq\x00~\x00\t\x01sq\x00~\x00\x03\x00\x00\x01^\x97\xa2J[t\x00 DE50FE269D71187B5BC01DAD40394158sq\x00~\x00\a\x00\x00\x00\x02t\x00\busernamet\x00\x05huangt\x00\bpasswordt\x00\x05huangw\b\x00\x00\x01^\x97\xa2\b\x15"
127.0.0.1:6379>

由此可见,实现了session共享与session读取

注意

【1】Nginx反向代理Tomcat,如果提示13 permission denied while connecting to upstream这个错误,

你可以看到所有可用的列表SELinux httpd使用布尔值

getsebool -a | grep httpd

解决方法:

#解决方案是切换的SELinux布尔值httpd网络连接on(Nginx使用httpd标签)。setsebool httpd_can_network_connect on #注意,每次linux服务器重启就失效了,需要再次执行这个

【2】上面所提供的jar包是针对tomcat7的,只能使用tomcat7。

【3】启动程序的顺序:nginx > redis > tomcat

【4】redis如果存储对象,则需要将对象序列化

Nginx+Tomcat+Redis负载均衡实现Session共享相关推荐

  1. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

  2. nginx+tomcat+redis负载均衡,实现session共享

    http://blog.51cto.com/xiong51/2107039 转载于:https://www.cnblogs.com/diyunpeng/p/9860947.html

  3. Nginx+MSM+Tomcat做负载均衡,session共享

    2019独角兽企业重金招聘Python工程师标准>>> 先上个架构图(个人理解是这个样子) 简单来说:服务器A上面部署一个Nginx反向代理服务器,MSM用于session共享,To ...

  4. 从0开始,在Linux中配置Nginx反向代理、负载均衡、session共享、动静分离

    写这篇文章花费了我近一周的时间,参考网上许多优秀的博客文章,我不敢说写的很好,至少很全很详细.本文先介绍原理部分,然后再进行实战操作,我认为这样才会有更深的理解,不过这也导致了文章篇幅很长.但是,如果 ...

  5. windows使用nginx+memcached实现负载均衡和session或者缓存共享

    windows使用nginx+memcached实现负载均衡和session或者缓存共享 两台server server1:115.29.186.215 windows2008 64位操作系统 ser ...

  6. Nginx+Tomcat实现负载均衡、动静分离集群部署

    Nginx+Tomcat实现负载均衡.动静分离集群部署 一.Tomcat多实例部署 1.安装好jdk 2.安装tomcat 3.配置tomcat环境变量 4.修改tomcat2中的server.xml ...

  7. Nginx+Tomcat服务器负载均衡实践方案

    1.    为何选择Nginx+Tomcat做负载均衡? 1.1. Nginx是什么? Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3 ...

  8. nginx+tomcat的负载均衡

    nginx+tomcat的负载均衡 一. Nginx的安装配置 1. Nginx服务器端 Nginx服务器的IP:192.168.5.108 Tomcat01的IP:   192.168.5.102 ...

  9. nginx+tomcat+memcached负载均衡

    2019独角兽企业重金招聘Python工程师标准>>> nginx+tomcat+memcached负载均衡 负载均衡: 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服 ...

最新文章

  1. 使用python套用excel模板_集成python的excel插件模板pyaddin——使用说明
  2. js中内置对象Math()常用方法笔记
  3. JavaScript 函数定义方式
  4. 操作系统(十二)线程的实现方式、多线程模型
  5. swift语言新特性:可选值
  6. java数组怎样插入元素,Java如何在给定位置将元素插入数组?
  7. 盘点程序猿经常说的那些行话,你了解吗?
  8. aws lambda使用_使用AWS Lambdas扩展技术堆栈
  9. vim安装时报错:Depends:vim-common (=2:7.4.1689-3ubuntu1.4) but 2:8.0.1453-1ubuntu1.1 is to be installed
  10. 安卓学习笔记28:文件流操作
  11. android 查找所有dialog_android 布局文件layout分组的简单使用
  12. Openfire:安装指南
  13. 10条买房错误思维,你中招了几条?
  14. 脑电数据处理分析教程汇总(eeglab, mne-python)
  15. [经验教程]谷歌浏览器google chrome如何设置默认百度搜索引擎?
  16. UDID 和 UUID 的问题
  17. 2009年以来我买过的书(部分)
  18. 如何给人物模型添加动画效果
  19. ecshop小京东后台首次上传商品不能上传相册的解决办法
  20. VS2019下编译与配置GSL2.7【Release x64版】

热门文章

  1. 五款最棒的Go语言开发工具?
  2. 发票OCR识别技术太屌了,哈哈哈哈
  3. LightSwitch 社区内容汇总 – 2012年9月
  4. 中国艺术孙溟㠭篆刻作品《零落成泥碾作尘,只有香如故》
  5. GitHub7200星,一个可以白嫖全网无损音乐的神器
  6. 2-44钟静雯_day04
  7. 至联云为你解析Filecoin最新经济模型:180天线性释放是什么意思?
  8. 自动化立体库能力分析——堆垛机(单深单货位Case1,双循环)
  9. JUC编程java多线程并发详细总结
  10. JZ 20 表示数值的字符串:抽象与逻辑练习