用redis-trib.rb搭建redis集群
admin
2023-03-19 22:01:34
0

用redis-trib.rb搭建集群【常用方法】

  • redis-trib.rb 是采用Ruby实现的redis集群管理工具;

  • 内部通过Cluster相关命令进行简化集群创建、检查、槽乔伊和均衡等常见运维操作;

  • 使用之前需要安装Ruby依赖环境

1、Ruby环境准备
https://cache.ruby-lang.org/pub/ruby/2.3/【下载网址】

-- 下载ruby ---
cd /soft/tools
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.gz

-- 安装ruby ---
tar zxf ruby-2.3.4.tar.gz
cd ruby-2.3.4
./configure --prefix=/soft/ruby-2.3.4
make
make install
ln -s /soft/ruby-2.3.4 /soft/ruby
cd /soft/ruby
cp bin/ruby /usr/local/bin/
cp bin/gem /usr/local/bin/
[root@lbl ruby]# ll /usr/local/bin/{ruby,gem}
-rwxr-xr-x. 1 root root      548 Apr 21 00:42 /usr/local/bin/gem
-rwxr-xr-x. 1 root root 22306743 Apr 21 00:42 /usr/local/bin/ruby

-- 安装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-rb管理工具 ---
[root@test ruby]# cp /soft/tools/redis-3.2.0/src/redis-trib.rb /usr/local/bin/
[root@test ruby]# ll /usr/local/bin/{ruby,gem,*.rb}
-rwxr-xr-x. 1 root root      548 Apr 16 10:05 /usr/local/bin/gem
-rwxr-xr-x. 1 root root    60578 Apr 16 10:07 /usr/local/bin/redis-trib.rb
-rwxr-xr-x. 1 root root 22306727 Apr 16 10:05 /usr/local/bin/ruby
2、准备节点
-- 主节点
redis-server /soft/redis/cluster/7000/redis.conf &
redis-server /soft/redis/cluster/7100/redis.conf &
redis-server /soft/redis/cluster/7200/redis.conf &
-- 从节点
redis-server /soft/redis/cluster/7001/redis.conf &
redis-server /soft/redis/cluster/7101/redis.conf &
redis-server /soft/redis/cluster/7201/redis.conf &
3、创建集群

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

注意:指定 主从节点时,前三个为主节点;后三个为对应从节点

[root@test cluster]# redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7100 127.0.0.1:7101 127.0.0.1:7200 127.0.0.1:7300
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7100
Adding replica 127.0.0.1:7101 to 127.0.0.1:7000
Adding replica 127.0.0.1:7200 to 127.0.0.1:7001
Adding replica 127.0.0.1:7300 to 127.0.0.1:7100
M: b70ce6df43039cd8ef2004a031851668dfe51982 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 3300b8f899d7f369d7095025954f2069857801c0 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 085d2851ef195428786f7df14a2c00fedb6ccec9 127.0.0.1:7100
   slots:10923-16383 (5461 slots) master
S: 97cf943c9fac35520fdd9426e344f7b7cc390fb8 127.0.0.1:7101
   replicates b70ce6df43039cd8ef2004a031851668dfe51982
S: e2fae64bbac1fc28d66c4cb21c5be95be4ba8953 127.0.0.1:7200
   replicates 3300b8f899d7f369d7095025954f2069857801c0
S: 5207520b05fd05240a56d132bf90fa4e9dde97cb 127.0.0.1:7300
   replicates 085d2851ef195428786f7df14a2c00fedb6ccec9
Can I set the above configuration? (type 'yes' to accept): yes
>>> 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...
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: b70ce6df43039cd8ef2004a031851668dfe51982 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 3300b8f899d7f369d7095025954f2069857801c0 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 085d2851ef195428786f7df14a2c00fedb6ccec9 127.0.0.1:7100
   slots:10923-16383 (5461 slots) master
M: 97cf943c9fac35520fdd9426e344f7b7cc390fb8 127.0.0.1:7101
   slots: (0 slots) master
   replicates b70ce6df43039cd8ef2004a031851668dfe51982
M: e2fae64bbac1fc28d66c4cb21c5be95be4ba8953 127.0.0.1:7200
   slots: (0 slots) master
   replicates 3300b8f899d7f369d7095025954f2069857801c0
M: 5207520b05fd05240a56d132bf90fa4e9dde97cb 127.0.0.1:7300
   slots: (0 slots) master
   replicates 085d2851ef195428786f7df14a2c00fedb6ccec9
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
4、集群完整性检查

集群完整性是指所有的槽都分配到了存活的主节点上,只要16384个槽中有一个没有分配给节点则表示集群不完整;

可以使用redis-trib.rb check命令检测之前创建的两个集群是否成功,check命令只需要给出集群中任意一个节点地址就可以完成整个集群的检查工作;

-- 命令如下: --
redis-trib.rb check 127.0.0.1:7000
redis-trib.rb check 127.0.0.1:7100

-- 输出如下信息,提示集群所有的槽都已分配到节点 --
[root@test cluster]# redis-trib.rb check 127.0.0.1:7000
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: b70ce6df43039cd8ef2004a031851668dfe51982 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: e2fae64bbac1fc28d66c4cb21c5be95be4ba8953 127.0.0.1:7200
   slots: (0 slots) slave
   replicates 3300b8f899d7f369d7095025954f2069857801c0
S: 97cf943c9fac35520fdd9426e344f7b7cc390fb8 127.0.0.1:7101
   slots: (0 slots) slave
   replicates b70ce6df43039cd8ef2004a031851668dfe51982
M: 085d2851ef195428786f7df14a2c00fedb6ccec9 127.0.0.1:7100
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 5207520b05fd05240a56d132bf90fa4e9dde97cb 127.0.0.1:7300
   slots: (0 slots) slave
   replicates 085d2851ef195428786f7df14a2c00fedb6ccec9
M: 3300b8f899d7f369d7095025954f2069857801c0 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
5、总结
1.    建立集群主要步骤如下:
              ①  准备节点
              ②  节点握手【meet命令,是一个异步命令】
              ③  分配槽    【cluster addslots {number_start..number_end}】
2.    redis cluster 需要至少6个节点,3个主节点 +3个从节点
3.    主从节点必须为复制关系【cluster replicate 主节点ID 命令,建立复制关系】
4.    节点握手协议采用Gossip协议进行通信,通过meet命令建立握手关系,通过ping/pong命令保持正常通信
5.    加入到集群中的节点,在没有分配槽时,无法进行任何读写操作;

相关链接:

手动构建redis集群

redis集群【报错总结】

相关内容

热门资讯

五一票房冠军是惊悚片,“下沉市... 【文/新潮观鱼】今年“五一”档,有一个有意思的现象:一部看起来没有“爆款相”,演员和导演都没有很大票...
“几轮博弈后,特朗普发现:中国... 【文/观察者网 王一】当地时间5月9日,英国《金融时报》发长文分析称,在美国与中国围绕贸易、科技、地...
拒不付款,还对监控嚣张“比耶” 近日,广东梅州丰顺县一名男子加油逃单后,同行人对监控嚣张“比耶”。今天(5月10日),南都N视频记者...
演员张静初,面临被起诉 近日,多位在演员张静初直播间购买过“优思益”产品的网友表示,目前仍未拿到退款,陷入退货无门的境地。5...
90分钟16条,特朗普的社媒账... 周六下午,特朗普将他的Truth Social账号变成了“AI垃圾工厂”,在短短90分钟内发布了16...
我,22岁,确诊为“妈” 又是一年母亲节。每年今天,大家都试图再次看见母亲,讨论她们的付出与局限,以“成为母亲”为界限,划分她...
重达11000克拉!缅甸发现“... 【环球网报道】美国哥伦比亚广播公司、英国天空新闻网等媒体援引缅甸官方媒体8日消息报道称,缅甸发现一块...
玻璃缝隙漏水怎么处理 1、检查窗户玻璃附近墙体的防水层,重新做防水层。2、查找原先的密封物,检查门窗与墙体的密封度,如果密...
热水器侧面的缝隙漏水可以修好吗 问题:热水器侧面的缝隙漏水可以修好吗回答:如果热水器侧面出现缝隙漏水的情况基本上都是可以修好的。首先...
洗面盆和台面缝隙漏水怎么办 洗菜盆漏水的修补方法1、如果是洗菜盆和台面衔接松动:如果是因为洗菜盆安装时没安装好,与台面缝隙过大,...