在本文中,我们将详细介绍在 CentOS 7 上安装 Redis 7.4 集群的步骤。Redis 是一个高性能的内存数据库,而集群模式可以提供更高的可用性和扩展性。今天要分享的是使用2024年10月17日截止的最新的 Redis版本,我们将用最简单的方式搭建实战完整集群,其中包括主从部署、集群分片存储。
一、准备工作
确保你有三台 CentOS 7 服务器,可以通过 SSH 连接到这些服务器进行操作。确保服务器上已经安装了必要的依赖项,如 gcc 和 tcl。如果没有安装,可以使用以下命令进行安装:sudo yum install 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. 进入解压后的目录:
cd redis-7.4.0
4. 编译和安装 Redis:
make sudo make install
三、配置 Redis 集群
1. 在每台服务器上创建一个专门用于存储 Redis 集群配置文件的目录:
mkdir /etc/redis-cluster
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 123456abc protected-mode no port 7400 cluster-enabled yes cluster-config-file nodes-7400.conf cluster-node-timeout 5000 appendonly 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 文件,以防止数据丢失。 3. 配置其他服务器
重复上述步骤,为每台服务器上的不同 Redis 节点创建不同的配置文件,修改端口号和配置文件名称,最终完成6个节点配置(最少6个节点),即每台服务器有两个节点。
#服务器A192.168.117.128:7400192.168.117.128:7401#服务器B192.168.117.129:7402192.168.117.129:7403#服务器C192.168.117.131:7404192.168.117.131:7405
四、启动 Redis 节点
在每台服务器上,分别使用不同的配置文件启动 Redis 节点。例如,在第一台服务器上:
redis-server /etc/redis-cluster/redis-7400.conf redis-server /etc/redis-cluster/redis-7401.conf
五、创建 Redis 集群
在其中一台服务器上(比如服务器一),进入 Redis 安装目录的 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
出现以下提示,输入 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 集群
1. 使用 CLUSTER NODES 查看集群节点详细信息
CLUSTER NODES
得到如下信息,说明Redis集群搭建成功:
7e4459532775b0b5b43f8ee516915508543f9ae7 192.168.117.128:7400@17400 master - 0 1729136577087 1 connected 0-546047840ce86f17af17f4b7d77c4dc209299dfe63ef 192.168.117.129:7403@17403 slave 7e4459532775b0b5b43f8ee516915508543f9ae7 0 1729136575000 1 connected83f1b422afc4b6b1e9111aaf67dd3d8a980230c0 192.168.117.129:7402@17402 myself,master - 0 0 3 connected 5461-10922d3427a92a210f78fa21740822a682c9ef0232541 192.168.117.128:7401@17401 slave a1edad65d10f0195e8109940152362fda9ce2ae3 0 1729136576583 5 connecteda1edad65d10f0195e8109940152362fda9ce2ae3 192.168.117.131:7404@17404 master - 0 1729136576096 5 connected 10923-1638337c4830e2b6b3105fa25b52f854d853c55f3d927 192.168.117.131:7405@17405 slave 83f1b422afc4b6b1e9111aaf67dd3d8a980230c0 0 1729136575062 3 connected
2. 设置和查看缓存
设置两个 key:
set key1 value1
查看 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 个哈希槽,每个节点负责一部分哈希槽。
例如:
这样的分布方式确保数据在集群中的各个节点上均匀分布,提高了存储容量和查询性能。同时,通过主从复制机制保证了数据的安全性和高可用性。
八、实战中的一些建议
如果可能,为 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 集群的高可用性、高性能和数据安全性,为业务应用提供稳定可靠的缓存服务。
如果觉得本文能够帮到您,请关注?、点赞?、收藏?,让这份美好延续下去!
? 对技术管理感兴趣 请关注下方 ⬇ 【 技术管理修行】
过来人的建议:学习技术的同时每天学一点管理小知识,您不升职谁升职!~~