Redis高可用实验:主从复制+哨兵+集群

发布时间:2023年12月20日

实验零点五、Redis主从复制

——这个实验是后面实验的基础,所以称之为实验零点五

实验前准备
Master节点:192.168.188.14
Slave节点1:192.168.188.15
Slave节点2:192.168.188.16
关闭防火墙
systemctl stop firewalld
setenforce 0

  1. 安装Redis
    1. 安装依赖环境
      yum -y install gcc gcc-c++ make
    2. 安装软件
      cd /opt/redis-5.0.7/
      make
      指定目录
      make PREFIX=/usr/local/redis install
      cd /opt/redis-5.0.7/utils
      执行安装脚本
      ./install_server.sh
      一路回车,最后path改一下

      做一个软链接
      ln -s /usr/local/redis/bin/* /usr/local/bin
  2. 修改Master上的Redis配置文件
    1. 打开
      vim /etc/redis/6379.conf redis.conf
    2. 修改监听地址为0.0.0.0,即任意地

      开启守护进程

      指定日志文件目录

      指定工作目录

      开启AOF持久化功能
    3. 重启服务
      /etc/init.d/redis_6379 restart
  3. 修改Slave上的Redis配置文件
    1. 打开
      vim /etc/redis/6379.conf
    2. 修改监听地址

      开启守护进程

      指定日志文件目录

      指定工作目录

      指定要同步的Master节点的IP和端口

      开启AOF持久化功能
    3. 重启服务
      /etc/init.d/redis_6379 restart
  4. 验证
    1. 在Master节点上查看日志
      tail -20 /var/log/redis_6379.log
      20条应该能看到了,看不到就多看几条,能看到下面这样就行
    2. 在Master节点上验证从节点
      redis-cli info replication

实验一、Redis哨兵模式

——本实验建立在实验零点五的基础上,前面的配置过程请看上一个实验
实验前准备
Master节点:192.168.188.14
Slave节点1:192.168.188.15
Slave节点2:192.168.188.16
关闭防火墙
systemctl stop firewalld
setenforce 0

  1. 修改Redis哨兵模式的配置文件
    1. 进入
      vim /opt/redis-5.0.7/setinel.conf
    2. 三台节点配置相同,如下:
      关闭保护模式

      默认监听端口???????

      指定sentinel后台启动

      指定日志存放目录

      指定数据库存放路径

      指定该哨兵节点监控,指定192.168.188.14为主节点,节点名为mymaster,2表示至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移

      判定服务器down的时间周期,单位毫秒

      故障节点的最大超时时间,单位毫秒
    3. 启动哨兵模式
      先启动Master,再启动Slave
      cd /opt/redis-5.0.7/
      redis-sentinel sentinel.conf &
    4. 查看哨兵信息
      redis-cli -p26379 info Sentinel
  2. 故障模拟
    1. 先查看一下Master上的redis的进程号,方便一会杀掉
      ps -elf | grep redis

      第一个就是redis-server的进程号,直接杀掉
      kill -9 42014
    2. 验证结果
      tail -50 /var/log/sentinel.log

      这一长串看不懂没事,直接看一下哨兵信息,更加直观
      redis-cli -p 26379 info Sentinel
      能看到主节点地址已经更换了

实验一点五、Redis集群模式

——本实验需要6个节点,3主3从,但是考虑到我电脑性能,决定把6个服务部署在一台虚拟机上,并以端口号进行区分
实验前准备
主节点:192.168.188.14:6001、192.168.188.14:6002、192.168.188.14:6003
从节点:192.168.188.14:6004、192.168.188.14:6005、192.168.188.14:6006
关闭防火墙
systemctl stop firewalld
setenforce 0

  1. 准备6个服务
    创建6个目录
    cd /etc/redis
    mkdir -p redis-cluster/redis600{1..6}
    复制配置文件
    for i in {1..6}
    do
    cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$i
    cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$i
    done


  2. 开启集群功能
    1. 修改配置文件,每个服务的配置文件除了端口其他都一样
      cd /etc/redis/redis-cluster/redis6001
      vim redis.conf
      在这里把监听地址注释掉,默认监听所有网卡

      关闭保护模式

      改一下端口,注意端口要不一样

      开启守护进程

      取消注释,打开集群功能

      取消注释,设置集群文件的名称

      取消注释,设置集群超时时间

      开启AOF持久化
    2. 启动各个redis节点
      for d in {1..6}
      do
      cd /etc/redis/redis-cluster/redis600$d
      redis-server redis.conf
      done

      查看一下进程
      ps -elf | grep redis
    3. 启动集群
      我用的是同一台虚拟机的不同端口,所以写的是127.0.0.1:6001-6,如果用的是多台虚拟机,只要把127.0.0.1改成相应的IP,端口也改成相应的端口就行,replicas 1代表每个主节点有1个从节点
      redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1

  3. 测试
    1. 使用redis
      加-c节点之间就可以互相跳转
      redis-cli -p 6001 -c
      看一下节点的哈希槽编号范围
      cluster slots
    2. 读写测试
      写一条数据
      set name tangshihong

      提示我们写入了127.0.0.1:6002,同时也跳转到了127.0.0.1:6002
      我们退出
      quit
      去别的节点看一下
      redis-cli -p 6003 -c
      看一下当前节点的key值
      keys *

      看不到就是对的
文章来源:https://blog.csdn.net/qq_53772682/article/details/135088421
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。