redis集群

105813_NyHX_698806.png

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。集群的每个节点负责一部分hash槽。这种结构很容易添加或者删除节点,并且无论是添加删除或者修改某一个节点,都不会造成集群不可用的状态。使用哈希槽的好处就在于可以方便的添加或移除节点。当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了;当需要移除节点时,只需要把移除节点上的哈希槽挪到其他节点就行了;在这一点上,我们以后新增或移除节点的时候不用先停掉所有的 redis 服务。

1、集群至少要有3个节点,每个节点都有主从结构

mkdir /usr/data/redis/cluster

mkdir  6001 6002 6003 6004 6005 6006

cp redis.conf ../cluster/6001 

   改 1.端口2.pidfile 3.log 4.aof方式 5.redis cluster里注释去掉(cluster-enabled=yes  …)

******

连接 redis-cli  -c –h 192.168.1.1 –p 6001

cluster info 查看状态   没有成功

 redis-cli -c -h 192.168.1.1 -p 6001
192.168.1.1:6001> CLUSTER info
cluster_state:fail

2、安装ruby,必须2.0以上,2.0以上自带rubygems包管理器  yum install ruby

ruby的安装首先查看你的Linux系统是否安装了ruby可以用下面两个命令查询

rpm -qa | grep ruby

yum list | grep ruby

查看是否成功

ruby -v
输出 ruby 2.0.0p598 (2014-11-13) [x86_64-linux]

3、gem命令安装redis包,增加redis-trib.rb调用redis的接口包

           gem install redis

Fetching: redis-3.3.2.gem (100%)
Successfully installed redis-3.3.2
Parsing documentation for redis-3.3.2
Installing ri documentation for redis-3.3.2
1 gem installed
[root@iZ23pv5rps8Z cluster]# gem list

*** LOCAL GEMS ***

bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
psych (2.0.0)
rdoc (4.0.0)
redis (3.3.2)

 4、用redis-trib.rb集群工具管理redis集群

./redis-trib.rb create --replicas 1 192.168.1.1:6001 192.168.1.1:6003 192.168.1.1:6005 192.168.1.1:6002 192.168.1.1:6004 192.168.1.1:6006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.1:6001
192.168.1.1:6003
192.168.1.1:6005
Adding replica 192.168.1.1:6002 to 192.168.1.1:6001
Adding replica 192.168.1.1:6004 to 192.168.1.1:6003
Adding replica 192.168.1.1:6006 to 192.168.1.1:6005
M: 7cb7a99292c9bee9c09651d18744841af89f0857 192.168.1.1:6001
   slots:0-5460 (5461 slots) master
M: 21b83ea73203786d9057acfb06606594dbbd7e1b 192.168.1.1:6003
   slots:5461-10922 (5462 slots) master
M: 85d44c9015fd3901e31bee4cd98ac423ce62d943 192.168.1.1:6005
   slots:10923-16383 (5461 slots) master
S: d10d3aeee290382aca5c69476b17f9e3d2d3e73b 192.168.1.1:6002
   replicates 7cb7a99292c9bee9c09651d18744841af89f0857
S: a1d8a58b9bc5adea852c229656fa6eba3d63c706 192.168.1.1:6004
   replicates 21b83ea73203786d9057acfb06606594dbbd7e1b
S: 9adb885bf4e0cf9c5bf820b0a33e97f29d7396b9 192.168.1.1:6006
   replicates 85d44c9015fd3901e31bee4cd98ac423ce62d943
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 192.168.1.1:6001)
M: 7cb7a99292c9bee9c09651d18744841af89f0857 192.168.1.1:6001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 85d44c9015fd3901e31bee4cd98ac423ce62d943 192.168.1.1:6005
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 9adb885bf4e0cf9c5bf820b0a33e97f29d7396b9 192.168.1.1:6006
   slots: (0 slots) slave
   replicates 85d44c9015fd3901e31bee4cd98ac423ce62d943
S: d10d3aeee290382aca5c69476b17f9e3d2d3e73b 192.168.1.1:6002
   slots: (0 slots) slave
   replicates 7cb7a99292c9bee9c09651d18744841af89f0857
M: 21b83ea73203786d9057acfb06606594dbbd7e1b 192.168.1.1:6003
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: a1d8a58b9bc5adea852c229656fa6eba3d63c706 192.168.1.1:6004
   slots: (0 slots) slave
   replicates 21b83ea73203786d9057acfb06606594dbbd7e1b
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

 

--replicas 1 设置从节点个数

    进入集群模式去操作redis命令,-c集群模式

 redis-cli -c -h 192.168.1.1 -p 6001
192.168.1.1:6001>cluster info

# Keyspace
192.168.1.1:6001> cluster info
cluster_state:ok

192.168.1.1:6001> cluster nodes

85d44c9015fd3901e31bee4cd98ac423ce62d943 192.168.1.1:6005 master - 0 1479610282377 3 connected 10923-16383
9adb885bf4e0cf9c5bf820b0a33e97f29d7396b9 192.168.1.1:6006 slave 85d44c9015fd3901e31bee4cd98ac423ce62d943 0 1479610279369 6 connected
d10d3aeee290382aca5c69476b17f9e3d2d3e73b 192.168.1.1:6002 slave 7cb7a99292c9bee9c09651d18744841af89f0857 0 1479610282878 4 connected
21b83ea73203786d9057acfb06606594dbbd7e1b 192.168.1.1:6003 master - 0 1479610281373 2 connected 5461-10922
7cb7a99292c9bee9c09651d18744841af89f0857 192.168.1.1:6001 myself,master - 0 0 1 connected 0-5460
a1d8a58b9bc5adea852c229656fa6eba3d63c706 192.168.1.1:6004 slave 21b83ea73203786d9057acfb06606594dbbd7e1b 0 1479610280371 5 connected

搭建已完成

192.168.1.1:6001> set lisi lisi2
-> Redirected to slot [13215] located at 192.168.1.1:6005
OK
192.168.1.1:6005>  get lisi
"lisi2"

192.168.1.1:6005> set lisi2 lisi3
-> Redirected to slot [7849] located at 192.168.1.1:6003
OK
192.168.1.1:6003> get lisi2
"lisi3"

Redis 集群添加节点

主要是看现象,slots转移时,对应数据会有什么变化?

增加节点

./redis-trib.rb add-node 192.168.1.1:6007 192.168.1.1:6001

>>> Send CLUSTER MEET to node 192.168.1.1:6007 to make it join the cluster.
[OK] New node added correctly.

查看节点情况

cluster nodes

108a5fbc0a7898e8e2593abbeba0ce52ebd746b9 192.168.1.1:6007 master - 0 1479628890290 0 connected

移动哈希槽,哈希槽重新分配  数据块移动的时候数据也跟着移动到新节点

./redis-trib.rb reshard 192.168.1.1:6001

How many slots do you wan to move(from 1 to 16384)?1000

what is the receving node ID? 108a5fbc0a7898e8e2593abbeba0ce52ebd746b9

Type 'all' to use all...

Type 'done' once you ...?

Source node #1: all

输入all 表示从所有的主节点中随机转移,凑够xx个哈希槽

192.168.1.1:6001> CLUSTER nodes
7cb7a99292c9bee9c09651d18744841af89f0857 192.168.1.1:6001 myself,master - 0 0 1 connected 333-5460
21b83ea73203786d9057acfb06606594dbbd7e1b 192.168.1.1:6003 master - 0 1479629365349 2 connected 5795-10922
d10d3aeee290382aca5c69476b17f9e3d2d3e73b 192.168.1.1:6002 slave 7cb7a99292c9bee9c09651d18744841af89f0857 0 1479629370361 4 connected
a1d8a58b9bc5adea852c229656fa6eba3d63c706 192.168.1.1:6004 slave 21b83ea73203786d9057acfb06606594dbbd7e1b 0 1479629369357 5 connected
85d44c9015fd3901e31bee4cd98ac423ce62d943 192.168.1.1:6005 master - 0 1479629368355 3 connected 11256-16383
108a5fbc0a7898e8e2593abbeba0ce52ebd746b9 192.168.1.1:6007 master - 0 1479629366352 7 connected 0-332 5461-5794 10923-11255
9adb885bf4e0cf9c5bf820b0a33e97f29d7396b9 192.168.1.1:6006 slave 85d44c9015fd3901e31bee4cd98ac423ce62d943 0 1479629367354 6 connected

Redis集群删除节点

把hash slots转出来,转到其他master节点上

./redis-trib.rb reshard 192.168.1.1:6001

然后删除节点

./redis-trib.rb del-node 192.168.1.1:6007 108a5fbc0a7898e8e2593abbeba0ce52ebd746b9
>>> Removing node 108a5fbc0a7898e8e2593abbeba0ce52ebd746b9 from cluster 120.26.230.116:6007
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

Redis 监控工具

历史redis运行查询:CPU、内存、命中率、请求量、主从切换等

实时监控曲线

短信报警

使用基于开源Redis Live 修改工具,便于批量实例监控,基础功能都已实现,细节也将逐步完善。

源码地址如下:

https://github.com/LittlePeng/redis-monitor

223916_bL9y_2663968.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值