Redis集群的部署
Redis集群分为主节点Master和从节点Slave,主节点只有1个,而从节点可以有多个,这样从节点和主节点可以进行数据的传输,Redis集群的性能将比单机环境更高,接下来是配置的过程
首先配置Master节点,主节点的配置和之前Redis单机配置完全一样,并不需要额外的其他任何配置
然后配置Slave节点,这里使用一台主节点,一台从节点做演示,Slave节点释放安装过程完全一样,redis.conf配置首先保证和之前的配置参数一样,即daemonize要设置为yes、logfile日志位置正确设置,dir数据目录正确设置,然后在这个基础上继续添加下面的配置:
找到slave-read-only这一项,默认是yes,这里不用修改,是指Slave只能从Master上读数据

然后再找到# slaveof <masterip> <masterport>这个位置,根据提示这里是设置master的ip地址和端口号,slave就是根据这个设置去和master通信的,所以去掉注释设置为:slaveof 192.168.1.14 6379

补充完这些设置,保存并退出redis.conf即可,然后分别手动建立数据目录和日志目录
这时候执行命令 redis-server redis.conf 就可以启动slave的redis服务了,然后使用 redis-cli 就可以进入redis客户端了
然后我们输入: keys * 查看所有存在的key,默认情况下因为我们没有添加任何数据,所以应该返回空,但是之前在主节点我们添加过数据,所以在集群环境下会从master读取数据,这里返回并不是空:

到这里最简单的redis集群就算部署完成了,接下来补充一下安装Sentinel这个工具来监控redis集群,Sentinel就是redis自带的一个组件,我们可以在另外一台服务器上重新安装redis和Sentinel监控节点,这里为了简单就直接使用上面这一个Slave节点继续补充安装Sentinel
在Redis释放安装的目录下,这里是/usr/redis/redis-3.0.7,这下面除了redis.conf之外,还有一个sentinel.conf就是用来配置Sentinel的,执行 vim sentinel.conf 编辑配置文件
首先在某一位置添加配置:daemonize yes,这个配置是默认没有的,仍然表示Sentinel服务后台运行

然后找到sentinel monitor mymaster 127.0.0.1 6379 2这样的一个默认配置,其中mymater是服务名称127.0.0.1要改成master节点IP,我这里就是:sentinel monitor mymaster 192.168.1.14 6379 1 注意最后的2要改成1,这个表示哨兵的队列,如果多个哨兵,那么可以依次往后排,这里是单哨兵,所以必须改为1,否则故障无法转移;默认sentinel不打印日志,所以建议设置一下日志目录,方面观察集群的变动情况,设置比如:logfile "/usr/redis/sentinel.log" 指定一个日志文件位置即可,具体如下图所示:

配置这些,保存并退出sentinel.conf
然后使用命令 redis-sentinel sentinel.conf 启动Sentinel服务,
然后测试服务是否正常,执行命令 redis-cli -h localhost -p 进入监控管理,26379就是Sentinel服务的端口号,在配置文件可以看到

进入管理界面之后,执行: sentinel master mymaster 可以查看master的信息

执行 sentinel slaves mymaster 可以查看slave的信息

到这里,监控服务Sentinel也部署完毕了,生产中可以专门有一台机器用于运行Sentinel和其他redis节点分开
另外可以扩展上面的sentinel配置至多个,来管理多个redis的集群或者主从,只是服务名不再是mymaster而是多个,比如master1,master2....等,非常简单
现在可以简单验证故障转移是否好用,在主节点执行 redis-cli -p shutdown 停止master节点
这时候查看sentinel.log日志可以看到主节点从14转移到15,可以通过上面的命令查看或者在sentinel节点使用命令: redis-cli -p info Sentinel 查看管理信息,这时候就会看到主节点变为15,状态仍然是良好,现在如果再次启动14上面的redis,那么会被sentinel重新加入到管理,只是此时变为从节点了
到这里redis集群故障转移是好用的,下面是常用到的一些命令:
查看本机redis节点的信息: redis-cli -p info Replication 如果端口默认,那么可以省略-p参数,作用和上面sentinel看到的类似
查看远程redis节点信息,比如从主节点查看从节点信息: redis-cli -h info Replication # -h后跟远程ip地址
停止远程主机redis服务: redis-cli -p -h 192.168.1.22 shutdown
连接远程客户端redis命令行: redis-cli -p -h 192.168.1.22 默认端口时-p同样可以省略
Redis集群的部署的更多相关文章
- redis集群安装部署
(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 192.168.1.160:7000 192. ...
- Redis集群模式部署
以下以Linux(CentOS)系统为例 1.1 下载和编译 $ wget http://download.redis.io/releases/redis-4.0.7.tar.gz $ tar xzf ...
- Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...
- keepalived+nginx+tomcat+redis集群环境部署
1.所需软件.jar包.配置文件下载:http://pan.baidu.com/s/1dFgntst 2.环境说明: centos6.5 64位 主节点:192.168.40.121 副节点:192 ...
- 使用Docker构建redis集群--最靠谱的版本
1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...
- Redis 集群搭建详细指南
先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...
- Bash实践:抽样检测数据迁移至Redis集群后的数据一致性
熟悉了一段时间的Bash编程,因此借此任务操作一把bash编程,主要涉及到Redis单节点与Redis集群的操作 1. 任务背景 近日有个任务需要将历史的Redis(主从节点)中的数据迁移至Redis ...
- Redis集群的离线安装以及原理理解
一.本文主要是记录一下Redis集群在linux系统下离线的安装步骤,毕竟在生产环境下一般都是无法联网的,Redis的集群的Ruby环境安装过程还是很麻烦的,涉及到很多的依赖的安装,所以写了一个文章来 ...
- Redis集群方案(来自网络)
参考: https://www.zhihu.com/question/21419897 http://www.cnblogs.com/haoxinyue/p/redis.html 为什么集群? 通常, ...
随机推荐
- mysql数据库存储过程异常处理
14.1.4 定义条件和处理程序 定义条件和处理程序是事先定义程序执行过程中可能遇到的问题.并且可以在处理程序中定义解决这些问题的办法.这种方式可以提前预测可能出现的问题, 并提出解决办法.这样可以 ...
- php中pdo例子
下面是从其他博客看到的代码 <?php $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', ''); $db ...
- 如何判断一个变量是否是utf-8
//判断传入的字符是否是utf-8 function is_utf8($word){ if (preg_match("/^([".chr(228)."-" ...
- DigitalOcean 建站笔记
由于在默认的情况下digitalocean的VPS没有设置swap分区,用df -h命令查看的话,整个VPS上只有一个20G的分区.用free命令查看的话,swap分区的大小是0,增加swap分区的命 ...
- PostgreSQL中的时间操作总结
取当前日期的函数: (1) 取当前时间:select now() (2) 取当前时间的日期: select current_date (3) 取当前具体时间(不含日 ...
- [AngularJS] 入门
什么是AngularJS AngularJS是Google开源的一款JavaScript MVC框架,弥补了HTML在构建应用方面的不足, 其通过使用指令(directives)结构来扩展HTML词汇 ...
- BeanFactory和ApplicationContext的区别
1.BeanFactory和ApplicationContext的异同点: 相同点: 两者都是通过xml配置文件加载bean,ApplicationContext和BeanFacotry相比 ...
- debian8 配置使用 nfs
操作过的步骤: 1.dpkg-reconfigre rpcbind. 2.在终端上退出要挂载的目录. 错误:mount -t nfs 172.16.0.121:/home/junda /mnt,出现以 ...
- angularjs获取参数方法
链接:/tab/newsview?id=58 .controller('NewsViewCtrl', ["$scope", "$location"," ...
- [codevs1380]没有上司的舞会([BZOJ2060][Usaco2010 Nov]Visiting Cows 拜访奶牛)
[codevs1380]没有上司的舞会 试题描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现 ...