Redis与Memcached的区别:

    内存利用率:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。

    性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。

Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

Redis支持数据的备份,即master-slave模式的数据备份。

Redis不仅仅支持简单的key-Value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

nginx:   192.168.4.4

tomcat-1:    192.168.4.5

tomcat-2:    192.168.4.6

redis-1:   192.168.4.7

redis-2:   192.168.4.8

vip:192.168.4.100

一、nginx安装与配置

1.1 安装nginx

[root@nginx ~]# yum -y install zlib-devel pcre-devel openssl-devel

[root@nginx ~]# tar xf nginx-1.6.2.tar.gz

[root@nginx ~]# cd nginx-1.6.2

[root@nginx nginx-1.6.2]# ./configure && make && make install

[root@nginx nginx-1.6.2]# cd

[root@nginx ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

2.2 配置nginx实现负载均衡

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

    33  gzip  on;

   upstream backend {

    server 192.168.4.5:8080 weight=1 max_fails=1 fail_timeout=10s;

    server 192.168.4.6:8080 weight=1 max_fails=1 fail_timeout=10s;

}

39     server {

 40         listen       80;

 41         server_name  localhost;

 42

 43         #charset koi8-r;

 44

 45         #access_log  logs/host.access.log  main;

 46

 47         location / {

 48             root   html;

 49             index  index.html index.htm;

                proxy_pass http://backend;

 51         }

[root@nginx ~]# nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@nginx ~]# nginx && netstat -anpt |grep :80

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4123/nginx

二、安装tomcat-1\2

2.1 jdk安装

[root@tomcat-1 ~]# tar xf jdk-7u65-linux-x64.gz

[root@tomcat-1 ~]# mv jdk1.7.0_65 /usr/local/java

[root@tomcat-1 ~]# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/local/java

export PATH=$PATH:$JAVA_HOME/bin

[root@tomcat-1 ~]# source /etc/profile.d/java.sh

2.2 安装tomcat

[root@tomcat-1 ~]# tar xf apache-tomcat-7.0.54.tar.gz

[root@tomcat-1 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat

2.3 将tomcat调用redis的包放入tomcat/lib下

[root@tomcat-2 ~]# cp tomcat-redis-session-manage-tomcat7.jar tomcat-juli.jar commons-logging-1.1.3.jar commons-pool2-2.2.jar jedis-2.5.2.jar /usr/local/tomcat/lib

2.4 修改context.xml配置文件支持调用redis

[root@tomcat-1 ~]# vim /usr/local/tomcat/conf/context.xml

<Context>

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

        <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  

        host="192.168.4.7"                             #redis1的ip

        port="6379"

        database="0" 

        maxInactiveInterval="60" />

</Context>

2.5 修改server.xml文件以支持调取创建的测试页

[root@tomcat-1 ~]# vim /usr/local/tomcat/conf/server.xml

124       <Host name="localhost"  appBase="webapps"

125             unpackWARs="true" autoDeploy="true">

         <Context docBase="/web/webapp" path="" reloadable="false" >

        </Context>

2.6 创建测试页

[root@tomcat-1 ~]# mkdir -p /web/webapp

[root@tomcat-1 ~]# cd /web/webapp

[root@tomcat-1 webapp]# vim index.jsp

Session ID:<%= session.getId() %><BR>

SessionPort:<%= request.getServerPort() %>

<% out.println("This tomcat server 192.168.4.5");%>     #tomcat2改成192.168.4.6

2.7 启动tomcat

[root@tomcat-1 ~]# /usr/local/tomcat/bin/startup.sh

[root@tomcat-1 ~]# netstat -anpt |grep :8080

tcp        0      0 :::8080                     :::*                        LISTEN      26474/java  

三、安装redis-1/2

3.1  安装redis

http://download.redis.io/releases/

1和2 安装方式一样,修改的配置文件不一样(下面看)

[root@reids-1 ~]# tar xf redis-3.2.5.tar.gz

[root@reids-1 ~]# cd redis-3.2.5

[root@reids-1 redis-3.2.5]# make

这里如果报错,tclsh8.5: not found 发现少了tcl 报错 

  解决方法:下载,安装tcl

#wget
http://downloads.sourceforge.net/tcl/tcl8.5.9-src.tar.gz

#cd
/tcl8.5.9-src/unix

#./configure

#make

#make
install

接着make && make install 就没报错了

3.2 创建安装路径

[root@reids-1 ~]# mkdir -p /usr/local/redis/bin

[root@reids-1 ~]# mkdir -p /usr/local/redis/etc

[root@reids-1 ~]# mkdir -p /usr/local/redis/var

src目录下这些文件作用如下

    redis-server:Redis服务器的daemon启动程序

    redis-cli:Redis命令行操作工具.你也可以用telnet根据其纯文本协议来操作

    redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能.

    redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况

[root@reids-1 redis-3.2.5]# cd src/

[root@reids-1 src]# cp redis-benchmark  redis-check-aof redis-cli redis-server  /usr/local/redis/bin/

[root@reids-1 src]# cp ../redis.conf  /usr/local/redis/etc

 

3.3 修改配置文件

[root@reids-1 ~]# vim /usr/local/redis/etc/redis.conf

128 daemonize yes     #是否把redis-server启动在后台,默认是“否”。若改成yes,会生成一个pid

 61 bind 0.0.0.0      #任意主机都可以访问

3.4 redis的关闭启动

[root@reids-1 ~]# killall -9 redis-server

[root@reids-1 ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

[root@reids-1 ~]# netstat -anpt |grep :6379

tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      29516/redis-server

3.5 监控redis

[root@reids-1 ~]# redis-cli -p 6379  monitor

OK

测试:访问192.168.4.4

发现测试页面发生变化, 变得是ip  sessionid不变

四、安装keepavlied 实现redis主从高可用

4.1 修改redis-2的配置文件

[root@redis-2 src]# vim /usr/local/redis/etc/redis.conf

128 daemonize yes

61 bind 0.0.0.0

265 # slaveof <masterip> <masterport>

 slaveof 192.168.4.7 6379                     #填写redis-1的ip和端口,同步redis-1的信息

4.2 启动并测试

[root@redis-2 ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

[root@redis-2 ~]# netstat -anpt |grep redis

tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      29517/redis-server 

tcp        0      0 192.168.4.8:42173           192.168.4.7:6379            ESTABLISHED 29517/redis-server

测试主从复制

[root@reids-1 ~]# /usr/local/redis/bin/redis-cli -h 192.168.4.7

192.168.4.7:6379> set name zhangsan

OK

 

[root@redis-2 ~]# /usr/local/redis/bin/redis-cli -h 192.168.4.8

192.168.4.8:6379> get name

"zhangsan"

4.3 安装keepavlied

两台安装方式一样,配置文件不一样

[root@reids-1 ~]# yum -y install keepalived

[root@reids-1 ~]# chkconfig keepalived --add

[root@reids-1 ~]# chkconfig keepalived on

[root@reids-1 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   notification_email {

        calabash@163.com

   }

   notification_email_from aaa@163.com

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id f-1                #将redis-2改为他的的标识

}

 

vrrp_script redis {

        script /opt/chk_redis.sh

        interval 2

        weight -10

}

 

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id

    priority

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

}

track_script {

        redis

        }

 

    virtual_ipaddress {

        192.168.4.100           #vip

    }

}

[root@reids-1 ~]# /etc/init.d/keepalived start

4.4 keepavlied健康检查脚本

[root@reids-1 ~]# vim /opt/check_redis.sh

#!/bin/bash

# check redis server st="/usr/local/nginx/sbin/nginx"

REDIS="/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf"

redispid=$(ps -C redis-server --no-header |wc -l)

if [ $redispid -eq 0 ];then

$REDIS

sleep 3

redispid=$(ps -C redis-server --no-header |wc -l)

if [ $redispid -eq 0 ];then

/etc/init.d/keepalived stop

echo "Keepalived stopped ,please check your redis !"|tee -a /var/log/messages

fi

fi

五、修改tomcat支持vip

5.1 在两台tomcat做相同的操作

将redis的ip地址改为vip的ip地址,以支持vip漂移

[root@tomcat-1 ~]# vim /usr/local/tomcat/conf/context.xml

…..

36         host="192.168.4.100"     # 将192.168.4.7改为 192.168.4.100 

……

5.2关闭redis-1的keepavlied和redis服务

[root@reids-1 ~]# /etc/init.d/keepalived stop

Stopping keepalived:                                       [  OK  ]

[root@reids-1 ~]# killall -9 redis-server

测试vip漂移:

查看redis-2

测试session id主从复制:

nginx+tomcat+redis sesson id主从复制的更多相关文章

  1. Nginx+tomcat+redis实现session共享

    Nginx+tomcat+redis实现session共享 1,安装nginx,使用yum -y install nginx 这是epel源中的,需要安装epel源. 2,配置nginx. 在ngin ...

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

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

  3. 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步

    一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...

  4. nginx+tomcat+redis的集群+session共享

    nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...

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

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

  6. nginx之 nginx + tomcat + redis 负载均衡且session一致性

    说明: 本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!nginx 代理服务器ip: 10.219.24.2 ...

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

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

  8. 基于nginx tomcat redis分布式web应用的session共享配置

    一.前言 nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存.web server负载均衡等功能,由于其轻量级.高性能.高可靠等特点在互联网项目中有着非常普遍的应用,相关 ...

  9. Nginx+Tomcat+Redis实现持久会话

    使用开源web应用solo blog进行项目演示.前端使用Nginx作为负载均衡器,后端Tomcat连接Redis实现session存储.Redis的特点就是可以将session持久化.样才能真正实现 ...

随机推荐

  1. 团队作业4——第一次项目冲刺(Alpha版本) Day3

    1.由于大家课程都比较多,时间紧迫,今天最后一节课下课完在教室召开了简短的站立式会议,会议照片如下: 2.Leangoo任务分解图: 3.每个人的工作: 队员 今天已完成的工作 明天计划完成的工作 林 ...

  2. 201521123016 《Java程序设计》第8周学习总结

    1. 本周学习总结 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 1.删除元素的时候从最后一个元素开始,避免删除元素后位置发生变化而导致有些元素没有删 ...

  3. 201521145048《Java程序设计》第4周学习总结

    1. 本章学习总结 学会了如何去设计一个类,尽量用private修饰属性,public修饰方法. 了解继承的目的. 了解继承和多态的关系. 了解关键字extends super final overr ...

  4. 201521123045-----《Java程序设计》第3周学习总结

    ---恢复内容开始--- 1. 本章学习总结 2. 书面作业 1. 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private stati ...

  5. 201521123088《Java程序》第二周总结

    #1. 本章学习总结 ①java基本数据类型 ②String类对象使用 #2. 书面作业 使用Eclipse关联jdk源代码,并查看String对象的源代码(截图)?分析String使用什么来存储字符 ...

  6. 201521123007《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...

  7. 201521123008 《Java程序设计》第十四周学习总结

    1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) - ...

  8. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

  9. oracle-外连接left join的应用

    需求 自助设备交易统计 输入项 类型 可为空 备注 机构 选择 Y 采用下拉框的形式 终端号 手输 Y 与柜员号二选一 交易柜员号 手输 与终端号二选一 时间 选择 N 时间区间 状态 多选 设备状态 ...

  10. 关于搭建php电商环境时缺少fileinfo、数据库安装出错问题解决办法

    今天以WSTMart电商系统为例讲解 搭建php电商环境缺少fileinfo.数据库安装出错问题找了很多方法都没能很好解决,该方法简单明了,容易操作 首先需要到开源中国中下载该系统源码,网址为:htt ...