ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis-cluste

2021-09-20 11:04:52  阅读:194  来源: 互联网

标签:127.0 0.1 cluste redis cluster 7000 slots


环境: centos 7.9
ip: 192.168.138.21

Redis server v=4.0.8 

同步一台服务器上,指定不同的端口启动redis-server,redis.conf基础配置文件信息如下

# cat redis-7000.conf
port 7000
daemonize yes
logfile /applications/redis/redis-7000.log
dir /applications/redis/
dbfilename 7000-dump.rdb
cluster-enabled yes
# cluster-config-file nodes*.conf 名称要不一样
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
appendfilename "appendonly-7000.aof"

 

# 拷贝redis-7000.conf 至redis-7005.conf
[root@ansb01 redis]# cp redis-7000.conf redis-7001.conf
[root@ansb01 redis]# cp redis-7000.conf redis-7002.conf
[root@ansb01 redis]# cp redis-7000.conf redis-7003.conf
[root@ansb01 redis]# cp redis-7000.conf redis-7004.conf
[root@ansb01 redis]# cp redis-7000.conf redis-7005.conf

# 修改对应端口配置文件
[root@ansb01 redis]# sed -i 's/7000/7001/g' redis-7001.conf
[root@ansb01 redis]# sed -i 's/7000/7002/g' redis-7002.conf
[root@ansb01 redis]# sed -i 's/7000/7003/g' redis-7003.conf
[root@ansb01 redis]# sed -i 's/7000/7004/g' redis-7004.conf
[root@ansb01 redis]# sed -i 's/7000/7005/g' redis-7005.conf

分别启动不同端口服务,查看服务信息

# 查看redis
[root@ansb01 redis]# ps -ef|grep redis
root      5245     1  0 21:55 ?        00:00:01 ./bin/redis-server *:7000 [cluster]
root      5348     1  0 22:05 ?        00:00:00 ./bin/redis-server *:7001 [cluster]
root      5357     1  0 22:05 ?        00:00:00 ./bin/redis-server *:7002 [cluster]
root      5365     1  0 22:06 ?        00:00:00 ./bin/redis-server *:7003 [cluster]
root      5374     1  0 22:06 ?        00:00:00 ./bin/redis-server *:7004 [cluster]
root      5380     1  0 22:06 ?        00:00:00 ./bin/redis-server *:7005 [cluster]

 准备redis-trib.rb运行环境

 

wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz

yum -y install zlib-devel
tar xvf ruby-2.5.1.tar.gz

cd ruby-2.5.1/

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

make

make install

cd /usr/local/ruby/

cp bin/ruby /usr/local/bin

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

 

 redis-trib.rb支持的操作

 

   

[root@ansb01 src]# ./redis-trib.rb help
Usage: redis-trib <command> <options> <arguments ...>

  create          host1:port1 ... hostN:portN
                  --replicas <arg>
  check           host:port
  info            host:port
  fix             host:port
                  --timeout <arg>
  reshard         host:port
                  --from <arg>
                  --to <arg>
                  --slots <arg>
                  --yes
                  --timeout <arg>
                  --pipeline <arg>
  rebalance       host:port
                  --weight <arg>
                  --auto-weights
                  --use-empty-masters
                  --timeout <arg>
                  --simulate
                  --pipeline <arg>
                  --threshold <arg>
  add-node        new_host:new_port existing_host:existing_port
                  --slave
                  --master-id <arg>
  del-node        host:port node_id
  set-timeout     host:port milliseconds
  call            host:port command arg arg .. arg
  import          host:port
                  --from <arg>
                  --copy
                  --replace
  help            (show this help)

For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

  

支持的操作如下:

1. create:创建集群

2. check:检查集群

3. info:查看集群信息

4. fix:修复集群

5. reshard:在线迁移slot

6. rebalance:平衡集群节点slot数量

7. add-node:添加新节点

8. del-node:删除节点

9. set-timeout:设置节点的超时时间

10. call:在集群所有节点上执行命令

11. import:将外部redis数据导入集群

 

创建集群

 

如果您使用 Redis 5 或更高版本,这很容易实现,因为我们在 Redis Cluster 命令行实用程序的帮助下嵌入到 中redis-cli,可用于创建新集群、检查或重新分片现有集群等。

 

对于 Redis 版本 3 或 4,有一个redis-trib.rb非常相似的旧工具。您可以src在Redis源代码分发目录中找到它。您需要安装redisgem 才能运行redis-trib.

# 使用redis-trib.rb用于Redis的4或3型:
[root@ansb01 src]# ./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
>>> 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:7002
Adding replica 127.0.0.1:7004 to 127.0.0.1:7000
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7003 to 127.0.0.1:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 5cf0519f5067742f75bc84d3d9f6c6d9521fe95e 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 2f6aa651087e63d5e97a03b7cdd1917fe0010ffa 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: c56b3b07bec108fe51aa68214b93b4b0a6999798 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
S: 0ee1eac88e12ba1f0305f8adcb3f8212731a68cf 127.0.0.1:7003
   replicates 2f6aa651087e63d5e97a03b7cdd1917fe0010ffa
S: 5891169f86b44ac812fab99594d81bd9f8a3081c 127.0.0.1:7004
   replicates c56b3b07bec108fe51aa68214b93b4b0a6999798
S: 8fd12dd488bcd226202ffb0814f8c5d57b62ffb3 127.0.0.1:7005
   replicates 5cf0519f5067742f75bc84d3d9f6c6d9521fe95e
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: 5cf0519f5067742f75bc84d3d9f6c6d9521fe95e 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 5891169f86b44ac812fab99594d81bd9f8a3081c 127.0.0.1:7004
   slots: (0 slots) slave
   replicates c56b3b07bec108fe51aa68214b93b4b0a6999798
M: 2f6aa651087e63d5e97a03b7cdd1917fe0010ffa 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 8fd12dd488bcd226202ffb0814f8c5d57b62ffb3 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 5cf0519f5067742f75bc84d3d9f6c6d9521fe95e
M: c56b3b07bec108fe51aa68214b93b4b0a6999798 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 0ee1eac88e12ba1f0305f8adcb3f8212731a68cf 127.0.0.1:7003
   slots: (0 slots) slave
   replicates 2f6aa651087e63d5e97a03b7cdd1917fe0010ffa
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

  

# 查看集群信息
[root@ansb01 redis]# ./bin/redis-cli -p 7000 cluster info
cluster_state:ok                        # 状态为ok
cluster_slots_assigned:16384            # 标记slot共有16384    
cluster_slots_ok:16384                  # 已分配slot有16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6                   # 当前集群有6个节点        
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:576
cluster_stats_messages_pong_sent:603
cluster_stats_messages_sent:1179
cluster_stats_messages_ping_received:598
cluster_stats_messages_pong_received:576
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:1179


# 查看当前集群节点信息
[root@ansb01 redis]# ./bin/redis-cli -p 7000 cluster nodes
5891169f86b44ac812fab99594d81bd9f8a3081c 127.0.0.1:7004@17004 slave c56b3b07bec108fe51aa68214b93b4b0a6999798 0 1631718314377 5 connected
2f6aa651087e63d5e97a03b7cdd1917fe0010ffa 127.0.0.1:7001@17001 master - 0 1631718314000 2 connected 5461-10922
8fd12dd488bcd226202ffb0814f8c5d57b62ffb3 127.0.0.1:7005@17005 slave 5cf0519f5067742f75bc84d3d9f6c6d9521fe95e 0 1631718314000 6 connected
c56b3b07bec108fe51aa68214b93b4b0a6999798 127.0.0.1:7002@17002 master - 0 1631718314000 3 connected 10923-16383
5cf0519f5067742f75bc84d3d9f6c6d9521fe95e 127.0.0.1:7000@17000 myself,master - 0 1631718315000 1 connected 0-5460
0ee1eac88e12ba1f0305f8adcb3f8212731a68cf 127.0.0.1:7003@17003 slave 2f6aa651087e63d5e97a03b7cdd1917fe0010ffa 0 1631718315399 4 connected

  

 

标签:127.0,0.1,cluste,redis,cluster,7000,slots
来源: https://www.cnblogs.com/zhouzhiguo/p/15313858.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有