Redis集群

本文详细介绍了Redis集群的搭建过程,包括主从划分、端口分配、配置文件编辑等步骤,以及如何通过合理机制保证数据存储一致性,实现服务故障自动迁移。同时,提供了集群搭建常见问题的解决方案。

1 为什么要搭建集群

通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。
Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿。 由于内存大小的限制,使用一台
Redis 实例显然无法满足需求,这时就需要使用多台
Redis作为缓存数据库。但是如何保证数据存储的一致性呢,这时就需要搭建redis集群.采用合理的机制,保证用户的正常的访问需求.
采用redis集群,可以保证数据分散存储,同时保证数据存储的一致性.并且在内部实现高可用的机制.实现了服务故障的自动迁移.

2 集群搭建计划

主从划分:
3台主机 3台从机共6台 端口划分7000-7005

3 集群搭建

3.1 准备集群文件夹

3.1.1 准备集群文件夹

mkdir cluster

3.1.2 在cluster文件夹中分别创建7000-7005文件夹

mkdir 7000 7001 7002 7003 7004 7005

在这里插入图片描述

3.2 复制配置文件

说明:
将redis根目录中的redis.conf文件复制到cluster/7000/ 并以原名保存

cp redis.conf cluster/7000/

3.3 编辑配置文件

3.3.1 注释本地绑定IP地址

在这里插入图片描述

3.3.2 关闭保护模式

在这里插入图片描述

3.3.3 修改端口号

在这里插入图片描述

3.3.4 启动后台启动

在这里插入图片描述

3.3.5 修改pid文件

在这里插入图片描述

3.3.6 修改持久化文件路径

在这里插入图片描述

3.3.7 设定内存优化策略

在这里插入图片描述

3.3.8 关闭AOF模式

在这里插入图片描述

3.3.9 开启集群配置

在这里插入图片描述

3.3.10 开启集群配置文件

在这里插入图片描述

3.3.11 修改集群超时时间

在这里插入图片描述

3.4 复制修改后的配置文件

说明:将7000文件夹下的redis.conf文件分别复制到7001-7005中

[root@localhost cluster]# cp 7000/redis.conf  7001/
[root@localhost cluster]# cp 7000/redis.conf  7002/
[root@localhost cluster]# cp 7000/redis.conf  7003/
[root@localhost cluster]# cp 7000/redis.conf  7004/
[root@localhost cluster]# cp 7000/redis.conf  7005/

3.5 批量修改

说明:分别将7001-7005文件中的7000改为对应的端口号的名称,
修改时注意方向键的使用
在这里插入图片描述

3.6 通过脚本编辑启动/关闭指令

3.6.1 创建启动脚本 vim start.sh

在这里插入图片描述

3.6.2 创建关闭脚本 vim shutdown.sh

在这里插入图片描述

3.6.3 启动redis节点

sh start.sh

3.6.4 检查redis节点启动是否正常

在这里插入图片描述

3.7 创建redis集群

#5.0版本执行

redis-cli --cluster create --cluster-replicas 1 192.168.126.129:7000 192.168.126.129:7001 192.168.126.129:7002 192.168.126.129:7003 192.168.126.129:7004 192.168.126.129:7005

在这里插入图片描述
在这里插入图片描述

3.8 Redis集群高可用测试

3.8.1 关闭redis主机.检查是否自动实现故障迁移.

redis-cli -p 7000 shutdowni

3.8.2 再次启动关闭的主机.检查是否能够实现自动的挂载.

info replication

在这里插入图片描述

4 redis集群搭建问题解决方案

4.1 检查防火墙

firewall-cmd --state

在这里插入图片描述

4.2 检查配置文件

4.3 关闭所有的redis服务器

sh shutdown.sh

4.4 删除多余的文件 nodes.conf dump.rdb

[root@localhost cluster]# rm -rf 700*/dump.rdb
[root@localhost cluster]# rm -rf 700*/nodes.conf

4.5 重新启动服务器,之后执行挂载命令

### Redis 集群的搭建与配置 #### 一、Redis 集群简介 Redis 是一种高性能的键值存储系统,支持多种数据结构操作。通过集群模式可以实现分布式存储和高可用性。Redis 集群允许多个 Redis 实例协同工作,提供更高的吞吐量和更强的数据持久化能力。 --- #### 二、环境准备 在开始之前,需确认以下条件已满足: - 所有服务器的操作系统版本一致(如 CentOS 7 或 Windows),并安装了相同版本的 Redis 软件。 - 已关闭防火墙或开放必要的端口(默认 Redis 使用 6379 及其衍生端口)。 - 每台服务器上至少有两个 Redis 实例运行,分别作为主节点和从节点[^1]。 --- #### 三、具体步骤 ##### 1. 下载并解压 Redis 文件 下载指定版本的 Redis 压缩包(如 Redis 6.2.5 或更高版本),将其解压到目标路径下。例如,在 Linux 中执行以下命令: ```bash wget http://download.redis.io/releases/redis-6.2.5.tar.gz tar -zxvf redis-6.2.5.tar.gz cd redis-6.2.5 make ``` ##### 2. 创建多个实例目录 为每个 Redis 实例创建独立的工作目录,并复制 `redis.conf` 至对应文件夹中。例如: ```bash mkdir -p /service/redis/{6379,6380} cp redis.conf /service/redis/6379/ cp redis.conf /service/redis/6380/ ``` ##### 3. 修改配置文件 编辑每个实例下的 `redis.conf` 文件,设置不同的监听端口号和其他必要参数。以下是关键配置项: - 设置绑定 IP 地址:`bind 0.0.0.0` - 关闭保护模式:`protected-mode no` - 开启集群功能:`cluster-enabled yes` - 指定集群配置文件位置:`cluster-config-file nodes-{port}.conf` - 设定日志级别:`loglevel notice` ##### 4. 启动 Redis 实例 依次启动各个 Redis 实例。例如: ```bash redis-server /service/redis/6379/redis.conf redis-server /service/redis/6380/redis.conf ``` 如果是在多台物理机上部署,则需要远程登录每台机器重复上述过程[^2]。 ##### 5. 构建集群拓扑 利用 `redis-cli` 的集群管理工具完成初始化操作。假设当前存在六个节点分布在三台主机上,则可输入如下指令构建集群关系: ```bash redis-cli --cluster create \ 192.168.x.y:6379 192.168.x.z:6379 ... \ --replicas 1 ``` 其中 `--replicas` 参数表示每个主节点分配几个副本[^4]。 ##### 6. 验证集群状态 最后可以通过以下方式验证集群是否正常运作: ```bash redis-cli -c -h {任意IP} -p {任一口号} CLUSTER INFO CLUSTER NODES PING SET key value GET key ``` --- #### 四、注意事项 - 如果使用 Docker 容器来部署 Redis 集群,请确保容器间网络互通良好。 - 对于 Windows 平台上的开发测试场景,可通过批处理脚本来简化服务启动流程[^3]。 --- #### 五、示例代码片段 下面展示了一个简单的 Python 程序用于连接至 Redis 集群并向其中写入一条记录: ```python import redis r = redis.StrictRedisCluster(startup_nodes=[{"host": "127.0.0.1", "port": "6379"}], decode_responses=True) r.set('foo', 'bar') print(r.get('foo')) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值