上次教大家在linux中安装单机版本的redis: Linux安装Redis(图文解说详细版)
这次我们讲一下Linux安装redis的集群版本
文章目录
- 🌴准备redis环境
- 🌴第一步,下载redis
- 🌴第二步,传输到三台服务器中
- 🌴第三步,解压文件
- 🌴第四步,安装gcc环境
- 🌴第五步,编译
- 🌴第六步,安装
- 🌴主从复制集群搭建
- 🌴第一步,进入解压好的redis目录下
- 🌴第二步,编辑redis.conf文件
- 🌴第三步,防火墙放开端口
- 🌴第四步,启动三台机器
- 🌴第五步,连接redis查看状态
- 🌴第六步,验证是否搭建成功
- 🌴配置哨兵模式
- 🌴第一步,编写sentinel.conf文件
- 🌴第二步,防火墙放开端口
- 🌴第三步,启动哨兵
- 🌴第四步,查看哨兵状态
- 🌴springboot连接redis集群
Redis是一种基于内存的开源键值对存储系统,它常用于高性能的数据存储和缓存应用。在处理大量数据时,Redis可以显著提高应用程序的性能,而Redis集群则更进一步,可以实现数据的高可用性和负载均衡。在本文中,我们将探讨如何在Linux环境下搭建Redis集群,并介绍其中的主从集群和哨兵模式。
🌴准备redis环境
ip | 端口 |
---|---|
192.128.64.128 | 6379 |
192.128.64.129 | 6379 |
192.128.64.130 | 6379 |
🌴第一步,下载redis
官网地址:
https://redis.io/download/
🌴第二步,传输到三台服务器中
opt文件夹即可
🌴第三步,解压文件
tar -zxvf redis-6.2.12.tar.gz
三台机器都一样
🌴第四步,安装gcc环境
yum install gcc
三台机器都一样
🌴第五步,编译
进入解压好的文件夹里面,输入下面语句
make
三台机器都一样
🌴第六步,安装
进入src文件中进行安装,输入:
make install
三台机器都一样
🌴主从复制集群搭建
Redis的主从复制是指一个Redis服务器可以拥有多个从属服务器,这些从属服务器会自动复制主服务器的数据,保持与主服务器数据的同步。
主从集群的作用是提高Redis的可用性和性能。当主服务器崩溃时,可以使用从属服务器代替主服务器,提高系统的可用性。同时,由于从属服务器可以处理读请求,主服务器就可以专注于处理写请求,提高系统的性能。
他的图如下:主从结构+哨兵(sentinel)
🌴第一步,进入解压好的redis目录下
/opt/redis/redis-6.2.12
🌴第二步,编辑redis.conf文件
这里把001作为主机,002和003为从机
vim redis.conf
要改的内容如下
bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
requirepass:123456.com
masterauth:123456.com
bind:0.0.0.0
Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
port:6379
监听端口默认为6379,想改其他也行。
protected-mode:no
关闭保护模式,可以外部访问。
daemonize:yes
设置为后台启动。
requirepass:123456.com
设置 redis 连接密码。
masterauth:123456.com
slave 服务连接 master 的密码。
从机要改的如下
bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
requirepass:123456.com
masterauth:123456.com
replicaof 192.168.64.128 6379
replicaof 192.168.64.128 6379
指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。
🌴第三步,防火墙放开端口
firewall-cmd --add-port=6379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
🌴第四步,启动三台机器
进入src执行
./redis-server ../redis.conf
🌴第五步,连接redis查看状态
在src目录下输入:
./redis-cli -a 123456.com
接着输入
info replication
可以看到主机有两个从节点
这是Redis的主从配置的一个状态报告,其中:
- role:master 表示该节点是主节点。
- connected_slaves:2 表示有2个从节点连接到该主节点。
- slave0 和 slave1 表示从节点的信息,包括IP地址、端口号、状态、复制偏移量(offset)和延迟(lag)等信息。
- master_failover_state:no-failover 表示该主节点当前没有处于故障转移状态。
- master_replid 是主节点的当前复制ID。
- master_repl_offset 是主节点复制偏移量的当前值。
- repl_backlog_active:1 表示Redis正在使用复制缓冲区(replication backlog)来重放数据。
在主从配置中,主节点是数据的源头,从节点通过复制(replication)主节点的数据来实现数据的备份和高可用性。主节点和从节点之间的复制是异步的,从节点需要不断地从主节点复制数据来保持与主节点的数据一致性。当主节点发生故障时,可以通过从节点自动选举新的主节点来实现故障转移(failover),从而保证系统的可用性。
再看从机节点
这是一个Redis的从节点配置信息,可以看到以下信息:
- role: 当前节点的角色为slave,表示这是一个从节点。
- master_host: 从节点连接的主节点的IP地址。
- master_port: 从节点连接的主节点的端口号。
- master_link_status: 主从节点连接状态,up表示连接正常。
- master_last_io_seconds_ago: 从节点与主节点最后一次通信的时间,单位为秒。
- master_sync_in_progress: 当前是否正在进行同步操作。
- slave_read_repl_offset: 从节点上次读取数据的位置。
- slave_repl_offset: 从节点同步到的位置。
- slave_priority: 从节点优先级,用于选举主节点时的排序。
- slave_read_only: 从节点是否只读。
- replica_announced: 主节点是否已经宣告该从节点为它的副本。
- connected_slaves: 当前从节点连接的其他从节点数量。
- master_failover_state: 主节点故障转移状态,no-failover表示未发生故障转移。
- master_replid: 主节点的replication ID。
- master_repl_offset: 主节点当前的复制偏移量。
- repl_backlog_active: 是否开启了复制积压缓冲区。
- repl_backlog_size: 复制积压缓冲区的大小。
- repl_backlog_first_byte_offset: 复制积压缓冲区的起始位置。
- repl_backlog_histlen: 复制积压缓冲区当前保存的数据长度。
🌴第六步,验证是否搭建成功
我们在主节点设置一个值,看看从节点能否拿到值
主节点输入:
从节点输入:
成功拿到值!!
这个时候从节点是不能set值的:
(error) READONLY You can't write against a read only replica.
至此redis的主从集群就搭建完成
🌴配置哨兵模式
Redis哨兵模式是一种实现高可用性的Redis部署方案。在哨兵模式中,有一个或多个Redis Sentinel进程监控Redis Master和Slave进程的状态。如果Master进程发生故障,哨兵会自动将Slave升级为新的Master,并更新所有的Slave节点的配置,以确保数据的一致性和可用性。
哨兵模式的核心是Redis Sentinel进程,它是一种运行在独立进程中的轻量级程序,可以自动执行以下操作:
- 监控Redis Master和Slave进程的状态,如果Master进程出现故障,哨兵会自动将其中一个Slave升级为新的Master。
- 监控Redis Sentinel进程本身的状态,如果出现故障,其他哨兵会接管它的工作。
- 自动将新的Master节点信息更新到所有的Slave节点,以确保数据的一致性。
- 向客户端提供可用的Redis Master节点信息。
在哨兵模式中,客户端不需要知道Redis的实际架构,只需要知道哨兵的IP和端口即可。当客户端需要连接Redis时,它会向哨兵发送请求,哨兵会返回可用的Redis Master节点信息。如果当前的Master节点发生故障,哨兵会自动将其中一个Slave升级为新的Master,然后将新的Master节点信息更新到所有的Slave节点,以确保数据的一致性和可用性。
🌴第一步,编写sentinel.conf文件
设置为以下属性
//关闭保护模式,可以外部访问。
protected-mode:no
//设置为后台启动。
daemonize:yes
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 192.168.64.128 6379 2
//当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster 123456.com
三台机器都这么设置,不分主从
🌴第二步,防火墙放开端口
firewall-cmd --add-port=26379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
🌴第三步,启动哨兵
三个机器进入src目录,执行:
./redis-sentinel ../sentinel.conf
🌴第四步,查看哨兵状态
redis-cli -p 26379
info sentinel
这些是Redis Sentinel模式下的哨兵节点状态信息,具体含义如下:
- sentinel_masters:当前哨兵监控的主节点数量
- sentinel_tilt:哨兵是否发生了异常状态,如脑裂(split-brain)等,0表示未发生异常
- sentinel_running_scripts:当前哨兵正在运行的Lua脚本数量
- sentinel_scripts_queue_length:等待执行的Lua脚本数量
- sentinel_simulate_failure_flags:哨兵节点的模拟故障标识位
- master0:主节点的信息,包括节点名称、状态、IP地址和端口号、从节点数量和哨兵节点数量等。其中,name表示节点的名称,status表示节点的状态(ok表示正常,fail表示异常),address表示节点的IP地址和端口号,slaves表示从节点的数量,sentinels表示哨兵节点的数量。
我们模拟一下主节点宕掉了
这台是128服务器,我们去另外两台服务器上面看一下:
发现130变成了主节点
这个时候再启动128服务,发现他就变成了从节点了
至此哨兵模式模式我们搭建完成!!
🌴springboot连接redis集群
如果springboot要连接redis集群,就不能像单机那么填了,你需要填哨兵集群的ip和端口,配置如下:
#集群
spring.redis.sentinel.master=mymaster
spring.redis.password=123456.com
spring.redis.sentinel.nodes=192.168.64.128:26379,192.168.64.129:26379,192.168.64.130:26379
在本文中,我们介绍了Redis集群的主从集群和哨兵模式的搭建方法。通过这些方法,我们可以实现Redis的高可用性和负载均衡,确保在应用程序处理大量数据时的性能和稳定性。在实际应用中,可以根据自身的需求来选择合适的Redis集群架构,并进行相应的配置和优化,以达到更好的效果。
如果本文对你有帮助,博主希望得到你的一个点赞和收藏!!