一.Redis Cluster简介

Redis Cluster集群是一种去中心化的高可用服务,其内置的sentinel功能可以提供高可用性:当集群中少数master不可用时,该集群仍可用。

Cluster集群通过哈希槽算法来分片存储数据。集群中有16384(0-16383)个哈希槽,通过CRC16算法对要存取的变量得出值,%16384 得到的余数存入相应的槽范围的主库,或从中取出。

客户端访问集群中的任意一台机器,都可以存取数据;访问集群中的从库时,数据存取时会连接主库再执行操作。从库会自动同步主库的数据。

二.部署

redis5版本以上的cluster集群不需要依赖ruby.生产环境中一个redis cluster集群最少需要6台机器(3主3从,3主6从,...),此次为测试环境,故选用三台机器,每台机器上启动两个服务。

环境说明:
系统:centos7.6
redis版本:5.0.8 服务器&&IP:
172.31.228.200:6379 172.31.228.200:6380 172.31.228.201:6379 172.31.228.201:6380 172.31.228.199:6379 172.31.228.199:6380

1.运行安装脚本(以172.31.228.200:6379为例,此为单机版安装脚本):

centos_version=7
password=5gUfpN1wgQr5t$e^nutaxKQp
private_ip=`ip a | grep eth0 | grep inet | awk '{print $2}' |awk -F / '{print $1}'`
config_file=/etc/redis.conf
port=6379 yum -y install gcc
yum install -y [http://rpms.famillecollet.com/enterprise/remi-release-${centos_version}.rpm](http://rpms.famillecollet.com/enterprise/remi-release-${centos_version}.rpm) yum --enablerepo=remi -y install redis #安装最新版本的redis
sed -i -r 69s/bind (.*)+/bind ${private_ip}/ ${config_file} #
sed -i 92s/6379/${port}/ ${config_file} #port
sed -i \'136s/no/yes/\' ${config_file} #daemonize
sed -i \'147s/no/systemd/\' ${config_file} #supervised 设置为systemd
sed -i 158s/6379/${port}/ ${config_file}
sed -i \'699s/no/yes/\' ${config_file} #appendonly
sed -i -r \'507s/^#(.*)+/\\1/\' ${config_file}
sed -i 507s/foobared/${password}/ ${config_file} #requirepass echo
rename-command CONFIG redis${port}config #重命名高危命令
rename-command SHUTDOWN redis${port}shutdown #重命名高危命令
rename-command FLUSHDB \'\' #禁用高危命令
rename-command FLUSHALL \'\' #禁用高危命令 >> ${config_file}
chmod 600 ${config_file} #修改配置文件的权限
sed -i \'12a Restart=always \' /usr/lib/systemd/system/redis.service #设置redis服务自动重启
sed -i \'13a StartLimitIntervalSec=0\' /usr/lib/systemd/system/redis.service #设置服务启动间隔时间为0
systemctl daemon-reload #重新加载systemd
systemctl start redis.service #启动服务
systemctl enable redis.service #设置开机自启

2.然后修改配置文件/etc/redis.conf

cluster-enabled yes #去掉注释
cluster-config-file nodes-6379.conf #去掉注释
cluster-node-timeout 15000 #去掉注释
masterauth 5gUfpN1wgQr5t$e^nutaxKQp #开启集群间密码验证

3.重启服务:

systemctl restart reids.service

其他五个节点按上述3个步骤进行(注意修改port,dir(创建数据库目录并修改权限),redis.conf名,pidfile, logfile, redis.service文件名及其内配置的启动命令)

接下来可在任意一个节点配置集群,集群设置方法有两种,

方法1:先指定主库,再添加从库到对应主库

三.创建主库

redis-cli --cluster create 172.31.228.200:6379 172.31.228.201:6379 172.31.228.199:6379 -a 5gUfpN1wgQr5t$e^nutaxKQp --cluster-yes

配置从节点

]# redis-cli --cluster add-node 172.31.228.200:6380 172.31.228.200:6379 --cluster-slave --cluster-master-id 19c5b8deaf079ebb9832b6eefefa74c0c05a18b2 -a \'5gUfpN1wgQr5t$e^nutaxKQp\'

]# redis-cli --cluster add-node 172.31.228.201:6380 172.31.228.201:6379 --cluster-slave --cluster-master-id 011326dd0ef2888e3ee8ed5590e5ee600dc96462 -a \'5gUfpN1wgQr5t$e^nutaxKQp\'

]# redis-cli --cluster add-node 172.31.228.199:6380 172.31.228.199:6379 --cluster-slave --cluster-master-id bfb1b52df455e9bbadeda19c16512f7378fd5e45 -a \'5gUfpN1wgQr5t$e^nutaxKQp\'

方法2:让集群自动分配主从

redis-cli --cluster create 172.31.228.200:6379 172.31.228.200:6380 172.31.228.201:6379 172.31.228.201:6380 172.31.228.199:6379 172.31.228.199:6380 --cluster-replicas 1 -a \'5gUfpN1wgQr5t$e^nutaxKQp\'

以上图片表示集群创建成功。

可登录集群查看节点信息

Note:以上slots经过reshard(具体操作如下:)

redis-cli --cluster reshard localhost:6379 --cluster-from d878b9824c97eab686a57403bbed3270b7cd98f9 --cluster-to 578ffc16a9780675d39e1ba9d48e91743a4a01cb --cluster-slots 100 -a '5gUfpN1wgQr5t$e^nutaxKQp'

测试master不可用时,slave晋升为新master,集群仍可用,旧master重启后会自动变成slave.(若集群中某个master节点和其对应的slave节点同时不可用时,则集群不可用;或者n/2+1个master不可用时,则集群不可用)。

Redis5.0.8 Cluster集群部署的更多相关文章

  1. centos6下redis cluster集群部署过程

    一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从 ...

  2. Centos 7 下 Mysql 5.7 Galera Cluster 集群部署

     一.介绍 传统架构的使用,一直被人们所诟病,因为MySQL的主从模式,天生的不能完全保证数据一致,很多大公司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获得数据一致性 ...

  3. MySQL Cluster 集群部署

    前言 此篇博客用以介绍 MySQL Cluster 集群部署方法 一.节点规划 序号 IP地址 节点名称 1 172.16.1.201 mysql-manage 2 172.16.1.202 mysq ...

  4. 2、Redis 底层原理:Cluster 集群部署与详解

    Redis 简介 Redis 提供数据缓存服务,内部数据都存在内存中,所以访问速度非常快. 早期,Redis 单应用服务亦能满足企业的需求.之后,业务量的上升,单机的读写能力满足不了业务的需求,技术上 ...

  5. k8s1.9.0安装--完整集群部署

    三.完整集群部署 - kubernetes-with-ca 1. 理解认证授权 1.1 为什么要认证 想理解认证,我们得从认证解决什么问题.防止什么问题的发生入手.防止什么问题呢?是防止有人入侵你的集 ...

  6. k8s1.9.0安装--基础集群部署

    二.基础集群部署 - kubernetes-simple 1. 部署ETCD(主节点) 1.1 简介 kubernetes需要存储很多东西,像它本身的节点信息,组件信息,还有通过kubernetes运 ...

  7. Redis cluster 集群部署和配置

    目录 一.集群简介 cluster介绍 cluster原理 cluster特点 应用场景 二.集群部署 环境介绍 节点部署 启动集群 三.集群测试 一.集群简介 cluster介绍 redis clu ...

  8. redis cluster集群部署

    上一篇http://www.cnblogs.com/qinyujie/p/9029153.html,主要讲解了 redis cluster 集群架构 的优势.redis cluster 和 redis ...

  9. docker镜像创建redis5.0.3容器集群

    拉取redis5.0.3镜像 # docker pull daocloud.io/library/redis:5.0.3 [root@localhost ~]# docker pull daoclou ...

随机推荐

  1. 体验用yarp连接websocket

    前段时间一看yarp的仓库,wow,终于发布1.0版本了..net也升级到6版本了,之前一直只是用yarp做HTTP转发,今天刚好试试websocket 话不多说,直接开搞 配置集群 首先先配置集群信 ...

  2. [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用

    [源码解析] PyTorch 分布式(5) ------ DistributedDataParallel 总述&如何使用 目录 [源码解析] PyTorch 分布式(5) ------ Dis ...

  3. Go iota 原理和源码剖析

    iota 是 Go 语言的一个保留字,用作常量计数器.由于 iota 具有自增特性,所以可以简化数字增长的常量定义. iota 是一个具有魔法的关键字,往往令初学者难以理解其原理和使用方法. 本文会从 ...

  4. 5.0jemter(英文版)录制脚本,进行压力测试

    压力测试的目的:找到瓶颈.优化速率 1.jemter,Test Plan-->>Add-->>Threds(users)-->>Thred Group创建线程组 2 ...

  5. 软件分享:网页监测及 IIS 重启工具 IISMonitor

    本人以前编写过一款简单的工具软件 IISMonitor,这几天整理完善并补写了使用说明,分享出来,供大家免费使用.使用过程中,遇到什么问题或有什么建议,也可回帖留言,我尽力提供修改支持. 1.工具简介 ...

  6. Apache Kyuubi 助力 CDH 解锁 Spark SQL

    Apache Kyuubi(Incubating)(下文简称Kyuubi)是⼀个构建在Spark SQL之上的企业级JDBC网关,兼容HiveServer2通信协议,提供高可用.多租户能力.Kyuub ...

  7. [atARC078F]Mole and Abandoned Mine

    注意到最终图的样子可以看作一条从1到$n$的路径,以及删去这条路径上的边后,路径上的每一个点所对应的一个连通块 考虑dp,令$f_{S,i}$表示当前1到$n$路径上的最后一个点以及之前点(包括$i$ ...

  8. [bzoj1385]Division expression

    容易发现a2一定是分母,且容易做到其余都是分子,因此相当于判定a2能否整除a1*a3*--*an,不断让a2除以其与其他数的gcd即可(注意特判n=1) 1 #include<bits/stdc ...

  9. 如何用LOTO示波器TDR方法测试电线长度?

    TDR也就是时域反射(Time-domain reflectometer),它可以通过观察导线中反射回来的电信号波形对导线长度进行测量,或者对传输导线的阻抗特性进行分析评估. 我们经常会碰到的TDR的 ...

  10. maven私服-账号管理

    关于maven私服的相关数据: 默认账号admin,密码:admin123 这个账号是不能进行上传代码 到maven仓库的. 我们光是有admin和匿名账号是不够的,我们需要创建一个专门用来部署的账号 ...