Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。

Redis从它的许多竞争继承来的三个主要特点:

Redis数据库完全在内存中,使用磁盘仅用于持久性。

相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。

Redis可以将数据复制到任意数量的从服务器。

REDIS优势

异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。

支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。

操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。

多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。

REDIS安装

在redis官网下载最新的源码包

http://download.redis.io/releases/redis-2.8.3.tar.gz

  1. 解压

# tar xzf redis-3.0.0.tar.gz

  1. 拷贝目录

# mv redis-3.0.0 /usr/local/redis

  1. 进入目录

# cd /usr/local/redis

  1. 编译

# make && make install

  1. 查看命令运行结果,如果是0则是成功

# echo $?

REDIS启动

# redis-server

第一次启动时可能会有提示的warning信息;可以忽略,但最好是按照提示的处理办法修改。

REDIS客户端启动

# redis-cli

验证客户端操作

# redis> set iom dtsoft

OK

# redis> get iom

“dtsoft”

REDIS主从同步

编辑主机配置文件

# vim redis.conf

daemonize yes                    –进程后台启动

logfile /usr/local/redis/redis.log       –日志文件

syslog-enabled no                –日志不写进系统日志

dir /usr/local/redis/data      –数据文件存放

requirepass system                      –认证密码

编辑从机配置文件

# vim redis.conf

daemonize yes

logfile /usr/local/redis/redis.log

syslog-enabled no

dir /usr/local/redis/data

slaveof 192.168.10.5 6379           –主服务器的IP地址和端口

masterauth system                       –主服务器上的认证密码

启动服务

1、主机节点:

# cd /usr/local/redis/src/

# ./redis-server ../redis.conf –后面的配置文件一定要加上

2、从机节点:

# cd /usr/local/redis/src/

# ./redis-server ../redis.conf –后面的配置文件一定要加上

3、检查端口

分别在主从机上执行,查看两机相连端口是否是ESTABLISHED状态。

# netstat -antp | grep 6379

4、验证同步

主机节点:

# ./redis-cli

127.0.0.1:6379> set iom 123456

(error) NOAUTH Authentication required.        –需要认证权限

127.0.0.1:6379> auth system

OK

127.0.0.1:6379> set iom 123456

OK

127.0.0.1:6379> get iom

“123456”

从机节点:

# ./redis-cli

127.0.0.1:6379> get iom             –在从服务器不需要认证权限

“123456”

keepalived配置

路由机配置

编辑/etc/keepalived/keepalived.cnf文件

global_defs {

router_id LVS_MASTER   #BACKUP上修改为LVS_BACKUP

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.10.252       #redis

}

}

virtual_server 192.168.10.252 6379 {

delay_loop 6

lb_algo rr

lb_kind DR

#lb_kind NAT

#    persistence_timeout 3

protocol TCP

real_server 192.168.10.3 6379 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 6379

}

}

real_server 192.168.10.5 6379 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 6379

}

}

}

重启keepalived服务

# service keepalived restart

redis主从机配置

编写执行脚本

#vi  lvs_real

  1. #!/bin/bash
  2. #description:startrealserver
  3. VIP=192.168.10.252
  4. case “$1” in
  5. start)
  6. echo “startLVSofREALServer”
  7. /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  8. echo “1”>/proc/sys/net/ipv4/conf/lo/arp_ignore
  9. echo “2”>/proc/sys/net/ipv4/conf/lo/arp_announce
  10. echo “1”>/proc/sys/net/ipv4/conf/all/arp_ignore
  11. echo “2”>/proc/sys/net/ipv4/conf/all/arp_announce
  12. sysctl –p >/dev/null 2>&1
  13. ;;
  14. stop)d
  15. /sbin/ifconfig lo:0 down
  16. echo “closeLVSDirectorserver”
  17. echo “0”>/proc/sys/net/ipv4/conf/lo/arp_ignore
  18. echo “0”>/proc/sys/net/ipv4/conf/lo/arp_announce
  19. echo “0”>/proc/sys/net/ipv4/conf/all/arp_ignore
  20. echo “0”>/proc/sys/net/ipv4/conf/all/arp_announce
  21. ;;
  22. *)
  23. echo “Usage:$0{start|stop}”
  24. exit 1
  25. esac

执行脚本

# /lvs_real start

系统测试

1、测试环境

VIP/路由机:192.168.10.252

redis主:192.168.10.3

redis备:192.168.10.4

客户机:192.168.10.1

2、测试过程

客户机运行redis客户端:

# redis-cli –h 192.168.10.252 –p 6379

redis:6379> auth system –第一次需要输入密码

OK

redis:6379> get iom

“123456”

关掉redis主机

客户机运行redis客户端

redis:6379> get iom

“123456”   –仍能得到iom值

启动redis主机

客户机重启redis客户端

# redis-cli –h 192.168.10.252 –p 6379

路由机运行lvs监控命令。

# watch ipvsadm –lc

可以看到destination显示的是主节点IP。

每次客户机重启redis客户端,destination显示IP在主备节点替换(lvs路由配置为轮询,即lb_algo rr

)。

3、测试注意

  • redis从节点默认配置为只读,客户机连接分配到从节点后只能执行查询操作,不能增删。从节点若想也可执行修改操作需将redis配置文件的slave-read-only选项改为no。
  • 客户机只要没退出redis客户端,将一直固定连接同个redis节点。
  • redis节点故障恢复后keepalived会立刻将其并入redis集群,但此时有可能恢复的redis节点数据比其它节点旧,一定要先同步数据再将其并入集群。

LVS+Redis部署手册的更多相关文章

  1. lvs fullnat部署手册(一)fullnat内核编译篇

    标签:kernel rpm lvs fullnat 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://shanks.blog.51c ...

  2. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  3. 【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  4. Redis学习手册(目录)

    为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...

  5. MariaDB Galera Cluster部署手册

    MariaDB Galera Cluster部署手册 galara保证双主数据库的同步及一致性 1.环境准备 基于新部署.最小化安装centos6.5 1>  yum install opens ...

  6. Redis学习手册——转载

    转载出处:http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html 为什么自己当初要选择Redis作为数据存储解决方案中 ...

  7. phpredis中文手册——《redis中文手册》 php版

    本文是参考<redis中文手册>,将示例代码用php来实现,注意php-redis与redis_cli的区别(主要是返回值类型和参数用法). 目录(使用CTRL+F快速查找命令): Key ...

  8. Redis学习手册

    为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...

  9. 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区

    突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS)

随机推荐

  1. IE6-9不支持Textarea的maxlength属性

    给textarea标签添加一个maxlength=200,测试工程师提bug说IE9没起作用.后一测试,发现IE10一下的浏览器均不支持 <textarea maxlength="20 ...

  2. CentOS6.5搭建LNMP

      1:查看环境: ? 1 2 [root@10-4-14-168 html]# cat /etc/redhat-release CentOS release 6.5 (Final) 2:关掉防火墙 ...

  3. 关于C语言中的位域

    有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可.为了节省存储空间,并使处理简便,C语言提供了一种数据结构,称 ...

  4. linux运行级别[转自网络]

    运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc ...

  5. Eclipse RCP实用小技巧

    1.插件Plugin工程的build.properties中增加一行,javacDefaultEncoding.. = UTF 2.插件Plugin工程的Runtime的classpath中加入.

  6. TFS - 使用微软测试管理器实现跨团队项目的测试用例管理

    在团队项目之间实现测试用例和测试计划的共享,是很多客户关注的问题.尤其在开发产品+服务的团队中,对测试用例的共享要求比较高.下面就如何在Team Foundation Server中如何实现团队项目之 ...

  7. MMORPG大型游戏设计与开发(part1 of net)

    网络模块的设计,是大型多人在线游戏中比较重要的一部分.我之所以将网络模块放到最前面,是因为许许多多的开发者面对这一块的时候充满了疑惑,而且也觉得很神秘和深奥.这些我们面对到的困难,其实是由于我们对这方 ...

  8. Scikit-Learn模块学习笔记——数据预处理模块preprocessing

    preprocessing 模块提供了数据预处理函数和预处理类,预处理类主要是为了方便添加到 pipeline 过程中. 数据标准化 标准化预处理函数: preprocessing.scale(X, ...

  9. C#手工注入辅助工具

    看了某牛出版的MySql手注天书一神书,基本上解决了SQL注入上的知识点,于是打完(酱油)省赛回来通宵了一晚上写了个工具 方便语句构造SQL 联合查询 报错注入 盲注 读写 命令执行 基本都有整合 遇 ...

  10. JavaScript 各种页面跳转方法

    第一种: window.location.href="login.jsp?backurl=\"+window.location.href; 第二种: alert("返回& ...