Redis系列学习(四)Redis Cluster搭建

news/2024/7/9 22:20:21 标签: redis, 集群

redis-cluster搭建">Redis Cluster搭建

  • 准备redis节点
  • 节点之间关联
  • 分配数据槽

redis节点">准备redis节点

  • Redis下载并解压

    redis是在3.0以后才支持集群部署,所以我这就简单了直接下载最新的版本来使用:http://download.redis.io/releases/redis-4.0.6.tar.gz(截止2017-12-18)。

tar zxf redis-4.0.6.tar.gz

  • Redis编译安装

cd redis-4.0.6
make & make install

  • Redis Cluster 配置

集群一般会有多个节点组成,节点数量一般会设置成6个才能确保高复用,
redis.conf文件中修改如下:

port 6379
daemonize yes (设置是否后台启动,默认为no)
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

其他配置和单机版的一致。

为了目录结构明了,我搭建的6个节点分别使用端口作为目录名,所以如下:

mv redis-4.0.6 6379
cp -r 6379 6380
cp -r 6379 6381
cp -r 6379 6382
cp -r 6379 6383
cp -r 6379 6384

各自修改redis.conf文件的信息,所不同的是port和nodes-6379.conf,都修改为一致的端口号即可。

  • 启动6个Redis

我们可以创建一个start-all.sh脚本用来启动所有redis服务器

redis-server 6379/redis.conf
redis-server 6380/redis.conf
redis-server 6381/redis.conf
redis-server 6382/redis.conf
redis-server 6383/redis.conf
redis-server 6384/redis.conf

可以通过查看日志看是否启动完成。

节点之间关联(meet)

节点之间关联是集群之间通信的第一步,可以使用命令发起: cluster meet ip port

127.0.0.1:6379> cluster meet 127.0.0.1 6380
OK

然后可以让所有的节点互相连接:

127.0.0.1:6379> cluster meet 127.0.0.1 6381
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6382
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6383
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6384
OK

用 cluster nodes命令可以查看所有集群已连接的节点

127.0.0.1:6379> cluster nodes
a81a469e72e5287e371245d4c447032280a43985 127.0.0.1:6380@16380 master - 0 1513590576000 3 connected
e330c5ee3fca8529b7a1a4b6b90e0681a5d94aba 127.0.0.1:6382@16382 master - 0 1513590576000 0 connected
6830059fe7cd9b0f485935b9675c7b99f0ea5ed5 127.0.0.1:6384@16384 master - 0 1513590577486 0 connected
288a76e10524bf1f8605ee25403b25f32a41357e 127.0.0.1:6379@16379 myself,master - 0 1513590576000 1 connected
492f1b479e90cd96c4428f7e847405f9e4432822 127.0.0.1:6383@16383 master - 0 1513590576477 4 connected
872c0fbc8945e1a598a03674bea2a8c978d1969e 127.0.0.1:6381@16381 master - 0 1513590576000 2 connected

这样集群就搭建完成,但是还无法进行工作。需要为节点分配槽后就可以工作了。

分配数据槽

先用cluster info查看下slots的情况

127.0.0.1:6379> cluster info
cluster_state:fail(不可用)
cluster_slots_assigned:0(暂无slotcluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:0
cluster_current_epoch:5
cluster_my_epoch:1
cluster_stats_messages_ping_sent:23
cluster_stats_messages_pong_sent:34
cluster_stats_messages_meet_sent:5
cluster_stats_messages_sent:62
cluster_stats_messages_ping_received:34
cluster_stats_messages_pong_received:28
cluster_stats_messages_received:62

分配槽空间,可以使用cluster addslots命令,我们按以下数据

redis-cli -p 6379 cluster addslots {0..5461}
OK
redis-cli -p 6380 cluster addslots {5462..10922}
OK
redis-cli -p 6381 cluster addslots {10923..16383}
OK

再通过 cluster info查看集群状态

127.0.0.1:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:5
cluster_my_epoch:1
cluster_stats_messages_ping_sent:5037
cluster_stats_messages_pong_sent:5092
cluster_stats_messages_meet_sent:5
cluster_stats_messages_publish_sent:45
cluster_stats_messages_sent:10179
cluster_stats_messages_ping_received:5092
cluster_stats_messages_pong_received:5042
cluster_stats_messages_publish_received:11
cluster_stats_messages_received:10145
127.0.0.1:6379> cluster nodes
a81a469e72e5287e371245d4c447032280a43985 127.0.0.1:6380@16380 master - 0 1513595690817 3 connected 5462-10922
e330c5ee3fca8529b7a1a4b6b90e0681a5d94aba 127.0.0.1:6382@16382 slave 288a76e10524bf1f8605ee25403b25f32a41357e 0 1513595691000 1 connected
6830059fe7cd9b0f485935b9675c7b99f0ea5ed5 127.0.0.1:6384@16384 slave 872c0fbc8945e1a598a03674bea2a8c978d1969e 0 1513595689808 5 connected
288a76e10524bf1f8605ee25403b25f32a41357e 127.0.0.1:6379@16379 myself,master - 0 1513595689000 1 connected 0-5461
492f1b479e90cd96c4428f7e847405f9e4432822 127.0.0.1:6383@16383 slave a81a469e72e5287e371245d4c447032280a43985 0 1513595691825 4 connected
872c0fbc8945e1a598a03674bea2a8c978d1969e 127.0.0.1:6381@16381 master - 0 1513595689000 2 connected 10923-16383

还有3个节点没有使用,之前设置的3个为主节点,所以剩下的3个设置为从节点,确保主节点异常时,从节点可以继续使用,确保功能正常。使用命令cluster replicate nodeid在从节点上执行即可。

localhost:~/Server/redis-cluster$ redis-cli -h 127.0.0.1 -p 6382 cluster replicate 288a76e10524bf1f8605ee25403b25f32a41357e
OK
localhost:~/Server/redis-cluster$ redis-cli -p 6383 cluster replicate a81a469e72e5287e371245d4c447032280a43985
OK
localhost:~/Server/redis-cluster$ redis-cli -p 6384 cluster replicate 872c0fbc8945e1a598a03674bea2a8c978d1969e

再使用cluster nodes可查看集群状态,这样3主3从的redis集群就搭建完成了。

redis-cluster关闭">Redis Cluster关闭

使用redis-cli shuwdown命令即可,但是需要添加-p来指定端口,如果集群是部署在不同机子上且使用默认端口6379,那就无需添加此参数。

redis-cli -p 6379 shuwdown save

http://www.niftyadmin.cn/n/1308093.html

相关文章

PNG图片压缩原理--屌丝的眼泪 #1

背景 今天凌晨一点,突然有个人加我的qq,一看竟然是十年前被我删掉的初恋。。。。 因为之前在qq空间有太多的互动,所以qq推荐好友里面经常推荐我俩互相认识。。。。谜之尴尬 同意好友申请以后,仔细看了她这十年间所有的qq动态和照…

Docker 学习记录(一)

Docker学习记录(一) 工作中计划使用Docker来部署项目,所以就看了看docker的知识,再此做一记录。 Docker 安装 这个安装可费老鼻子劲儿了,网上找了各种学习资料,发现各种不靠谱,只能硬着头皮去…

互联网巨头们的「中台战事」

与战略重组几乎同步,阿里、腾讯、百度、京东、美团等一众互联网巨头正纷纷加入“中台战事”。“中台”热度陡增的背后,是管理团队对企业未来深层次的忧虑。中台是应对大公司病的一剂良药吗? 文 | 李原 编辑 | 齐介仑 来源 | 中国企业家杂志…

Docker 学习记录(二)

Docker 国内镜像加速 使用docker中的一重大问题就是国外镜像很不稳定,而且国内经常连不上,所以就有了国内专有的镜像加速。 修改Docker配置 在 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。如果此文件不存在,需要自己手…

CentOS7 中MySQL5.7 安装

1. MySQL repo下载 需要到MySQL官网下载MySQL的yum repository: http://dev.mysql.com/downloads/repo/yum/. 我们使用的是CentOS7 所以下载这个: 使用rpm对下载的rpm文件进行安装: shell> sudo rpm -Uvh mysql80-community-release-…

知乎部署系统演进

应用部署是软件开发中重要的一环,保持快速迭代、持续部署,减少变更和试错成本,对于互联网公司尤为重要。本文将从部署系统的角度,介绍知乎应用平台从无到有的演进过程,希望可以对大家有所参考和帮助。 知乎部署系统由…

干货 | 为了让携程上万员工上好网,他们做了这些

作者简介 孙颖, 携程技术保障中心网络管理团队高级工程师。从事IT互联网网络运维工作十余年,目前负责IT网络及WiFi网络设计、建设及运维。 引言 随着移动互联网的飞速发展,WiFi也已经成为企业办公网络必不可少的基础设施。越来越多的企业对…

CentOS7中MySQL5.7 主主互备配置

CentOS7 中 MySQL 5.7 主主互备配置 ​ 先从MySQL对数据库复制的能力看,MySQL支持单向、异步的复制。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以…