项目实践,Redis集群技术学习(五)

2022-02-15 15:55:24 浏览数 (1)

Redis.2.4 用 redis-trib.rb 搭建集群

(最新版本 redis5.0.4,不需要安装 ruby,直接创建集群即可)

redis-trib.rb 是采用 Ruby 实现的 Redis 集群管理工具。内部通过 Cluster 相关命令帮我们简化集群创建、检查、槽迁移和均衡等常见运维操作,使用之前需要安装 Ruby 依赖环境。下面介绍搭建集群的详细步骤。

1.Ruby 环境准备

安装 Ruby:

-- 下载 ruby

wget https:// cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz

-- 安装 ruby

tar xvf ruby-2.3.1.tar.gz

./configure -prefix=/usr/local/ruby

make

make install

cd /usr/local/ruby

sudo cp bin/ruby /usr/local/bin

sudo cp bin/gem /usr/local/bin

安装 rubygem redis 依赖:

wget http:// rubygems.org/downloads/redis-3.3.0.gem

gem install -l redis-3.3.0.gem

gem list --check redis gem

安装 redis-trib.rb:

sudo cp /{redis_home}/src/redis-trib.rb /usr/local/bin

安装完 Ruby 环境后,执行 redis-trib.rb 命令确认环境是否正确,输出如下:

# redis-trib.rb

Usage: redis-trib <command> <options> <arguments ...>

create host1:port1 ... hostN:portN

--replicas <arg>

check host:port

info host:port

从 redis-trib.rb 的提示信息可以看出,它提供了集群创建、检查、修复、均衡等命令行工具。这里我们关注集群创建命令,使用 redis-trib.rb create 命令可快速搭建集群。

2.准备节点

首先我们跟之前内容一样准备好节点配置并启动:

redis-server conf/redis-6481.conf

……

redis-server conf/redis-6486.conf

3.创建集群

启动好 6 个节点之后,使用 redis-trib.rb create 命令完成节点握手和槽分配过程,命令如下:

redis-trib.rb create --replicas 1 127.0.0.1:6481 127.0.0.1:6482 127.0.0.1:6483

127.0.0.1:6484 127.0.0.1:6485 127.0.0.1:6486

(redis.5.0 版本之后的用):redis-cli –cluster create 127.0.0.1:6481 127.0.0.1:6482

127.0.0.1:6483 127.0.0.1:6484 127.0.0.1:6485 127.0.0.1:6486 --cluster-replicas 1

--replicas 参数指定集群中每个主节点配备几个从节点,这里设置为 1。我们出于测试目的使用本地 IP 地址 127.0.0.1,如果部署节点使用不同的 IP 地址,redis-trib.rb 会尽可能保证主从节点不分配在同一机器下,因此会重新排序节点列表顺序。节点列表顺序用于确定主从角色,先主节点之后是从节点

>>> Creating cluster

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

127.0.0.1:6481

127.0.0.1:6482

127.0.0.1:6483

Adding replica 127.0.0.1:6484 to 127.0.0.1:6481

Adding replica 127.0.0.1:6485 to 127.0.0.1:6482

…….

Can I set the above configuration (type 'yes' to accept):

当我们同意这份计划之后输入 yes,redis-trib.rb 开始执行节点握手和槽分配操作,输出如下:

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join..

...忽略...

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

最后的输出报告说明:16384 个槽全部被分配,集群创建成功。这里需要注意给 redis-trib.rb 的节点地址必须是不包含任何槽/数据的节点,否则会拒绝创建集群。

0 人点赞