redis03_redis 集群模式——主从模式、哨兵模式

一、 redids主从模式(master,slave)

  1.1 作用

  •    防止单点故障(一台redis宕机,整个redis不能用)
  •    可以进行读写分离(一台redis主机进行写操作,其他机子进行读操作),提高使用效率

  1.2 实现

   1.2.1 规划图

     

  1.2.2   原理

        

  1. 从服务器连接主服务器,发送 PSYNC(同步) 命令;
  2. 主服务器接收到 PSYNC 命名后,开始fork子进程执行 BGSAVE 命令生成 RDB 文件并使用缓冲区记录此后执行的所有写命令;
  3. 主服务器 BGSAVE 执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
  4. 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  5. 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  6. 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

 1.2.3 主从模式的优缺点

      优点:1、master /slave 角色

                 2、master/slave 数据是同步

                 3、降低了master读压力 由从机分担

      缺点: 无法真正高可用(master一旦宕机,整个集群就无法进行写操作),所有的写操作都          是master进行,写操作无法负载均衡。

  1.2.4 具体配置

  1、在redis01的基础上克隆redis2,redis3,修改IP,修改主机名称,使用xshell连接

  2、修改网卡:

        vim /etc/sysconfig/network-scripts/ifcfg-ens33

        : 15      修改IP地址 192.168.XXX.XXX

  3、修改主机名称:

        vim /etc/hostname

  4、重新启动

        reboot

 5、使用xshell进行连接

1.2.5 主从配置: 

     1、在 redis1操作:     主

         cp /usr/redis/redis-5.0.5/redis.conf  /usr/redis/bin/master.conf

         vim /usr/redis/bin/master.conf

        :69      bind 192.168.140.41    绑定IP

        :92      port 6666                     实例端口号

        :136    daemonize yes            守护方式运行

     2、在 redis2操作:    从

         cp /usr/redis/redis-5.0.5/redis.conf  /usr/redis/bin/slave1.conf

        vim /usr/redis/bin/slave1.conf

        :69       bind 192.168.140.42               绑定IP

        :92       port 7777                                 实例端口号

        :136     daemonize yes                        守护方式运行

        G    slaveof 192.168.140.41 6666        在文件末尾配置当前实例是谁的从节点

    3、在 redis3操作:    从

     cp /usr/redis/redis-5.0.5/redis.conf  /usr/redis/bin/slave2.conf

     vim /usr/redis/bin/slave2.conf

     :69      bind 192.168.140.43           绑定IP

     :92      port 8888                             实例端口号

     :136    daemonize yes                    守护方式运行

      slaveof 192.168.140.41 6666         在文件末尾配置当前实例是谁的从节点

    4、启动测试:

      redis1启动:   主

       /usr/redis/bin/redis-server  /usr/redis/bin/master.conf

       /usr/redis/bin/redis-cli -h 192.168.140.41 -p 6666

       set bbb 222 成功

     redis2启动:  从

      /usr/redis/bin/redis-server  /usr/redis/bin/slave1.conf

      /usr/redis/bin/redis-cli -h 192.168.140.42 -p 7777

      set bbb 222 错误 slave不可以写

     redis3启动:   从

      /usr/redis/bin/redis-server  /usr/redis/bin/slave2.conf

      /usr/redis/bin/redis-cli -h 192.168.140.43 -p 8888

      set bbb 222 错误 slave不可以写

在 all session 输入 keys * 发现 三台 redis上都有bbb 说明主从同步成功

        info 显示当前redis实例运行情况

        info replication 显示主从角色信息

二、 哨兵模式

2.1  作用

        哨兵模式主要用来解决主从模式的无法高可用的缺点,当主机master宕机时,没有写节点的问题。当master宕机后,会从slave中选举一台做主节点,从而达到高可用的目的。

2.2  实现

        前提以主从为基础

2.2.1  规划图

2.2.2 原理图

 2.2.3  哨兵模式的优缺点

        优点: 1、保证高可用(除了切换主从的一瞬间,集群是高可用)

                    2、哨兵监控各个节点

                    3、自动故障迁移

        缺点:主从模式,切换需要时间,切换期间,不能对外提供服务,没有解决 master 写的压力

 2.2.4 具体配置

  在3台redis 分别操作:

  cp /usr/redis/redis-5.0.5/sentinel.conf  /usr/redis/bin/sentinel.conf                

  分别修改

  vim /usr/redis/bin/sentinel.conf

  #关闭保护模式 当开启保护模式的时候默认只能本机连

  :17        protected-mode no 

  #哨兵端口
  :21        port 26666      port 27777     port 28888

#添加守护进程模式

  :26        daemonize yes 

#添加指明日志文件名

  :36        logfile "./temp.log" 

#修改工作目录

  :65        dir "/tmp" 

#哨兵监控的master名称可以随便起,ip和端口固定 quorum 当哨兵是集群时,有多少个哨兵认为master失效(客观下线),master才算失效。 防止脑裂 配置计算最好是 哨兵总数量/2+1

  :84        sentinel monitor mymaster 192.168.140.41 6666 2 

#设置master和slaves验证密码

  :103      sentinel auth-pass mymaster 123passw0rd

#master(默认30秒)不能使用后标记为主观down状态。

  :113      sentinel down-after-milliseconds mymaster 30000 

2.2.5  启动哨兵,测试

        哨兵是以主从为基础,主从一定要先启动,并且保证主从正常!!!

1、分别在3台服务器上运行

      /usr/redis/bin/redis-sentinel /usr/redis/bin/sentinel.conf

2、查看哨兵进程:

      在allsession中输入:

      ps -ef |grep redis|grep -v grep

3、演示自动故障切换:

a.使用客户端连接3台服务器:

/usr/redis/bin/redis-cli  -h  192.168.170.31 -p 6666

/usr/redis/bin/redis-cli  -h  192.168.170.32 -p 7777

/usr/redis/bin/redis-cli  -h  192.168.170.33 -p 8888

b.在allsession中输入:

info replication 显示3台主机的主从状态 发现redis1是master     2和3是slave

c.让redis1的实例宕机:

shutdown 关闭服务器并保存数据

 ps -ef |grep redis|grep -v grep

等大约30秒 其中两个哨兵都在30连不上,分别认为是主观下线,当3个哨兵相互沟通后,就确定客观下线。

d. 在allsession中输入:

info replication  redis1宕机 发现redis3变为master redis2变为slave (master宕机后,在2、3随机选取一个作为master)

在新的master 执行写命令:

mset  aaa 111 bbb 222 ccc 333

e. 让redis1恢复正常:

/usr/redis/bin/redis-server /usr/redis/bin/master.conf

/usr/redis/bin/redis-cli  -h  192.168.140.41 -p 6666

在allsession中输入:

info replication 发现redis1 自动变为redis3从节点

keys * 发现redis1在宕机期间 redis3的写入内容,依然可以同步(遵循了主从同步原理)

宕机后从新启动的redis1由原来的master转变为slave   redis3由之前的一个slave变为两个

 重新启动的redis1 同步了redis3(master)书写的数据

 停止哨兵可以使用kill -9 命令

 先在allsession中输入:quit   退出    在执行   ps -ef |grep redis|grep -v grep

分别在redis1、redis2、redis3 使用 kill -9 xxx 杀死一个进程号

 在让redis3 宕机,等待30秒   发现redis1或redis2不会转变为master  在让redis3启动   redis3依旧为master

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸡本蔡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值