linux Redis 5.0集群搭建

文档结构如下:

Redis cluster 是redis的分布式解决方案,在3.0版本正式推出后,有效的解决了redis分布式方面的需求;当遇到单机内存,并发,流量等瓶颈是,可以采用cluster架构方案达到负载均衡的目的。

官方网站:

https://redis.io/topics/cluster-tutorial

Redis数据分区

Redis cluster 采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:

Slot=CRC16(key)&16384。每个节点负责维护一部分槽以及槽所映射的键值数据。

redis群集中的每个节点都负责哈希槽的子集,例如,您可能拥有一个包含3个节点的群集,其中:

节点A包含从0到5500的散列槽。

节点B包含从5501到11000的散列槽。

节点C包含从11001到16383的散列槽。

由于我的环境只有三台服务器master 和slave为同一台,一台服务器,两张网卡。

Redis Cluster主从模型

为了在主节点子集发生故障或无法与大多数节点通信时保持可用,Redis Cluster使用主从模型,其中每个散列槽从1(主机本身)到N个副本(N) -1个额外的从节点)。

在具有节点A,B,C的示例群集中,如果节点B发生故障,则群集无法继续,因为我们不再能够在5501-11000范围内提供服务哈希位置的方法。

然而,当创建集群时(或稍后),我们向每个主节点添加一个从节点,以便最终集群由作为主节点的A,B,C和作为从节点的A1,B1,C1组成。 ,如果节点B出现故障,系统就能继续运行。

节点B1复制B,B失败,集群将节点B1升级为新的主节点,并将继续正常运行。

但请注意,如果节点B和B1同时发生故障,Redis Cluster将无法继续运行。

Redis群集配置参数

我们即将创建一个示例集群部署。在继续之前,让我们介绍Redis Cluster在redis.conf文件中引入的配置参数。有些人会很明显,有些人会在你继续阅读时更清楚。

cluster-enabled<yes/no>:如果是,则在特定Redis实例中启用Redis群集支持。否则,实例像往常一样作为独立实例启动。

cluster-config-file<filename>:请注意,尽管有此选项的名称,但这不是用户可编辑的配置文件,而是每次发生更改时Redis群集节点自动保持群集配置(基本上是状态)的文件,为了能够在启动时重新阅读它。该文件列出了集群中其他节点,状态,持久变量等内容。由于某些消息接收,通常会将此文件重写并刷新到磁盘上。

cluster-node-timeout<milliseconds>:Redis群集节点不可用的最长时间,不会被视为失败。如果主节点的可访问时间超过指定的时间,则其从属节点将进行故障转移。此参数控制Redis群集中的其他重要事项。值得注意的是,在指定时间内无法访问大多数主节点的每个节点都将停止接受查询。

cluster-slave-validity-factor<factor>:如果设置为零,则从站将始终尝试对主站进行故障切换,而不管主站和从站之间的链路是否保持断开连接的时间长短。如果该值为正,则计算最大断开时间作为节点超时值乘以此选项提供的因子,如果节点是从属节点,则如果主链接断开连接的时间超过指定的时间,则不会尝试启动故障转移。例如,如果节点超时设置为5秒,并且有效性因子设置为10,则从主设备断开超过50秒的从设备将不会尝试故障转移其主设备。请注意,如果没有从站能够对其进行故障转移,则任何不同于零的值都可能导致Redis群集在主站发生故障后不可用。在这种情况下,只有当原始主服务器重新加入群集时,群集才会返回。

cluster-migration-barrier<count>:主服务器将保持连接的最小从服务器数,以便另一个从服务器迁移到不再由任何从服务器覆盖的主服务器。有关详细信息,请参阅本教程中有关副本迁移的相应部分。

cluster-require-full-coverage<yes/no>:如果设置为yes,则默认情况下,如果任何节点未覆盖某个百分比的密钥空间,则集群将停止接受写入。如果该选项设置为no,即使只能处理有关键子集的请求,群集仍将提供查询。

a)   关闭防火墙

vi /etc/selinux/config

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

setenforce 0

service iptables stop

chkconfig iptables off

b)   三台服务器配置好yum

mount /dev/sr0 /mnt/

cd /etc/yum.repos.d/

mv redhat.repo redhat.repo.bak

mv rhel-source.repo rhel-source.repo.bak

vi /etc/yum.repos.d/rhel-debuginfo.repo

[rhel-debuginfo]

name=Red Hat Enterprise Linux $releasever - $basearch - Debug

baseurl=file:///mnt/

enabled=1

gpgcheck=0

安装yum:

yum -y install make gcc*  rubygems

由于需要安装ruby环境,所以采用yum安装

搭建集群

Redis-trib.rb是采用ruby实现的redis集群管理工具。内部通过cluster相关命令简化集群创建,检查,槽迁移和均衡等常见运维操作,使用之前需要安装Ruby依赖环境。

1、环境准备

下载ruby(5.0可以不用ruby):

最新为Ruby 2.6.0,地址:http://www.ruby-lang.org/zh_cn/downloads/

由于yum 安装的版本不符合要求

我单独下载的

tar -zxvf ruby-2.6.0.tar.gz

./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 依赖:

最新版本为4.1

https://rubygems.org/gems/redis/versions/4.1.0

cd /soft/

/usr/local/bin/gem install -l redis-4.1.0.gem

/usr/local/bin/gem list redis gem

安装redis5.0 单机

/soft/redis-5.0.0

make

make install

cd /soft/redis-5.0.0/src/

cp redis-cli redis-server ../redis.conf /usr/local/redis-cluster/redis6379

cp redis-cli redis-server ../redis.conf /usr/local/redis-cluster/redis6380

cp redis-cli redis-server ../redis.conf /usr/local/redis-cluster/redis6381

cp redis-cli redis-server ../redis.conf /usr/local/redis-cluster/redis6382

cp redis-cli redis-server ../redis.conf /usr/local/redis-cluster/redis6383

cp redis-cli redis-server ../redis.conf /usr/local/redis-cluster/redis6384

安装redis-trib.rb

cd /soft/redis-5.0.0/src

./redis-trib.rb –help

5.0 redis-cli --cluster

redis-cli --cluster help具有以下功能:

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数据导入集群

cp /soft/redis-5.0.0/src/redis-trib.rb /usr/local/bin/

准备目录:

mkdir –p /redis6379

mkdir –p /redis6380

mkdir -p /usr/local/redis-cluster/redis6379

mkdir -p /usr/local/redis-cluster/redis6380

cp

mkdir –p /redis6381

mkdir –p /redis6382

mkdir -p /usr/local/redis-cluster/redis6381

mkdir -p /usr/local/redis-cluster/redis6382

mkdir –p /redis6383

mkdir –p /redis6384

mkdir -p /usr/local/redis-cluster/redis6383

mkdir -p /usr/local/redis-cluster/redis6384

准备redis 集群配置文件:

redis6379.cnf

save 900 1

bind 0.0.0.0    --运行所有IP

daemonize yes

port 6379

loglevel warning

timeout 60

logfile "6379.log"

dbfilename dump6379.rdb

pidfile /var/run/redis_6379.pid

maxmemory-policy volatile-ttl

auto-aof-rewrite-min-size 10GB

cluster-enabled yes

cluster-node-timeout 15000

cluster-config-file nodes-6379.conf

protected-mode no   --让客户端都可以连接redis

其他节点按照6379进行相应的修改成对应的端口。

redis-server /usr/local/redis-cluster/redis6379/redis6379.conf

redis-server /usr/local/redis-cluster/redis6380/redis6380.conf

redis-server /usr/local/redis-cluster/redis6381/redis6381.conf

redis-server /usr/local/redis-cluster/redis6382/redis6382.conf

redis-server /usr/local/redis-cluster/redis6383/redis6383.conf

redis-server /usr/local/redis-cluster/redis6384/redis6384.conf

2、集群创建

例子:create创建集群

create命令可选replicas参数,replicas表示需要有几个slave。

在3.0每个有一个slave的集群的创建命令如下:

由于redis5.0版本与3.0差异很大

官方如下:

有两种方法:

方法一:

redis-cli --cluster create 172.16.10.21:6379 172.16.10.23:6381 172.16.10.25:6383 172.16.10.22:6380 172.16.10.24:6382 172.16.10.26:6384 --cluster-replicas 1

方法二:

/usr/local/bin/redis-trib.rb create --replicas 1 172.16.10.21:6379 172.16.10.23:6381 172.16.10.25:6383 172.16.10.22:6380 172.16.10.24:6382 172.16.10.26:6384

由于我的redis-trib.rb不可用。用的第一种方法。

3、查看集群信息

redis-cli -h 172.16.10.21 -p 6379 –c

cluster nodes

查看节点信息:

a1 这个槽位在10.25这台redis上。

查看集群信息

cluster info

查看集群完整性:

redis-cli --cluster check 172.16.10.21:6379

可以看出来,三个master 中的slots正好分配完16384个槽

原文地址:https://www.cnblogs.com/hmwh/p/10289138.html

时间: 2024-11-10 01:16:05

linux Redis 5.0集群搭建的相关文章

redis 5.0 集群搭建

今天主要分享一下 redis 3主3从 集群的搭建过程.redis经常用来做缓存,可以提升读取数据的速度,数据都是存在内存中的,采用 RDB 或者 AOF 持久化存储后便可以实时落地到硬盘.本次主要是3主3从.架构原理如下: 题图:来自于网络 图片中的每一个圆圈都代表一台服务器.客户端访问任何一台服务器便可以连通任何服务器.当老的主节点也就是 master 节点挂掉时,会进行重新选举,当半数以上的 master 节点投票出现失败状态时(也就是和该故障matser连不通),就会认为该 master

Redis进阶实践之十一 Redis的Cluster集群搭建

原文:Redis进阶实践之十一 Redis的Cluster集群搭建 一.引言 本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的所涉及到的概念做深入的探讨.本文只是针对如何设置集群.测试和操作集群做了简述,并且从用户的角度描述了系统的行为,并不涉及Redis集群规范中所包含的细节.但是,本教程试图从最终用户的角度来解释有关Redis的Cluster集群的可用性和一致性的特点,并以简单易懂的方式讲解. 请注意,本教程需要使用Redis 3.0版本或更高版本. 如果您打算部署

Redis 3.0集群(二)

在Redis 3.0集群(一)中讲了Redis集群的基本搭建.这一节主要讲对Redis集群的操作. 添加Master节点到集群 按照Redis集群一的方式,创建端口为7006的新实例,并启动该实例 将7006添加到集群: redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000 node:新节点没有包含任何数据, 因为它没有包含任何slot.新加入的加点是一个主节点, 当集群需要将某个从节点升级为新的主节点时, 这个新节点不会被选中. 给新节点分配

Ubuntu14.04下Hadoop2.2.0集群搭建

系统版本: master: Ubuntu 14.04  salve1: Ubuntu 14.04 hadoop: hadoop 2.2.0 1.系统配置以及安装SSH无密码登陆环境(master&slaves): 修改本机(master)和子节点(slaveN)机器名:打开/etc/hostname文件 sudo gedit /etc/hostname (修改后需重启才能生效) 修改host文件(映射各个节点IP): sudo gedit /etc/hosts 在后面添加内容为: 172.22.

Ubuntu 12.04下spark1.0.0 集群搭建(原创)

spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML.streaming.GraphX)以及对JAVA和Python语言的支持: 下面,我们首先进行spark1.0.0集群的安装,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机,增加更多的slave只需重复slave部分的内容即可.: 系统版本

Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)

现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机,增加更多的slave只需重复slave部分的内容即可. 系统版本: master:Ubuntu 12.04 slave:Ubuntu 12.04 hadoop:hadoop 2.2.0 安装ssh服务:sudo apt-get install ssh 有时也要更新一下vim:sudo apt-ge

redis3.0集群搭建

Redis集群搭建 redis cluster介绍 节点自动发现.集群容错slave选举.Cluster管理.集群配置管理. 集群中的每个Redis节点需要2个TCP连接端口,如6379端口用于Client连接,16379端口用于集群数据通信 集群采用Hash Slot方案,而不是一致性哈希,共16384个Hashslot.如果有3台机器,那么NodeA在0-5500,NodeB 在5501-11000,NodeC在11001-16384.这种设计下,添加,删除新Node比较方便. 由于Hash

Spark修炼之道(进阶篇)——Spark入门到精通:第一节 Spark 1.5.0集群搭建

作者:周志湖 网名:摇摆少年梦 微信号:zhouzhihubeyond 本节主要内容 操作系统环境准备 Hadoop 2.4.1集群搭建 Spark 1.5.0 集群部署 注:在利用CentOS 6.5操作系统安装spark 1.5集群过程中,本人发现Hadoop 2.4.1集群可以顺利搭建,但在Spark 1.5.0集群启动时出现了问题(可能原因是64位操作系统原因,源码需要重新编译,但本人没经过测试),经本人测试在ubuntu 10.04 操作系统上可以顺利成功搭建.大家可以利用CentOS

redis 主从备份服务器集群搭建

redis 主从备份服务器集群 由于redis是要自己手动编译的,我就不折腾了,刚好手上有windown 64位的,就拿来练练手,等哪天在服务器上搭建项目了再弄, 启动命令:redis-server  --port  端口 在window  下启动4个redis-server  服务,端口分别为:1000,2000,3000,4000,  这样也相当于开了4台redis 数据库服务器, 现在使用  redis-cli  -host server_ip  -p  端口   连接对应的服务器 注: