1.部署主从

环境:主IP:10.0.0.15,端口6379;从IP:10.0.0.16,端口6379.

原理:基于RDB持久化的功能来实现主从复制的功能.

a.linux-redis1(10.0.0.15)

cd /usr/local/redis/
grep "^[a-Z]" redis.conf # 列出几个修改过的配置
bind 10.0.0.15
protected-mode no
port 6379
daemonize yes
loglevel notice
logfile /usr/local/redis/logs/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
dir /data/redis

b.linux-redis2(10.0.0.16)

cd /usr/local/redis/
grep "^[a-Z]" redis.conf # 其余与上面的配置保持一致
bind 10.0.0.16
slaveof 10.0.0.15 6379 # 启动脚本
cat /usr/lib/systemd/system/redis.service IP=`ifconfig eth0 | awk -F"[ ]+" 'NR==2{print $3}'`
[Unit]
Description=The redis-server Process Manager
After=network.target [Service]
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf --daemonize no
ExecStop=/usr/local/redis/src/redis-cli -h $IP shutdown [Install]
WantedBy=multi-user.target systemctl daemon-reload
systemctl enable redis
systemctl start redis

c.测试

主redis上输入数据

从redis上获取数据

此时的从redis只能读取数据,不能写入,主redis宕机之后,也不能写入,手动切换:

主redis上输入shutdown,从redis上输入slaveof no one,就可以写入数据了;

此时如果有其他的从redis,则输入slaveof 10.0.0.16 6379即可更换主redis;

此时如果刚才宕掉的redis又恢复了,则还是输入slaveof 10.0.0.16 6379,由主变成从.

2.利用哨兵模式实现主从自动切换

cat sentinel.conf  # 当启动模式之后,这个配置文件中会自动增加从redis的信息
port 26379
dir "/tmp"
sentinel myid b84f8aea247ad5f7ea48c6a4921d0cca5ffc915f
sentinel monitor mymaster 10.0.0.15 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 18000 ./src/redis-sentinel sentinel.conf
# Sentinel ID is b84f8aea247ad5f7ea48c6a4921d0cca5ffc915f
# +monitor master mymaster 10.0.0.15 6379 quorum 1
* +slave slave 10.0.0.16:6379 10.0.0.16 6379 @ mymaster 10.0.0.15 6379
* +slave slave 10.0.0.17:6379 10.0.0.17 6379 @ mymaster 10.0.0.15 6379 # 配置文件中自动生成了这些内容
# Generated by CONFIG REWRITE
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-slave mymaster 10.0.0.16 6379
sentinel known-slave mymaster 10.0.0.17 6379
sentinel current-epoch 0

在10.0.0.15上停掉主redis:redis-cli -h 10.0.0.15 shutdown

主redis宕了,其余redis开始进行选举,在经过选举之后,其中的一个从redis会变为主redis,通过日志或者配置文件都可以看出来,此时谁是master.

cat sentinel.conf
port 26379
dir "/tmp"
sentinel myid b84f8aea247ad5f7ea48c6a4921d0cca5ffc915f
sentinel monitor mymaster 10.0.0.17 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 18000
# Generated by CONFIG REWRITE
sentinel config-epoch mymaster 1
sentinel leader-epoch mymaster 1
sentinel known-slave mymaster 10.0.0.15 6379
sentinel known-slave mymaster 10.0.0.16 6379
sentinel current-epoch 1 # 此时启动10.0.0.15上的redis,它也只能"俯首称臣"
convert-to-slave slave 10.0.0.15:6379 10.0.0.15 6379 @ mymaster 10.0.0.17 6379 # 在配置文件sentinel.conf中加上这三行比较合适
daemonize yes
protected-mode no
logfile "/var/log/sentinel.log"

Redis主从利用Keepalived自动切换:http://blog.51cto.com/tryingstuff/2093119

Redis主从复制、哨兵模式的更多相关文章

  1. 浅谈:redis的主从复制 + 哨兵模式

    浅谈:redis的主从复制 + 哨兵模式 主从模式 ​ 在谈论redis的主从复制之前,我们先回想下mysql的主从搭建过程,第一步呢首先要在主库服务器中修改my.cnf,开启一下bin_log功能, ...

  2. Redis进阶:Redis的哨兵模式搭建

    Redis进阶:Redis的哨兵模式搭建 哨兵机制介绍 单机版的Redis存在性能瓶颈,Redis通过提高主从复制实现读写分离,提高了了Redis的可用性,另一方便也能实现数据在多个Redis直接的备 ...

  3. Redis-Sentinel Redis的哨兵模式

    Redis-Sentinel Redis的哨兵模式Redis Sentinel 模式简介Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时, ...

  4. redis的哨兵模式

    我是在一台服务器上安装了三个redis  一主两从 想安装gcc gcc-c++ make tcl  lrzsz yum -y install gcc gcc-c++ make tcl  lrzsz ...

  5. redis主从+redis的哨兵模式

    三台机器分布 192.168.189.129  //  master的角色 192.168.189.130  //  slave1的角色 192.168.189.131  //  salve2的角色 ...

  6. redis主从+哨兵模式(借鉴)

    三台机器分布 192.168.189.129  //  master的角色 192.168.189.130  //  slave1的角色 192.168.189.131  //  salve2的角色 ...

  7. redis主从复制,哨兵以及集群搭建部署

    redis主从复制 1.redis支持多实例的功能,一台机器上,可以运行多个单个的redis数据库 环境准备,运行3个redis数据库,达到 1主 2从的配置 主库 6379.conf port 63 ...

  8. Redis sentinel 哨兵模式集群方案配置

    第一个方案是创建 redis cluster,第二种方案就是用哨兵模式来进行主从替换以及故障恢复.兵模式集群方案配置 一.sentinel介绍 Sentinel作用: 1):Master状态检测 2) ...

  9. Redis sentinel 哨兵模式

    一.sentinel介绍 Sentinel作用: 1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Maste ...

  10. redis架构~哨兵模式

    一 哨兵模式稳定版本  redis哨兵模式是redis自带的高可用框架,稳定版本为redis2.8以上二 哨兵模式建立  1 避免单点故障,建立启动多个哨兵进程  2 哨兵模式启动命令 redis-s ...

随机推荐

  1. 【Python】Django学习一:第一个Django程序

    项目开发环境 Python 3.6 Django 1.11.5 Django安装 在开始安装Django之前,Django更新比较频繁,所以要选择合适的版本,这里选择Django1.11.5. pip ...

  2. Python面试题(练习三)

    1.MySQL索引种类 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 2.索引在什么情况下遵循最左前缀的规则? 最左前缀原理的一部分,索引index1:(a,b,c),只会走a ...

  3. Nova 如何统计 OpenStack 资源

    1.云计算的本质在于将硬件资源软件化,以达到快速按需交付的效果,最基本的计算.存储和网络基础元素并没有因此改变.就计算而言,CPU.RAM 和 DISK等依旧是必不可少的核心资源. 从源代码和数据库相 ...

  4. [ecmanget][常用标签]bookmark

    Bookmarks Bookmarks 书签栏 redis Try RedisRedisRedis应用2-Redis实现开发者头条页面点赞功能 - noaman_wgs的博客 - CSDN博客wind ...

  5. jquery实现各种实例

    1.正反选实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  6. 重复造轮子系列--内存池(C语言)

    这个代码是我上个公司工作项目的里面内存管理(基于伙伴算法)的一个简化又简化的版本. 因为没有内存边界检查: 因为没有内存使用统计: 因为没有考虑线程安全: 因为没有内存分配操作的具体文件位置信息: 因 ...

  7. 第五章 Internet协议

    写在开头: 埋头学习也差不多半个月了,达到了这半个月每天都会去图书馆的目标.确实挺忙的,不管在学习上,部门社团上,党建上.有时候为了多学一些总是会挤掉了其他事情的一些时间.但是自己时刻提醒着自己不要太 ...

  8. synflood 模拟工具

    synflood 模拟工具 来源 https://blog.csdn.net/wuzhimang/article/details/54581117 因项目需要,要对主流的几家抗DDoS设备做测评,当然 ...

  9. [poj] 3690 Constellations || 矩阵hash

    原题 在大矩阵里找有几个小矩阵出现过,多组数据 将t个矩阵hash值放入multiset,再把大矩阵中每个hash值从multiset里扔出去,这样最后剩在multiset里的值就是没有找到的小矩阵, ...

  10. BZOJ3597 [Scoi2014]方伯伯运椰子 【二分 + 判负环】

    题目链接 BZOJ3597 题解 orz一眼过去一点思路都没有 既然是流量网络,就要借鉴网络流的思想了 我们先处理一下那个比值,显然是一个分数规划,我们二分一个\(\lambda = \frac{X ...