• redis的集群


    高可用方案

    1、持久化

    2、高可用 主从复制 哨兵模式 集群

    主从复制: 主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用

    主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)

    缺陷:故障无法自动恢复,需要人工干预,写操作的负载均衡

    主从复制的工作原理
    主从复制的工作原理流程图

    1、建立连接:slave向主发送一个syn command(同步),请求和主节点建立连接

    2、主节点收到请求之后,他不管slave是第一次连接还是重新连接,主节点都会启动一个后台进程,执行BGSAVE,主节点会把所有修改数据记录的命令加载到缓存和数据文件之中

    3、数据文件创建完毕之后,master把数据文件传送给slave,slave会把这个数据文件,先保存到硬盘,然后再加载到内存

    主从复制实验

    架构(redis服务器)

    20.0.0.20 主

    20.0.0.21 从1

    20.0.0.22 从2

    1. 关闭防护墙和安全机制
    2. 主配置
    3. vim /etc/redis/6379.conf
    4. 监听地址为
    5. 0.0.0.0
    6. 700
    7. no改为yes
    8. 重启服务
    9. 配置从1
    10. vim /etc/redis/6379.conf
    11. 监听地址为
    12. 0.0.0.0
    13. 278
    14. replicaof 20.0.0.20 6379
    15. 700
    16. no改为yes
    17. 重启服务
    18. 配置从2
    19. vim /etc/redis/6379.conf
    20. 监听地址为
    21. 0.0.0.0
    22. 278
    23. replicaof 20.0.0.20 6379
    24. 700
    25. no改为yes
    26. 重启服务
    27. 主节点查看日志
    28. tail -f /var/log/redis_6379.log
    29. 所有服务器登录redis
    30. 在主创建set键值对,并在从上查看是否同步
    31. 从只能读
    32. 查看主从策略
    33. redis-cli info replication
    哨兵模式

    先有主从再有哨兵

    在主从复制的基础之上,实现主节点故障的自动切换

    哨兵模式的原理

    哨兵:是一个分布式系统,用于在主从结构之间,对每台redis的服务进行监控

    主节点出现故障时,从节点通过投票的方式选择一个新的master

    哨兵模式也需要三个节点

    哨兵模式的结构

    哨兵节点:监控,不存储数据

    数据节点:主节点和从节点,都是数据节点

    哨兵模式的工作机制流程图

    1、主从节点上都有哨兵

    2、主节点的哨兵监控从节点1和从节点2

    3、从节点1的哨兵监控主节点和从节点2

    4、从节点2的哨兵监控主节点和从节点1

    哨兵投票机制

    每个哨兵节点每隔一秒,通过ping命令方式,检测主从之间的心跳线,主节点在一定时间内没有回复或者回复了错误的信息,这个时候,哨兵就会主观的认为主节点下线了,超过半数的哨兵节点认为主节点下线了,这个时候才会认为主节点是客观下线了

    主节点选举过程

    哨兵节点通过raft算法(选举算法),每个节点共同投票选举出一个新的master,然后新的master实现主节点转移和故障恢复通知

    主节点的选举过程

    1、已经下线的从节点,不会被选为主节点

    2、选择配置文件当中,从节点优先级最高的replica-priority 100

    3、选择一个复制数据最完整的从节点

    1. 主节点
    2. cd /opt/redis-5.0.7
    3. vim sentinel.conf
    4. 17
    5. 取消注释
    6. 关闭保护模式
    7. 26
    8. daemonize yes
    9. 后台运行
    10. 36
    11. logfile "/var/log/sentinel.log"
    12. 指定日志文件
    13. 65
    14. dir "var/lib/redis/6379"
    15. 数据库存放路径
    16. 84
    17. sentinel monitor mymaster 20.0.0.20 6379 2
    18. 2表示至少需要2台服务器,认为主已经下线,才会进行主从切换
    19. 113
    20. sentinel down-after-milliseconds mymaster 30000
    21. 判断时间周期30秒(最小)
    22. 从节点1
    23. cd /opt/redis-5.0.7
    24. vim sentinel.conf
    25. 17
    26. 取消注释
    27. 关闭保护模式
    28. 26
    29. daemonize yes
    30. 后台运行
    31. 36
    32. logfile "/var/log/sentinel.log"
    33. 指定日志文件
    34. 65
    35. dir "var/lib/redis/6379"
    36. 数据库存放路径
    37. 84
    38. sentinel monitor mymaster 20.0.0.20 6379 2
    39. 2表示至少需要2台服务器,认为主已经下线,才会进行主从切换
    40. 113
    41. sentinel down-after-milliseconds mymaster 30000
    42. 判断时间周期30秒(最小)
    43. 从节点2
    44. cd /opt/redis-5.0.7
    45. vim sentinel.conf
    46. 17
    47. 取消注释
    48. 关闭保护模式
    49. 26
    50. daemonize yes
    51. 后台运行
    52. 36
    53. logfile "/var/log/sentinel.log"
    54. 指定日志文件
    55. 65
    56. dir "var/lib/redis/6379"
    57. 数据库存放路径
    58. 84
    59. sentinel monitor mymaster 20.0.0.20 6379 2
    60. 2表示至少需要2台服务器,认为主已经下线,才会进行主从切换
    61. 113
    62. sentinel down-after-milliseconds mymaster 30000
    63. 判断时间周期30秒(最小)
    64. 先启动主节点,再启动从节点(在源码包下)
    65. redis-sentinel sentinel.conf &
    66. 查看整个集群的哨兵模式
    67. redis-cli -p 26379 info Sentinel
    模拟故障切换
    1. 查看主节点的进程号
    2. ps -elf | grep redis
    3. 主停服务
    4. 查看日志

  • 相关阅读:
    工作中规范使用Java集合
    Axure官网下载+使用技巧大揭秘,成为原型设计高手!
    web前端期末大作业 html+css+javascript防天天生鲜官网网页设计实例 企业网站制作
    怎么给字符串新增方法?
    你们还不知道这几个实用的思维导图app吗?
    ESP8266--SDK开发(系统任务)
    MySQL是如何保证主从一致的
    js基础之函数
    clickHouse基础语法
    Mistral 7B 比Llama 2更好的开源大模型 (三)
  • 原文地址:https://blog.csdn.net/qq_71147683/article/details/134550393