1、安装redis

首页地址:http://redis.io/

下载地址:http://download.redis.io/ 下载最新的源码包(当前最新稳定版2.6.16)

wget http://download.redis.io/releases/redis-2.6.16.tar.gz
tar xzf redis-2.6.16.tar.gz
cd redis-2.6.16
make
make install
cp redis.conf /etc/


2、运行

加载配置文件并后台运行

redis-server /etc/redis.conf &

#redis-cli (命令行工具)


3、测试

# redis-benchmark --help 获取帮助信息,其中包含压力测试命令样例

Examples:
Run the benchmark with the default configuration against 127.0.0.1:6379:$ redis-benchmarkFill 127.0.0.1:6379 with about 1 million keys only using the SET test:$ redis-benchmark -t set -n 1000000 -r 100000000

实际测试举例

[root@php1 ~]# redis-benchmark -t set -c 20 -n 1000000 -r 100000000
====== SET ======1000000 requests completed in 8.92 seconds20 parallel clients3 bytes payloadkeep alive: 1
100.00% <= 0 milliseconds
112095.06 requests per second


4、主从配置及测


php1 172.17.16.7 6379
mysql1 172.17.16.21 6379
mysql3 172.17.16.22 6379

#从服务器上

 vim /etc/redis.conf
 #做如下修改,其他配置保持默认即可
slaveof 172.17.16.7 6379
masterauth redispass
requirepass redispass

 #主服务器上
 vim /etc/redis.conf
 #做如下修改,其他配置保持默认即可
masterauth redispass
requirepass redispass

 #启动主、从
 #主16.7
 #redis-server /etc/redis.conf &
 #从16.21、16.22

#redis-server /etc/redis.conf &

 #主服务器显示
[13997] 03 Nov 09:57:21.045 * Slave ask for synchronization
[13997] 03 Nov 09:57:21.045 * Starting BGSAVE for SYNC
[13997] 03 Nov 09:57:21.046 * Background saving started by pid 14002
[14002] 03 Nov 09:57:21.058 * DB saved on disk
[14002] 03 Nov 09:57:21.059 * RDB: 0 MB of memory used by copy-on-write
[13997] 03 Nov 09:57:21.070 * Background saving terminated with success
[13997] 03 Nov 09:57:21.070 * Synchronization with slave succeeded

 #从服务器显示
[3496] 03 Nov 09:56:41.953 * Connecting to MASTER...[3496] 03 Nov 09:56:41.953 * MASTER <-> SLAVE sync started[3496] 03 Nov 09:56:41.954 * Non blocking connect for SYNC fired the event.[3496] 03 Nov 09:56:41.954 * Master replied to PING, replication can continue...[3496] 03 Nov 09:56:42.055 * MASTER <-> SLAVE sync: receiving 18 bytes from master[3496] 03 Nov 09:56:42.055 * MASTER <-> SLAVE sync: Loading DB in memory[3496] 03 Nov 09:56:42.055 * MASTER <-> SLAVE sync: Finished with success[3499] 03 Nov 09:56:42.056 * SYNC append only file rewrite performed[3499] 03 Nov 09:56:42.057 * AOF rewrite: 0 MB of memory used by copy-on-write[3496] 03 Nov 09:56:42.057 * Background append only file rewriting started by pid 3499[3496] 03 Nov 09:56:42.154 * Background AOF rewrite terminated with success[3496] 03 Nov 09:56:42.154 * Parent diff successfully flushed to the rewritten AOF (0 bytes)[3496] 03 Nov 09:56:42.154 * Background AOF rewrite finished successfully

 #主服务器查看主从信息
 #[root@php1 ~]# redis-cli -h 127.0.0.1 -a redispass info replication
# Replicationrole:masterconnected_slaves:2slave0:172.17.16.21,6379,onlineslave1:172.17.16.22,6379,online
 #从服务器查看主从信息
 #[root@mysql1 ~]# redis-cli -h 127.0.0.1 -a redispass info replication
# Replication
role:slave
master_host:172.17.16.7
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_priority:100
slave_read_only:1
connected_slaves:0

#写同步测试

 #主服务器
 [root@php1 ~]# redis-cli -h 127.0.0.1 -a redispass
redis 127.0.0.1:6379> set a 123
OK
redis 127.0.0.1:6379> get a
"123"

 #从服务器
 [root@mysql1 ~]# redis-cli -h 127.0.0.1 -a redispass
redis 127.0.0.1:6379> get a"123"

[root@mysql3 ~]# redis-cli -h 127.0.0.1 -a redispass

redis 127.0.0.1:6379> get a"123"
redis 127.0.0.1:6379> set b 234

(error) READONLY You can't write against a read only slave. (开起了只读模式,所以从将不能写入数据,可以保证数据只从主服务器同步至从服务器)

 #故障测试
 #从服务器宕机
 将自动从主服务器的主从关系中解除
 #主服务器宕机,从服务器显示,并且不能自动切换
[15932] 03 Nov 09:46:25.465 * Connecting to MASTER...[15932] 03 Nov 09:46:25.465 * MASTER <-> SLAVE sync started[15932] 03 Nov 09:46:25.466 # Error condition on socket for SYNC: Connection refused


5、Redis sentinel配置


主页地址:http://redis.io/topics/sentinel

sentinel主要功能就是为Redis M-S(master,slaves)集群提供了

1)master存活检测

2)集群中M-S服务监控

3) 自动故障转移,M-S角色转换等能力,

从一个方面说是提高了redis集群的可用性.

#添加并编辑配置文件/etc/sentinel.conf,新增内容如下,也可在安装文件中负责sentinel配置文件并作适当修改:
[root@php1 ~]# cat /etc/sentinel.conf

port 26379sentinel monitor mymaster 172.17.16.7 6379 2sentinel auth-pass mymaster redispasssentinel down-after-milliseconds mymaster 30000sentinel failover-timeout mymaster 900000sentinel can-failover mymaster yessentinel parallel-syncs mymaster 1

[root@mysql1 ~]# cat /etc/sentinel.conf

port 26479sentinel monitor mymaster 172.17.16.7 6379 2sentinel auth-pass mymaster redispasssentinel down-after-milliseconds mymaster 30000sentinel failover-timeout mymaster 900000sentinel can-failover mymaster yessentinel parallel-syncs mymaster 1

[root@mysql3 ~]# cat /etc/sentinel.conf

port 26579sentinel monitor mymaster 172.17.16.7 6379 2sentinel auth-pass mymaster redispasssentinel down-after-milliseconds mymaster 30000sentinel failover-timeout mymaster 900000sentinel can-failover mymaster yessentinel parallel-syncs mymaster 1

#在三个服务器中以sentinel模式启动redis-server
[root@php1 ~]# redis-server /etc/sentinel.conf --sentinel
[root@mysql1 ~]# redis-server /etc/sentinel.conf --sentinel
[root@mysql3 ~]# redis-server /etc/sentinel.conf --sentinel

#最后三台服务器sentinel输出如下:(注意每个机器输出对应的都是另外两台机器的IP)
#php1
[14047] 03 Nov 10:18:55.109 * +slave slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379[14047] 03 Nov 10:18:55.109 * +slave slave 172.17.16.21:6379 172.17.16.21 6379 @ mymaster 172.17.16.7 6379[14047] 03 Nov 10:19:42.272 * +sentinel sentinel 172.17.16.21:26479 172.17.16.21 26479 @ mymaster 172.17.16.7 6379[14047] 03 Nov 10:20:46.338 * +sentinel sentinel 172.17.16.22:26579 172.17.16.22 26579 @ mymaster 172.17.16.7 6379#mysql1[3512] 03 Nov 10:23:36.473 * +slave slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379[3512] 03 Nov 10:23:36.473 * +slave slave 172.17.16.21:6379 172.17.16.21 6379 @ mymaster 172.17.16.7 6379[3512] 03 Nov 10:23:40.446 * +sentinel sentinel 172.17.16.7:26379 172.17.16.7 26379 @ mymaster 172.17.16.7 6379[3512] 03 Nov 10:24:45.567 * +sentinel sentinel 172.17.16.22:26579 172.17.16.22 26579 @ mymaster 172.17.16.7 6379#mysql3[21428] 03 Nov 10:24:40.561 * +slave slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379[21428] 03 Nov 10:24:40.561 * +slave slave 172.17.16.21:6379 172.17.16.21 6379 @ mymaster 172.17.16.7 6379[21428] 03 Nov 10:24:41.367 * +sentinel sentinel 172.17.16.7:26379 172.17.16.7 26379 @ mymaster 172.17.16.7 6379[21428] 03 Nov 10:24:42.280 * +sentinel sentinel 172.17.16.21:26479 172.17.16.21 26479 @ mymaster 172.17.16.7 6379

#关掉mysql3上的redis-server服务
#每个sentinel将输出如下信息,表示认为slave 22已经宕机,剔除
[3512] 03 Nov 10:30:08.359 # +sdown slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379

#重新启动mysql3上的redis-server服务

#每个sentinel将输出如下信息,表示认为slave 22已经重新启动,新增到集群中
[3512] 03 Nov 10:31:28.901 * +reboot slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379[3512] 03 Nov 10:31:29.115 # -sdown slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379

#关掉主php1的redis-server服务
#将重新选举主服务器并重新配置连接到新的主服务器:
#php1上输出:
[14047] 03 Nov 10:29:49.888 # +sdown master mymaster 172.17.16.7 6379[14047] 03 Nov 10:29:51.188 # +odown master mymaster 172.17.16.7 6379 #quorum 3/2[14047] 03 Nov 10:29:59.189 # +failover-detected master mymaster 172.17.16.7 6379[14047] 03 Nov 10:29:59.689 * +slave-reconf-inprog slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379[14047] 03 Nov 10:30:00.789 * +slave-reconf-done slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379[14047] 03 Nov 10:30:00.888 # +failover-end master mymaster 172.17.16.7 6379[14047] 03 Nov 10:30:00.888 # +switch-master mymaster 172.17.16.7 6379 172.17.16.21 6379[14047] 03 Nov 10:30:00.990 * +slave slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.21 6379[14047] 03 Nov 10:30:01.058 * +sentinel sentinel 172.17.16.21:26479 172.17.16.21 26479 @ mymaster 172.17.16.21 6379[14047] 03 Nov 10:30:05.956 * +sentinel sentinel 172.17.16.22:26579 172.17.16.22 26579 @ mymaster 172.17.16.21 6379[14047] 03 Nov 10:30:30.988 # +sdown slave 172.17.16.7:6379 172.17.16.7 6379 @ mymaster 172.17.16.21 6379

#mysql1上输出:

[3512] 03 Nov 10:33:49.516 # +sdown master mymaster 172.17.16.7 6379
[3512] 03 Nov 10:33:49.716 # +odown master mymaster 172.17.16.7 6379 #quorum 3/2
[3512] 03 Nov 10:33:49.716 # +failover-triggered master mymaster 172.17.16.7 6379
[3512] 03 Nov 10:33:49.716 # +failover-state-wait-start master mymaster 172.17.16.7 6379 #starting in 8139 milliseconds
[3512] 03 Nov 10:33:57.893 # +failover-state-select-slave master mymaster 172.17.16.7 6379
[3512] 03 Nov 10:33:57.997 # +selected-slave slave 172.17.16.21:6379 172.17.16.21 6379 @ mymaster 172.17.16.7 6379
[3512] 03 Nov 10:33:57.997 * +failover-state-send-slaveof-noone slave 172.17.16.21:6379 172.17.16.21 6379 @ mymaster 172.17.16.7 6379
[3512] 03 Nov 10:33:58.101 * +failover-state-wait-promotion slave 172.17.16.21:6379 172.17.16.21 6379 @ mymaster 172.17.16.7 6379
[3496] 03 Nov 10:33:58.101 * MASTER MODE enabled (user request)
[3512] 03 Nov 10:33:58.741 # +promoted-slave slave 172.17.16.21:6379 172.17.16.21 6379 @ mymaster 172.17.16.7 6379
[3512] 03 Nov 10:33:58.741 # +failover-state-reconf-slaves master mymaster 172.17.16.7 6379
[3512] 03 Nov 10:33:58.849 * +slave-reconf-sent slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379
[3512] 03 Nov 10:33:58.957 * +slave-reconf-inprog slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379
[3496] 03 Nov 10:33:59.080 * Slave ask for synchronization
[3496] 03 Nov 10:33:59.080 * Starting BGSAVE for SYNC
[3496] 03 Nov 10:33:59.081 * Background saving started by pid 3515
[3515] 03 Nov 10:33:59.086 * DB saved on disk
[3515] 03 Nov 10:33:59.087 * RDB: 0 MB of memory used by copy-on-write
[3496] 03 Nov 10:33:59.188 * Background saving terminated with success
[3496] 03 Nov 10:33:59.189 * Synchronization with slave succeeded
[3512] 03 Nov 10:33:59.994 * +slave-reconf-done slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379
[3512] 03 Nov 10:34:00.093 # +failover-end master mymaster 172.17.16.7 6379
[3512] 03 Nov 10:34:00.093 # +switch-master mymaster 172.17.16.7 6379 172.17.16.21 6379
[3512] 03 Nov 10:34:00.194 * +slave slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.21 6379
[3512] 03 Nov 10:34:00.325 * +sentinel sentinel 172.17.16.7:26379 172.17.16.7 26379 @ mymaster 172.17.16.21 6379
[3512] 03 Nov 10:34:05.192 * +sentinel sentinel 172.17.16.22:26579 172.17.16.22 26579 @ mymaster 172.17.16.21 6379
[3512] 03 Nov 10:34:30.134 # +sdown slave 172.17.16.7:6379 172.17.16.7 6379 @ mymaster 172.17.16.21 6379

#mysql3上输出:

[21428] 03 Nov 10:33:49.343 # +sdown master mymaster 172.17.16.7 6379[21428] 03 Nov 10:33:49.543 # +odown master mymaster 172.17.16.7 6379 #quorum 2/2[21428] 03 Nov 10:33:58.896 # +failover-detected master mymaster 172.17.16.7 6379[21428] 03 Nov 10:33:59.836 * +slave-reconf-inprog slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379[21428] 03 Nov 10:33:59.836 * +slave-reconf-done slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.7 6379[21428] 03 Nov 10:33:59.940 # +failover-end master mymaster 172.17.16.7 6379[21428] 03 Nov 10:33:59.940 # +switch-master mymaster 172.17.16.7 6379 172.17.16.21 6379[21428] 03 Nov 10:34:00.045 * +slave slave 172.17.16.22:6379 172.17.16.22 6379 @ mymaster 172.17.16.21 6379[21428] 03 Nov 10:34:00.293 * +sentinel sentinel 172.17.16.21:26479 172.17.16.21 26479 @ mymaster 172.17.16.21 6379[21428] 03 Nov 10:34:00.325 * +sentinel sentinel 172.17.16.7:26379 172.17.16.7 26379 @ mymaster 172.17.16.21 6379[21428] 03 Nov 10:34:29.989 # +sdown slave 172.17.16.7:6379 172.17.16.7 6379 @ mymaster 172.17.16.21 6379

#查看主从关系:(mysql1为主,mysql3为从,如果php1重新启动,也将为从服务器加入到新的集群)
[root@mysql1 ~]# redis-cli -h 127.0.0.1 -p 6379 -a redispass info replication
# Replication
role:master
connected_slaves:1
slave0:172.17.16.22,6379,online

[root@mysql3 ~]# redis-cli -h 127.0.0.1 -p 6379 -a redispass info replication# Replicationrole:slavemaster_host:172.17.16.21master_port:6379master_link_status:upmaster_last_io_seconds_ago:1master_sync_in_progress:0slave_priority:100slave_read_only:1connected_slaves:0

#重新启动php1,检查mysql1的主从关系
[root@mysql1 ~]# redis-cli -h 127.0.0.1 -p 6379 -a redispass info replication
# Replication
role:master
connected_slaves:2
slave0:172.17.16.22,6379,online
slave1:172.17.16.7,6379,online

切换成功。

转载于:https://blog.51cto.com/mrcto/1319542

Redis 安装,主从配置及Sentinel配置自动Failover相关推荐

  1. 【Redis3】基于Redis sentinel的自动failover主从复制

    [Redis3]基于Redis sentinel的自动failover主从复制 在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入s ...

  2. Redis安装及HA(High Availability)配置

    Redis是一种内存数据库,以KEY-VALUE(即键值对)的形式存储数据.这篇文章主要介绍的是Redis安装及配置,所以不对Redis本身作详细介绍了. 下载: http://redis.io/do ...

  3. redis安装(主从)

    安装redis(主从) 安装 场景:一主两从 搭建redis-master: 127.0.0.1:6379 第一步:创建目录: mkdir redis-master 第二步:安装reids ​ 进入r ...

  4. Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:爱宝贝丶 my.oschina.net/zhangxufen ...

  5. 使用Sentinel配置Redis 3.x主从高可用服务

    Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实 ...

  6. Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置

    0x00 Redis简介 Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值 ...

  7. Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比(转)

    摘要: redis作为一种NoSql数据库,其提供了一种高效的缓存方案,本文则主要对其单例,主从模式,sentinel以及集群的配置方式进行说明,对比其优缺点,阐述redis作为一种缓存框架的高可用性 ...

  8. redis logfile 只读_docker 配置redis主从,哨兵sentinel

    注释:docker自行安装,主从使用一主两从,然后使用sentinel进行高可用配置,当主服务器挂掉,从服务器自动升为主服务器. 主从模式介绍 主从模式是三种模式中最简单的,在主从复制中,数据库分为两 ...

  9. Linux 安装Redis-6.2.5,配置及使用(RDB与AOF持久化、sentinel机制、主从复制、Spring Boot 集成 Redis)

    CentOS 7 安装Redis-6.2.5版本 Redis采用的是基于内存的单进程 单线程模型 的KV数据库,由C语言编写.官方提供的数据是可以达到100000+的qps 应用场景: 令牌(Toke ...

  10. Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比

    点击关注公众号,利用碎片时间学习 来源:blog.csdn.net/xsxy0506/article/details/117321181 redis作为一种NoSql数据库,其提供了一种高效的缓存方案 ...

最新文章

  1. 接口、类、抽象类、对象的另类解释
  2. python提取文件指定列_如何从csv文件中提取特定列并使用python绘图
  3. chart控件做实时曲线显示_Python 如何实时绘制数据
  4. 群晖218 当文件服务器,群晖218 家庭云服务器
  5. Mac如何设置intellij idea中文
  6. opencv函数速查笔记
  7. ARFoundation之路-人脸检测增强之一
  8. vue @cliick.stop @click.prevent @click.self
  9. 【software】常见流氓软件
  10. Django毕业设计题目推荐电影推荐系统
  11. 从零开始一起学slam--icp
  12. 基于Matlab的多普勒脉冲雷达回波仿真
  13. flutter坑奇遇记
  14. java gui pdf_java gui 程序设计基础.pdf
  15. java解应用题思路是什么_小学数学应用题解题策略归纳
  16. Amber中对体系的距离角度和二面角加以限制
  17. iOS抓包工具Charles基本抓包步骤
  18. 二进制转换为十六进制
  19. 什么是DDOS攻击?
  20. 怎么修改植物大战僵尸{不是修改器修改}

热门文章

  1. 转载于:http://blog.csdn.net/iorikyo/article/details/1314892
  2. 下载SAP标准教程的方法
  3. laravel 自带验证
  4. Java IO-InputStream家族 -装饰者模式
  5. mybatis实现延迟加载多对一
  6. HD 2177(威佐夫博弈 入门)
  7. Zend Studio主题的设置
  8. 房价增幅或于年底见顶
  9. mac 备份android 手机通讯录导入iphone,iphone如何导出通讯录(轻松教你iPhone备份通讯录的方法)...
  10. [转]自定义UITableView各种函数