数察啜
2025-5-31 23:53:10
参考链接:https://blog.csdn.net/wcblog/article/details/142878308
在本文中,我们将详细介绍在 CentOS 7 上[安装 Redis](https://so.csdn.net/so/search?q=安装 Redis&spm=1001.2101.3001.7020) 7.4 集群的步骤。Redis 是一个高性能的内存数据库,而集群模式可以提供更高的可用性和扩展性。今天要分享的是使用2024年10月17日截止的最新的 Redis版本,我们将用最简单的方式搭建实战完整集群,其中包括主从部署、集群分片存储。
一、准备工作
确保你有三台 CentOS 7 服务器,可以通过 SSH 连接到这些服务器进行操作。
确保服务器上已经安装了必要的依赖项,如 gcc 和 tcl 。如果没有安装,可以使用以下命令进行安装:
如遇提示是否确认安装,输入 y ,然后 回车 。
二、下载和安装 Redis
1. 在每台服务器上下载 Redis 7.4 的安装包:
可以通过源码编译的方式,将 Redis 安装到 usr/local/redis 目录下:#创建redis目录 mkdir /usr/local/redis #进入该目录 cd /usr/local/redis/ #下载Redis 7.4 wget https://download.redis.io/releases/redis-7.4.0.tar.gz 复制代码 2. 解压压缩包:
tar -zxvf redis-7.4.0.tar.gz 复制代码 3. 进入解压后的目录:
4. 编译和安装 Redis:
三、配置 Redis 集群
1. 在每台服务器上创建一个专门用于存储 Redis 集群配置文件的目录:
2. 复制 Redis 配置文件到集群配置目录,并进行修改。以一台服务器为例:
cp redis.conf /etc/redis-cluster/redis-7400.conf cp redis.conf /etc/redis-cluster/redis-7401.conf 复制代码 使用 vim /etc/redis-cluster/redis-7400.conf 修改 redis-7400.conf 配置文件,加入以下配置:bind 0.0.0.0 requirepass N0yvE4Xmdocezqu6 protected-mode no port 7400 cluster-enabled yes cluster-config-file nodes-7400.conf cluster-node-timeout 5000 appendonly yes daemonize yes 复制代码
bind 0.0.0.0 :允许 Redis 服务器接受来自任何 IP 地址的连接请求。在生产环境中,谨慎使用这个设置,因为它可能会增加安全风险。可以考虑绑定到特定的 IP 地址或使用防火墙来限制对 Redis 服务器的访问。
requirepass 123456abc :设置 Redis 服务器的访问密码为 “123456abc”。
protected-mode no :关闭 Redis 服务器的保护模式,允许外部连接。在保护模式下,Redis 服务器只接受来自本地回环地址(127.0.0.1)、已绑定的 IP 地址或已配置的 Unix 域套接字的连接请求。
port 7400 :指定 Redis 服务器监听的端口为 7400。
cluster-enabled yes :启用 Redis 集群模式。Redis 服务器将作为集群的一部分运行,可以与其他节点协同工作,实现数据的分布式存储和高可用性。
cluster-config-file nodes-7400.conf :指定该节点在 Redis 集群中的配置文件名。这个文件将存储集群的节点信息、状态和配置等。每个节点都有自己的配置文件,文件名通常以节点的端口号或其他标识命名。在集群运行过程中不要手动修改配置文件,以免导致集群出现问题。
cluster-node-timeout 5000 :设置 Redis 集群节点超时时间为 5000 毫秒。当一个节点在指定的时间内没有响应时,其他节点将认为该节点出现故障,并进行相应的故障转移和重新配置。
appendonly yes :启用 AOF 持久化模式,将写命令追加到文件以保证数据持久化。AOF 持久化会增加磁盘 I/O 开销,并且可能会影响 Redis 的性能。根据应用的需求和对数据持久性的要求,权衡是否启用 AOF 持久化。同时,要定期备份 AOF 文件,以防止数据丢失。
daemonize yse : 后台运行
3. 配置其他服务器
重复上述步骤,为每台服务器上的不同 Redis 节点创建不同的配置文件,修改端口号和配置文件名称,最终完成6个节点配置(最少6个节点),即每台服务器有两个节点。#服务器A 192.168.117.128:7400 192.168.117.128:7401 #服务器B 192.168.117.129:7402 192.168.117.129:7403 #服务器C 192.168.117.131:7404 192.168.117.131:7405 复制代码 #服务器A 10.120.75.50:7400 10.120.75.50:7401 10.120.75.50:7402 #服务器B 10.120.75.51:7403 10.120.75.51:7404 10.120.75.51:7405 复制代码 四、启动 Redis 节点
在每台服务器上,分别使用不同的配置文件启动 Redis 节点。例如,在第一台服务器上:redis-server /etc/redis-cluster/redis-7400.conf redis-server /etc/redis-cluster/redis-7401.conf 复制代码 # 后台运行 nohup redis-server /etc/redis-cluster/redis-7400.conf & 复制代码 sudo nohup /home/ydroot/app/redis/redis-7.4.0/src/redis-server /etc/redis-cluster/redis-7400.conf 复制代码 五、创建 Redis 集群
在其中一台服务器上(比如服务器一),进入 [Redis 安装](https://so.csdn.net/so/search?q=Redis 安装&spm=1001.2101.3001.7020)目录的 src 目录下执行以下命令:redis-cli --cluster create 192.168.117.128:7400 192.168.117.128:7401 192.168.117.129:7402 192.168.117.129:7403 192.168.117.131:7404 192.168.117.131:7405 --cluster-replicas 1 -a 123456abc 复制代码 sudo redis-cli --cluster create 10.120.75.50:7400 10.120.75.50:7401 10.120.75.50:7402 10.120.75.51:7403 10.120.75.51:7404 10.120.75.51:7405 --cluster-replicas 1 -a N0yvE4Xmdocezqu6 复制代码 出现以下提示,输入 yes :Can I set the above configuration? (type 'yes' to accept): 复制代码
redis-cli --cluster create :使用 Redis 命令行客户端以创建集群的模式执行操作。
192.168.117.128:7400 192.168.117.128:7401 192.168.117.129:7402 192.168.117.129:7403 192.168.117.131:7404 192.168.117.131:7405 :指定要创建集群的 Redis 节点的 IP 地址和端口号。这里列出了六个节点,分布在三个不同的 IP 地址上,每个 IP 地址上有两个端口不同的节点,通常会被配置为三主三从的集群架构。
cluster-replicas 1 :表示为每个主节点创建一个从节点。
-a 123456abc :指定连接 Redis 时的密码。
六、测试 Redis 集群
进入 Redis CLI : 首先,使用 redis-cli 连接到你集群中的一个 Redis 节点。例如,你可以连接到 10.120.75.50:7400 节点(或集群中的任何一个节点):sudo redis-cli -h 10.120.75.50 -p 7400 复制代码 1. 使用 CLUSTER NODES 查看集群节点详细信息
得到如下信息,说明Redis集群搭建成功:7e4459532775b0b5b43f8ee516915508543f9ae7 192.168.117.128:7400@17400 master - 0 1729136577087 1 connected 0-5460 47840ce86f17af17f4b7d77c4dc209299dfe63ef 192.168.117.129:7403@17403 slave 7e4459532775b0b5b43f8ee516915508543f9ae7 0 1729136575000 1 connected 83f1b422afc4b6b1e9111aaf67dd3d8a980230c0 192.168.117.129:7402@17402 myself,master - 0 0 3 connected 5461-10922 d3427a92a210f78fa21740822a682c9ef0232541 192.168.117.128:7401@17401 slave a1edad65d10f0195e8109940152362fda9ce2ae3 0 1729136576583 5 connected a1edad65d10f0195e8109940152362fda9ce2ae3 192.168.117.131:7404@17404 master - 0 1729136576096 5 connected 10923-16383 37c4830e2b6b3105fa25b52f854d853c55f3d927 192.168.117.131:7405@17405 slave 83f1b422afc4b6b1e9111aaf67dd3d8a980230c0 0 1729136575062 3 connected 123456 复制代码 2. 设置和查看缓存
设置两个 key:查看 key:192.168.117.131:7404> get key1 -> Redirected to slot [9189] located at 192.168.117.129:7402 "value1" 192.168.117.129:7402> get key2 -> Redirected to slot [4998] located at 192.168.117.128:7400 "value2" 192.168.117.128:7400> get key3 "value3" 192.168.117.128:7400> get key4 -> Redirected to slot [13120] located at 192.168.117.131:7404 "value4" 复制代码 以上操作中,我们在任意一台集群中的节点上设置了4个key ,分别存储到了三个不同的主节点上,为什么会分生这种现象?这其实是因为 Redis 集群的 分片算法 。
七、深入Redis集群工作原理
分布式的 Redis 集群是使用 Redis 解决 高可用 和 可扩展性 的 最终解决方案 :
1. 高可用性
如果其中一台服务器出现故障,集群仍然可以正常运行。例如,假设服务器一出现故障,服务器二和服务器三上的 Redis 节点可以继续处理请求,保证服务不中断。
当某台服务器的某个节点失效时,集群会自动进行故障转移。比如,一个主节点故障,其对应的从节点会被提升为主节点,继续提供服务。
2. 可扩展性
可以随着业务的增长轻松添加更多的节点。如果数据量和请求量增加,可以在不影响现有服务的情况下,添加新的服务器和 Redis 节点到集群中。
能够处理更大的负载,提高系统的整体性能。
3. 数据分布与缓存存储方式
Redis 集群采用哈希槽(Hash Slot)机制来分布数据。整个集群被划分为 16384 个哈希槽,每个节点负责一部分哈希槽。
例如:
以上集群示例中,有三个主节点:192.168.117.128:7400 ,192.168.117.129:7402 ,192.168.117.131:7404 ,每个主节点有一个从节点。
集群初始化时,会将 16384 个哈希槽分配给这三个主节点,主节点 7400 负责 0 - 5460 号哈希槽,主节点 7402 负责 5461 - 10922 号哈希槽,主节点 7404 负责 10923 - 16383 号哈希槽。
当有一个键值对需要存储时,Redis 会根据键的哈希值计算出对应的哈希槽。如果这个哈希槽属于节点 7400 负责的范围,那么这个键值对就会存储在节点 7400 上。 7400 是主节点,当有数据写入时,主节点会将数据 同步 到从节点,以实现数据备份。
这样的分布方式确保数据在集群中的各个节点上均匀分布,提高了存储容量和查询性能。同时,通过主从复制机制保证了数据的安全性和高可用性。
八、实战中的一些建议
如果可能,为 Redis 集群创建一个独立的网络环境,以减少与其他应用程序的网络干扰。
根据实际需求合理设置 Redis 的内存限制。避免内存不足导致的问题,同时也要考虑内存使用效率。
根据数据的重要性和性能要求选择合适的持久化策略,如 RDB (Redis Database)或 AOF (Append Only File)。可以结合使用两种策略以提高数据的安全性。
为每个主节点配置多个从节点,以提高数据的冗余性和可用性。当主节点出现故障时,多个从节点可以提供更快的故障转移。上文中每个服务器上有两个节点,即一主一从,这种方式只为示例讲解,实战中应该将主从节点分开。否则当这台服务器宕机时将造成部分分片不可用的状态。
band 后面尽量不使用 0.0.0.0,这样会带来一些风险,正确的做法是仅设置允许访问的IP。
监控 Redis 集群的关键指标,如内存使用情况、CPU 使用率、连接数、命令执行时间、节点状态等。可以使用 Redis 自带的监控命令或第三方监控工具,如 Prometheus 和 Grafana 。
设置合理的报警阈值,当监控指标超过阈值时及时发出报警。这可以帮助你快速发现问题并采取措施进行处理。
开启 Redis 的日志记录功能,以便在出现问题时进行故障排查。可以将日志发送到集中的日志管理系统进行分析。
使用防火墙或网络访问控制列表(ACL )限制对 Redis 端口的访问,只允许来自可信来源的连接。
定期对 Redis 集群进行备份,以防止数据丢失。可以使用 RDB 或 AOF 文件进行备份,并将备份存储在安全的位置。此外,也需要定期进行恢复测试,以确保备份的有效性和恢复过程的可靠性。这可以帮助你在实际发生故障时快速恢复数据。
结束语
Redis 7.4 集群搭建是一个复杂但重要的过程,首先要准备好三台或更多的服务器,确保安装必要的依赖并正确安装 Redis 7.4。接着,在每台服务器上创建合适的配置文件,开启集群模式、设置端口、配置持久化等参数,并启动 Redis 节点。然后,使用 redis-cli 命令并结合特定参数在其中一台服务器上创建集群,指定各个节点的 IP 地址和端口号,以及设置主从节点比例。创建完成后,可通过多种方式如 INFO 命令、第三方监控工具、日志监控和客户端监控来持续监测集群的健康状态。在实践中,要注重硬件和网络环境的可靠性、选择合适的 Redis 版本、优化配置参数、合理设置主从配置、建立完善的监控和报警机制、加强安全设置,并做好备份和恢复以及扩展性规划,以确保 Redis 7.4 集群的高可用性、高性能和数据安全性,为业务应用提供稳定可靠的缓存服务。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
相关推荐