Redis集群搭建

一般单台的Redis数据库大小最好不要操作20G,一般集群最少需要3个服务器。

环境配置

只配置从库,不用配置主库。

127.0.0.1:6379> info replication      # 查看当前库的信息
# Replication
role:master                           # 角色
connected_slaves:0                    # 从节点个数
master_failover_state:no-failover
master_replid:cc822729f96d08974bde288c5fee40ee290202ca
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>

复制3个配置文件,然后修改对应的信息。

  1. 端口
  2. pid名字
  3. log文件名字
  4. dump.rdb名字
[root@bogon redis]# redis-server redis79.conf
[root@bogon redis]# redis-server redis80.conf
[root@bogon redis]# redis-server redis81.conf

在这里插入图片描述

一主二从

默认情况下,每台Redis服务器都是主节点一般情况下只需要配置从节点

——————————————————————从节点1————————————————————————————
127.0.0.1:6380> slaveof 127.0.0.1 6379   # 配置为什么的从节点
OK
127.0.0.1:6380> info replication
# Replication
role:slave                    # 设置为了从节点
master_host:127.0.0.1         # 主节点ip
master_port:6379              # 主节点port
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:05bc74df00ced82a3616bbfa67f32a80895e5d2d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
——————————————————————————主节点—————————————————————————————
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=742,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=742,lag=0
master_failover_state:no-failover
master_replid:05bc74df00ced82a3616bbfa67f32a80895e5d2d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:742
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:742

真实生产环境中应该从配置文件中配置

具体细节

在这里插入图片描述
主机可以写,从机不能写只能读。主机中的所有信息和数据,都会自动被从机保存。
在这里插入图片描述
在这里插入图片描述
如果是使用命令行配置的主从,从机重启后不会默认回到之前的状态。

复制原理

Slave 启动成功连接到master后会发送一个sync同步命令。

Master收到后,启动后台的存盘进程,同时收集所有接收到的用于修改数据的命令,在后台执行完毕后,master将传输整个数据到文件到slave,并完成一次完全同步。

全量复制:Slave服务在接收到数据库文件后,将其存盘并加载到内存中。
增量复制:Master继续将新的所有搜集得到的修改命令依次传给slave,完成同步。
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。全部数据都会在从机中看到

层层链路

上一层M链接下一个S!
在这里插入图片描述
如果master节点宕机了,这个时候乣手动选择一个master出来替代slaveof no one使自己变成主机,但如果此时之前的master恢复了,就无法加入集群,又需要手动配置。

哨兵模式(自动选取master节点)

主从切换的方法是:当服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人文干预,通过哨兵模式可以解决这个问题。
哨兵模式:哨兵是一个独立的进程,作为进程,它独立运行。原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例
在这里插入图片描述

  • 配置哨兵配置文件 sentinel.conf
# sentinel monitor 被监控的名称 host port
# 1:主机宕机了,slave投票让谁接替成为主机,票数最多的,就会成为新的主机
sentinel monitor myredis 127.0.0.1 6379 1
  • 启动哨兵
[root@bogon redis]# redis-sentinel sentinel.conf
2533:X 12 Apr 2021 00:06:04.547 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2533:X 12 Apr 2021 00:06:04.547 # Redis version=6.2.1, bits=64, commit=00000000,                             modified=0, pid=2533, just started
2533:X 12 Apr 2021 00:06:04.547 # Configuration loaded
2533:X 12 Apr 2021 00:06:04.548 * Increased maximum number of open files to 1003                            2 (it was originally set to 1024).
2533:X 12 Apr 2021 00:06:04.548 * monotonic clock: POSIX clock_gettime
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 6.2.1 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 2533
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

2533:X 12 Apr 2021 00:06:04.551 # WARNING: The TCP backlog setting of 511 cannot                             be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 1                            28.
2533:X 12 Apr 2021 00:06:04.561 # Sentinel ID is b3ad3d79639539920d674586064c77a                            5d41d44f0
2533:X 12 Apr 2021 00:06:04.561 # +monitor master myredis 127.0.0.1 6379 quorum                             1
2533:X 12 Apr 2021 00:06:04.562 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ m                            yredis 127.0.0.1 6379
2533:X 12 Apr 2021 00:06:04.565 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ m                            yredis 127.0.0.1 6379

如果主机宕机了之后

在这里插入图片描述

如果主机此时又重启了:

在这里插入图片描述

优缺点

优点:

  • 哨兵集群,基于主从复制模式,所有的主从配置有点,它都具有
  • 主从可以切换,故障可以转移,系统的可用性可以更好
  • 哨兵模式是主从模式的升级,手动到自动

缺点:

  • Redis不好在线扩容,集群容量一旦达到上限,在线扩容十分麻烦
  • 实现哨兵模式的配置复杂,其中有很多选择

哨兵模式的全部配置

全部配置详解

《B站up主–狂神说java》总结记录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值