目标实现:Nginx作为负载均衡后端多Tomcat实例,通过Redis实现Session共享。

操作系统环境:CentOS 6.8

SSH:SecureCRT

其中

Nginx服务:80端口

Tomcat实例1:8080端口

Tomcat实例2:8060端口

Redis服务:6379端口

下载相关软件都放在百度云 密码:29ic ,下面的安装过程中需要的软件 都可以从这里直接下载。

安装rz/sz命令:便于文件传输

tar zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20

./configure && make && make install

安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下,现在我们并不能直接使用,下面创建软链接,并命名为rz/sz
cd /usr/bin
ln -s /usr/local/bin/lrz rz
ln -s /usr/local/bin/lsz sz
 
上传文件命令:rz
下载文件命令:sz filename
打开SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录
 

安装JDK

sudo rpm -ivh jdk-7u80-linux-x64.rpm //解压安装 
jdk配置环境变量
vi /etc/profile
在末尾新增
export JAVA_HOME=/usr/java/jdk1.7.0_80
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 
export PATH=$JAVA_HOME/bin:$PATH
 
source /etc/profile

安装Maven

 
vi /etc/profile #环境配置
export MAVEN_HOME=/root/maven/apache-maven-3.0.5
export PATH=$JAVA_HOME/bin:$PATH:$MAVEN_HOME/bin
 
source /etc/profile
 

安装Redis

参见 PHP开发中Redis安装(CentOS6.5)

安装Nginx

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel #安装依赖
tar -zxvf nginx-1.10.2.tar.gz #解压缩
cd nginx-1.10.2 #进入nginx目录
./configure
# 也可以指定安装目录 增加参数 --prefix=/usr/nginx
# 如果不指定路径 可以在安装后通过whereis nginx查询
# 默认安装在/usr/sbin/nginx
make
make install
mkdir /usr/local/nginx/vhost
sudo vim /usr/local/nginx/conf/nginx.conf #编辑增加 include vhost/*.conf 保存退出

具体配置参见wangjiangnet.conf

安装Git

yum install git

安装Tomcat

mv apache-tomcat-7.0.73 tomcat8080
mv apache-tomcat-7.0.73 tomcat8060

cd /root/tomcat/tomcat8060/bin
vi catalina.sh
CATALINA_HOME=/root/tomcat/tomcat8060 cd /root/tomcat/tomcat8080/bin
vi catalina.sh
CATALINA_HOME=/root/tomcat/tomcat8080 cd /root/tomcat/tomcat8060/conf
vi server.xml #修改Server 、Connector(HTTP/1.1) 、Connector(AJP/1.3) 端口

 

<Server port="8065" shutdown="SHUTDOWN">

    <!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port 8080
-->
<Connector port="8060" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" /> <!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8069" protocol="AJP/1.3" redirectPort="8443" />

  

编译tomcat-redis-session-manager项目【也可以直接从百度云下载】

1.git clone git@github.com:jcoleman/tomcat-redis-session-manager.git

2. cd tomcat-redis-session-manager && vi pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.ufind.session</groupId>
<artifactId>tomcat-redis-session</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>7.0.27</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build> </project>

3.执行mvn clean 和mvn install 将编译好的代码打包为:tomcat-redis-session-1.0-SNAPSHOT.jar,将tomcat-redis-session-1.0-SNAPSHOT.jar、jedis-2.7.2.jar、commons-pool2-2.0.jar 三个jar包分别放在tomcat8080和tomcat8060实例下的lib目录下。

4.修改配置/root/tomcat/tomcat8060/conf/context.xml、/root/tomcat/tomcat8080/conf/context.xml 配置redis session 共享

cd /root/tomcat/tomcat8060/conf
vi context.xml

 注意 Redis 一定要配置密码的!

<?xml version='1.0' encoding='utf-8'?>

<Context>

<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- tomcat-redis-session共享配置 -->
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="0"
password="abcd1234"
maxInactiveInterval="60" />
</Context>

5.复制百度云中tomcat8060目录内的index.html、login.jsp 到服务器 tomcat8060目录下/webapps/ROOT/目录下
   复制百度云中tomcat8080目录内的index.html、login.jsp 到服务器 tomcat8080目录下/webapps/ROOT/目录下
 

6.分别启动两个tomcat实例
  cd  .tomcat8060/bin && ./catalina.sh start
  cd  .tomcat8080/bin && ./catalina.sh start

最终效果

1.第一次访问转向 端口是8060 的tomcat 实例

2.第二次访问转向 端口是8080 的tomcat 实例

3.点击上图中的login按钮,可以看到如下图,访问的其实是tomcat8060实例。

这其实就已经做到多tomcat实例的Session都是通过我们指定的Redis服务共享。

问题

1.git clone git@github.com:jcoleman/tomcat-redis-session-manager.git 不成功

[root@iZ38n4tck31thgZ ~]# git clone git@github.com:jcoleman/tomcat-redis-session-manager.git
Initialized empty Git repository in /root/tomcat-redis-session-manager/.git/
The authenticity of host 'github.com (192.30.255.112)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

生成新的SSH key 参照 https://help.github.com/articles/connecting-to-github-with-ssh/

Nginx+Tomca+Redis实现负载均衡、资源分离、session共享的更多相关文章

  1. 如何运用PHP+REDIS解决负载均衡后的session共享问题

    一.为什么要使用Session共享? 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名.密码在整个网站的 ...

  2. Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

    Nginx+Tomcat+Redis实现负载均衡.资源分离.session共享 CentOS安装Nginx http://centoscn.com/CentosServer/www/2013/0910 ...

  3. keepalived+nginx+tomcat+redis实现负载均衡和session共享(原创)

    keepalived+nginx+tomcat+redis实现负载均衡和session共享 直接上链接,码了一天,就不再重写了,希望能帮到大家,有问题欢迎留言交流.

  4. Nginx+Tomcat+Keepalived+Memcache 负载均衡动静分离技术

    一.概述 Nginx 作负载均衡器的优点许多,简单概括为: ①实现了可弹性化的架构,在压力增大的时候可以临时添加Tomcat服务器添加到这个架构里面去; ②upstream具有负载均衡能力,可以自动判 ...

  5. windows系统下nginx+tomcat+redis做负载均衡和session粘滞附整套解决方案

    Nginx: 在nginx-1.8.0\conf目录下找到nginx.conf文件,打开文件修改文件中http{}中的内容,在http{}中加入 upstream localhost  { serve ...

  6. 负载均衡下 tomcat session 共享

    概述 在分布式部署的情况下,每台tomcat 都会有自己的session ,这样如果 用户A 在tomcat1 下登录,在tomcat2 下并没有session信息.如果 tomcat1宕机,tomc ...

  7. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  8. Nginx 服务器 之Nginx与tomcat实现负载均衡

      本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf  创建 ...

  9. Linux系统——Nginx反向代理与负载均衡

    集群集群是指一组(若干个)相互独立的计算机,利用高速通信网路组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运用各自服务的独立服务器.这些服务器之间可以彼此通信,协同向用户提供 ...

随机推荐

  1. 云计算学习(5-1)云平台产品介绍-华为的FusionCloud产品

    FusionSphere云平台:继承了虚拟化和云管理系统,为企业构建私有云  FusionManager:云管理平台(管理计算虚拟化.网络虚拟化.存储虚拟化) FusionCompute.Fusion ...

  2. 云服务器ECS优惠券 阿里云 ecs 5折优惠码 阿里云5折优惠码 阿里云5折推荐码 阿里云优惠码 阿里云的5折优惠券 阿里云服务器购买优惠码 服务器购买优惠码

    阿里云代金券 | 阿里云优惠券云服务器ECS,就是阿里云服务器,大家一定要清楚.云服务器ECS优惠券官方领取优惠页面:https://promotion.aliyun.com/ntms/act/amb ...

  3. __init__特殊方法

    __init__特殊方法不应当返回除了none以外的任何方法.

  4. ECSHOP模板 蘑菇街2018广告楼层设置说明

    楼层广告以及说明 图1 ------------------ 设置,通过,后台,模板设置,分类下的商品,选用需要显示的商品分类 图2------------------ 后台,编辑商品分类的广告链接. ...

  5. Packer piplines and workflow

    packer对docker和aws AMI的支持都很好,来上个图: 配套的模版长这样: { "variables": { "name": "webim ...

  6. https://segmentfault.com/a/1190000004518374#articleHeader3

    https://segmentfault.com/a/1190000004518374#articleHeader3 https://segmentfault.com/q/10100000049065 ...

  7. spring clound微服务架构实践(1)——搭建服务注册中心

    一.创建一个空maven parent模板 1-1.新建project,选择maven 1-2.给此模板起名 1-3.此模板的保存位置,此处放入我的git项目spring-clound-learnin ...

  8. java中String类学习笔记

    1.String的两种实例化方式 String str="hello";//直接赋值的方式: String str=new String("hello");// ...

  9. [JetBrains注册] 利用教育邮箱注册pycharm,idea等产品教程。

    我们在使用JetBrains的一些产品时,大多使用网上的一些key去注册或者pojie的,但是由于提供这些key的服务器并不能保证稳定可用,所以可能一段时间我们使用的ide又需要重新pojie. 这里 ...

  10. 【转】C++ Vector(向量容器)

    转自:https://blog.csdn.net/studentyyl/article/details/21177445 vector是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩 ...