简单创建redis集群

1、注意事项
2、配置文件并启动6个redis实例
3、使用 redis-trib.rb 将节点加入集群
一、注意事项
redis3.0 以上版本官方才支持集群
集群至少需要 3 个节点,本例中是 3 主 3 从
需要安装ruby和ruby下的redis扩展
二、配置文件并启动6个redis实例
1、本例中使用满足集群搭建的最简单配置,需要配置的内容如下
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
masterauth passwd
requirepass passwd
2、在 /etc/ 下创建文件夹 redis-cluster, 然后在redis-cluster 下创建六个文件夹分别为
7000 7001 7002 7003 7004 7005
在文件夹 7000 至 7005 中, 各创建一个  redis.conf 文件, 文件的内容可以使用上面的示例配置文件, 但记得将配置中的端口号从7000 改为与文件夹名字相同的号码。nodes.conf不能相同(这一项可以不做设置,节点会自动根据节点ID创建)
3、最后分别启动redis节点
redis-server /etc/redis-cluster/7000/redis.conf           (启动7000节点)
查看6个节点已经成功启动

三、使用 redis-trib.rb 将节点加入集群
通过使用 Redis 集群命令行工具 redis-trib , 编写节点配置文件的工作可以非常容易地完成: redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。
1、redis-trib.rb 是一个ruby脚本,需要 ruby 环境
yum -y install ruby
2、redis-trib.rb 需要连接redis数据库,所以需要安装 ruby的redis扩展,使用gem进行安装, Gem是一个管理Ruby库和程序的标准包
gem insatll redis
3、redis 如果对所有人开放是一件非常危险且不明智的行为,在本例中我设置了需要认证才可以访问,而redis-trib.rb 命令似乎不支持密码(目前没发现),所以只能改ruby中的redis扩展包了
gem environment(查看gem的环境,为了找到ruby的redis扩展安装路径)

我机器上是这个目录
/usr/local/share/gems/gems/redis-3.3.3/lib/redis
打开client.rb 找到如下内容改成自己设置的密码就好

4、现在 redis-trib.rb 脚本就可以正常使用了执行如下命令创建集群
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
命令的意义如下:
给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。
选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。
接着, redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中
最后输出如下信息,表示集群创建成功
 >>>Checkforopen slots...
>>>Check slots coverage...
[OK] All 16384 slots covered.
参考了:
### 创建和配置 Redis 集群 #### 1. 主从模式配置 在主从模式下,Redis 的数据同步通过一个主节点(Master)和多个从节点(Slave)实现。以下是具体的配置方法: - **主节点配置** 编辑 `redis.conf` 文件,在主节点上启用持久化功能并指定端口号。例如: ```bash port 6379 save 900 1 save 300 10 rdbcompression yes dbfilename dump.rdb dir /var/lib/redis/ ``` 这些参数用于定义保存 RDB 文件的时间间隔以及存储路径[^1]。 - **从节点配置** 在从节点的 `redis.conf` 中添加以下内容来指向主节点: ```bash slaveof <master-ip> <master-port> ``` 替换 `<master-ip>` 和 `<master-port>` 为主节点的实际 IP 地址和端口。 - **测试主从复制** 启动主节点和服务后,可以通过向主节点写入键值对,并验证这些数据是否自动同步到从节点来进行测试。 #### 2. 集群模式配置 对于更复杂的场景,可以采用 Redis Cluster 架构支持分布式部署。以下是具体步骤: | 步骤 | 描述 | |------|------| | 引入依赖 | 如果是在 Java 应用程序中集成,则需加入 Maven 或 Gradle 的 Redis 客户端库,比如 Jedis 或 Lettuce [^2]。 | | 配置连接信息 | 设置 Redis 节点地址列表,通常以数组形式表示,形如 `[host:port, host:port,...]` 。 | | 配置集群节点信息 | 明确各分片的角色及其关联关系 。 | | 使用连接池管理资源 | 提高性能的同时减少频繁建立断开链接带来的消耗 [^2]。 | 实际命令行操作如下所示: ```bash # 初始化六个实例作为三个主节点加三个副本节点的基础环境 redis-server --cluster-enabled yes --port 7000 --cluster-config-file nodes_7000.conf --appendonly yes & ... redis-cli --cluster create 127.0.0.1:7000 ... 127.0.0.1:7005 --replicas 1 ``` 上述脚本会启动若干服务进程并将它们组合成一个完整的 cluster 实体。 #### 3. Scrapy 结合 Redis Sentinel 部署 当爬虫框架需要利用 Redis 做去重或者队列共享时,可借助哨兵机制进一步增强系统的可用性和稳定性。下面是一个简单的例子展示了如何继承自 `scrapy_redis_sentinel.RedisSpider` 类型完成定制化的 Spider 开发工作[^3]: ```python from scrapy_redis_sentinel.spiders import RedisSentinelSpider class ExampleSpider(RedisSentinelSpider): name = 'example' redis_key = 'myqueue:start_urls' def parse(self, response): yield {'url': response.url} ``` 此代码片段表明了怎样基于现有的 sentinel 支持扩展原有逻辑从而适应多机房跨区域协作的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值