nginx+tomcat+redis sesson id主从复制
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主从复制的更多相关文章
- Nginx+tomcat+redis实现session共享
Nginx+tomcat+redis实现session共享 1,安装nginx,使用yum -y install nginx 这是epel源中的,需要安装epel源. 2,配置nginx. 在ngin ...
- Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享
Nginx+Tomcat+Redis实现负载均衡.资源分离.session共享 CentOS安装Nginx http://centoscn.com/CentosServer/www/2013/0910 ...
- 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步
一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...
- nginx+tomcat+redis的集群+session共享
nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- nginx之 nginx + tomcat + redis 负载均衡且session一致性
说明: 本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!nginx 代理服务器ip: 10.219.24.2 ...
- keepalived+nginx+tomcat+redis实现负载均衡和session共享(原创)
keepalived+nginx+tomcat+redis实现负载均衡和session共享 直接上链接,码了一天,就不再重写了,希望能帮到大家,有问题欢迎留言交流.
- 基于nginx tomcat redis分布式web应用的session共享配置
一.前言 nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存.web server负载均衡等功能,由于其轻量级.高性能.高可靠等特点在互联网项目中有着非常普遍的应用,相关 ...
- Nginx+Tomcat+Redis实现持久会话
使用开源web应用solo blog进行项目演示.前端使用Nginx作为负载均衡器,后端Tomcat连接Redis实现session存储.Redis的特点就是可以将session持久化.样才能真正实现 ...
随机推荐
- 201521123092《java程序设计》第四周学习总结
1.本周学习总结 #1.尝试使用思维导图总结有关继承的知识点. #2.使用常规方法总结其他上课内容. 本周主要学习了继承的相关知识,用关键词extends来定义一个类,被继承的类叫做父类,继承的类叫做 ...
- 201521123103 《java学习笔记》 第十二周学习总结
一.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 二.书面作业 将Student对象(属性:int id, String name,int age,double ...
- java课程设计-算术运算测试
1. 团队名称.团队成员介绍 团队名称:cococo 团队成员 组长:网络1514叶城龙 201521123109 组员:网络1514余腾鑫 201521123108 2. 项目git地址 http: ...
- sql+PHP基础+面向对象基础简单总结
一.MYSQL 1.配置MySql 第一步安装服务器(apache). 第二部安装MySql界面程序 2 ...
- openfire :openfire 不同类型插件的开发示例
新建一个自己的Javaproject工程,添加的jar包如下: 将jasper-compiler.jar.jasper-runtime.jar.servlet.jar添加到新建的工程中.如果没有jar ...
- 二分求最长上升子序列 二分LIS
#include <iostream> #include <cstring> #define N 50010 using namespace std; int n; int n ...
- jmeter JDBC请求连接测试mysql数据库
所有jmeter基本组件功能本文不做介绍.jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连 ...
- (二)Java数组特性总结,你真的了解数组吗?
一.数组的特殊性 (一)数组标识符是一个引用,指向堆中创建的一个真实对象,这个对象(数组)保存了指向保存其他对象的引用. (二)数组中保存引用类型时保存的是对象引用,基本数据类型数组保存基本数据的值. ...
- JavaScript基礎知識
JavaScript基礎知識 1.標籤組使用 <script charset='utf-8' //設置字元集 defet //使腳本延遲到文檔解析完成,Browser已忽略 language=' ...
- Java IO使用入门
总体结构 IO应该是平时项目里最常用到的功能了,无论是简单的文件读取,还是服务器端口监听,都会用到IO:但是,在面对Java IO包里庞杂的IO基础类库时,经常会很头大,是该选择InputStream ...