当前位置: 首页 > news >正文

11.1Redis高可用集群部署

Redis高可用集群

主开启aof

一、主从复制

(一) 一主一从

1.修改配置文件版

replicof {masterHost} {masterPort}

#从
[root@web1 ~]# yum install -y redis
#修改配置文件
[root@web1 ~]# vim /etc/redis.conf 
#关闭保护模式
protected-mode no
#修改登录地址
#bind 127.0.0.1 -::1
bind 192.168.157.169 #从自己的
#开启replicaof 设置master密码
# replicaof <masterip> <masterport>replicaof 192.168.157.168 6379# masterauth <master-password>masterauth 123.com[root@web1 ~]# systemctl start redis#数据同布[root@web1 ~]# redis-cli -h 192.168.157.169
192.168.157.169:6379> keys *
1) "z"
2) "a"
3) "bbb"
4) "kk"
5) "v"
6) "m"
2.slaveof命令
#主有密码的情况下
#从不用修改配置文件
192.168.157.169:6379> slaveof 192.168.157.168 6379
OK
192.168.157.169:6379> config set masterauth 123.com
OK
192.168.157.169:6379> info
...
# Replication
role:slave
master_host:192.168.157.168 
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_read_repl_offset:1722
slave_repl_offset:1722
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:414177665a85393439e43298cd8c6bb03073aaa3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1722
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1695
repl_backlog_histlen:28
...
#
192.168.157.168:6379> SLAVEOF no one
OK
192.168.157.169:6379> info
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:d346dee05895dad40b48259f7bf53bbc29c82212
master_replid2:414177665a85393439e43298cd8c6bb03073aaa3
master_repl_offset:2842
second_repl_offset:2843
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1695
repl_backlog_histlen:1148
[root@nfs-server ~]# redis-cli -h 192.168.157.168 -a 123.com info
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Server
redis_version:7.2.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:960574b97fce8453
redis_mode:standalone

(二)一主两从

主:192.168.157.168

从:192.168.157.169

从:192.168.157.181

#修改bind PROTECT-MODE replicaof
#关闭保护模式
protected-mode no
#bind 127.0.0.1 -::1
bind 192.168.157.169 #从自己的
#开启replicaof 设置master密码
# replicaof <masterip> <masterport>
replicaof 192.168.157.168 6379
# masterauth <master-password>
masterauth 123.com

(三)树状结构

主:192.168.157.168

redis-slave1:192.168.157.169

redis-slave2:192.168.157.181

#在上述基础上 从没设置密码  把一个变成另一个从的主 
[root@redis-slave2 ~]# vim /etc/redis.confreplicaof 192.168.157.169 6379#验证
[root@redis-slave2 ~]# redis-cli -h 192.168.157.181
192.168.157.181:6379> keys *
1) "z"
2) "a"
3) "aaaa"
4) "m"
5) "bbb"
6) "kk"
7) "v"
192.168.157.181:6379> info
....
# Replication
role:slave
#master_host:192.168.157.169
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_read_repl_offset:4270
slave_repl_offset:4270
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:414177665a85393439e43298cd8c6bb03073aaa3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4270
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:4117
repl_backlog_histlen:154
....
##测试
#主
[root@redis-master ~]# redis-cli -h 192.168.157.168
192.168.157.168:6379> keys *
(error) NOAUTH Authentication required.
192.168.157.168:6379> auth 123.com
OK
192.168.157.168:6379> keys *
1) "aaaa"
2) "m"
3) "a"
4) "bbb"
5) "v"
6) "kk"
7) "z"
192.168.157.168:6379> flushall
OK
192.168.157.168:6379> set a 1
OK
192.168.157.168:6379> set b 2
OK
192.168.157.168:6379> 
#新主
[root@redis-slave1 ~]# redis-cli -h 192.168.157.169
192.168.157.169:6379> keys *
1) "a"
2) "b"
#小从
[root@redis-slave2 ~]# redis-cli -h 192.168.157.181
192.168.157.181:6379> keys *
1) "b"
2) "a"

二、哨兵模式

redis-master:192.168.157.168

redis-slave1:192.168.157.169

redis-slave2:192.168.157.181

一主两从模式 都不设置密码(生成环境要设)

#每个节点启动一个redis进程一个哨兵进程
#####主
[root@redis-master ~]# vim /etc/redis.conf
#注解密码
#修改哨兵配置
[root@redis-master ~]# vim /etc/redis-sentinel.conf 
#后台运行
daemonize yes
#设置监控IP 端口号 从数量
sentinel monitor mymaster 192.168.157.168 6379 2
#启动哨兵
[root@redis-master ~]# systemctl start redis-sentinel.service
##检测是否启动
[root@redis-master ~]# netstat -anptu | grep redis
tcp        0      0 0.0.0.0:26379           0.0.0.0:*               LISTEN      43779/redis-sentine 
tcp        0      0 192.168.157.168:6379    0.0.0.0:*               LISTEN      43012/redis-server  
tcp        0      0 192.168.157.168:6379    192.168.157.168:58704   ESTABLISHED 43012/redis-server  
tcp        0      0 192.168.157.168:6379    192.168.157.168:58706   ESTABLISHED 43012/redis-server  
tcp        0      0 192.168.157.168:58704   192.168.157.168:6379    ESTABLISHED 43779/redis-sentine 
tcp        0      0 192.168.157.168:58706   192.168.157.168:6379    ESTABLISHED 43779/redis-sentine 
tcp6       0      0 :::26379                :::*                    LISTEN      43779/redis-sentine
###redis-slave1
[root@redis-slave1 ~]# vim /etc/redis-sentinel.conf
sentinel monitor mymaster 192.168.157.168 6379 2
[root@redis-slave1 ~]# vim /etc/redis.confreplicaof 192.168.157.168 6379[root@redis-slave1 ~]# systemctl restart redis-sentinel.service
[root@redis-slave1 ~]# systemctl restart redis
###redis-slave1
[root@redis-slave2 ~]# vim /etc/redis-sentinel.conf
sentinel monitor mymaster 192.168.157.168 6379 2
[root@redis-slave2 ~]# systemctl start redis-sentinel.service
[root@redis-slave2 ~]# systemctl restart redis
#验证
[root@redis-master ~]# redis-cli -h 192.168.157.168
192.168.157.168:6379> info
....
# Replication
role:master
connected_slaves:2
#slave0:ip=192.168.157.169,port=6379,state=online,offset=54518,lag=1
#slave1:ip=192.168.157.181,port=6379,state=online,offset=54663,lag=1
...

模拟故障转移

#停主服务
[root@redis-master ~]# systemctl stop redis
#slave1 变成主了
[root@redis-slave1 ~]# redis-cli -h 192.168.157.169
192.168.157.169:6379> info
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.157.181,port=6379,state=online,offset=199099,lag=1
#slave2验证
[root@redis-slave2 ~]# redis-cli -h 192.168.157.181
192.168.157.181:6379> info
# Replication
role:slave
master_host:192.168.157.169
###自动切换主节点成功
###此时在开启主服务  变成从了
[root@redis-master ~]# redis-cli -h 192.168.157.168
192.168.157.168:6379> info
# Replication
role:slave
master_host:192.168.157.169
master_port:6379
#宕掉现有主节点 大概率会回到以前主节点

三、cluster集群

#在上述实验基础上 一主两从配置还在 
#主从都停止 redis进程和哨兵进程
#三台都添加cluster配置
root@redis-master redis]# vim /etc/redis.conf
cluster-enabled yes
cluster-config-file nodes-6379.conf  最好绝对路径
cluster-node-timeout 15000
root@redis-master redis]# systemctl start redis
root@redis-master redis]# netstat -anptu | grep redis
tcp        0      0 192.168.157.168:16379   0.0.0.0:*               LISTEN      5402/redis-server 1 
tcp        0      0 192.168.157.168:6379    0.0.0.0:*               LISTEN      5402/redis-server 1 
#集群模式不需要手动配置主从
#关闭  从上的相关配置
[root@redis-slave ~]# vim /etc/redis.conf#replicaof 192.168.157.168 6379
http://www.lryc.cn/news/593365.html

相关文章:

  • Elastic Search 8.x 分片和常见性能优化
  • PHP 就业核心技能速查手册
  • windows docker-01-desktop install windows10 + wls2 启用
  • LangGraph教程6:LangGraph工作流人机交互
  • 博图SCL语言中常用运算符使用详解及实战案例(下)
  • LangGraph教程10:LangGraph ReAct应用
  • Python Pandas读取Excel表格中数据并根据时间字段筛选数据
  • 月舟科技近调记录
  • 网络爬虫概念初解
  • ndexedDB 与 LocalStorage:全面对比分析
  • C++数据结构————集合
  • 【Keil5-map文件】
  • 阿里云服务器 CentOS 7 安装 MySQL 8.4 超详细指南
  • c#泛型集合(ArrayList和List、Dictionary的对比)
  • 每日面试题09:进程、线程、协程的区别
  • 48Days-Day03 | 删除公共字符,两个链表的第一个公共结点,mari和shiny
  • 【每日算法】专题十五_BFS 解决 FloodFill 算法
  • HD Video Converter Factory pro 高清视频转换器 v27.7.0 绿色中文便携版
  • 【2025最新】 .NET FrameWork微软离线运行库合集,一键安装版
  • Spring之【AnnotatedBeanDefinitionReader】
  • 前端面试专栏-工程化:28.团队协作与版本控制(Git)
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现动物分类(C#源码,UI界面版)
  • Selenium 中 findElement 方法全解析:定位网页元素的 7 种方式
  • RPC(Remote Procedure Call,远程过程调用)介绍
  • 探秘边缘安全架构设计要点解析
  • 深入了解 find_element 方法:Web 自动化定位元素的核心​
  • Node.js特训专栏-实战进阶:17.会话管理与安全存储
  • 开发框架安全ThinkPHPLaravelSpringBootStruts2SpringCloud复现
  • SLAM中的非线性优化-2D图优化之激光SLAM基于优化的前端匹配(十八)
  • KVM中使用桥接模式.运维就业技术教程