概要:本文主要介绍如何在Centos7中单机搭建redis集群三主三从,按照本文绝对可以实现该需求,至于先搭建单机版主要为了方便理解redis集群,为下一步开发或生产上redis集群做铺垫。同时本人在搭建过程中也做了点总结,希望对没有接触过redis集群或刚接触redis集群的小伙伴有些许帮助,同时也建议在查看本文前能先了解redis单节点的部署。下面进入正题。

1、使用yum安装所需要的工具

yum -y install wget vim tcl gcc make

2、下载redis并解压

cd /usr/local

wget http://download.redis.io/releases/redis-3.2.8.tar.gz         (获取redis)

tar -zxvf redis-3.2.8.tar.gz

3、编译安装redis源文件

cd redis-3.2.8

make    (若安装报错,可以改为这一句:make MALLOC=libc)

make install

(如果 /usr/local/bin/ 文件夹内没有 redis-server 那几个文件,就从 /usr/local/redis-3.2.8/src/ 中拷贝过去,命令:cp         redis-server redis-cli redis-sentinel redis-trib.rb redis-benchmark redis-check-aof redis-check-rdb /usr/local/bin/)

4、配置内核参数(可以省略)

--配置 vm.overcommit_memory 为1,这可以避免数据被截断

systcl -w vm.overcommit_memory=1

5、创建多实例的文件夹

cd /usr/local/

mkdir cluster

cd cluster

mkdir 7000 7001 7002  8001 8002 8003

6、修改配置文件

vim /usr/local/redis/redis.conf

bind  0.0.0.0   (0.0.0.0表示所有节点都可以访问该redis)

protected-mode no

daemonize yes (设置后台运行redis)

cluster-enabled yes(开启集群,把#去掉)

cluster-node-timeout 15000 (设置请求超时时间,默认为15秒,可以自行修改)

appendonly yes (aop日志开启,会每次进行写操作都记录一条日志)

--根据不同的端口需要设置的地方

port 7000

pidfile /var/run/redis_7000.pid

dbfilename dump_7000.rdb

appendfilename "appendonly_7000.aof"

cluster-config-file nodes_7000.conf

7、复制配置文件到各个实例文件夹,并且对相应的端口号和参数进行配置。

cp -f /usr/local/redis/redis.conf   /usr/local/cluster/7000/

cp -f /usr/local/redis/redis.conf   /usr/local/cluster/7001/

cp -f /usr/local/redis/redis.conf   /usr/local/cluster/7002/

cp -f /usr/local/redis/redis.conf   /usr/local/cluster/8001/

cp -f /usr/local/redis/redis.conf   /usr/local/cluster/8002/

cp -f /usr/local/redis/redis.conf   /usr/local/cluster/8003/

8、启动各个节点

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

...

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

--使用ps -ef|grep redis | grep cluster查看是否都启动成功,ip和端口号是否都正确。

9、安装ruby、redis环境

yum -y install ruby rubygems

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

curl -L get.rvm.io | bash -s stable

source /usr/local/rvm/scripts/rvm

rvm install ruby-2.3.3   (此过程耗时过长,耐心等待~)

rvm use 2.3.3 --default

gem install redis

10、创建集群

(redis官方提供了redis-trib.rb 这个工具,就在解压目录src目录中,第3步中已将它复制到/usr/local/bin目录中,可以直接在命令行中使用,如果没复制的话自行复制过去即可)

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:8001 127.0.0.1:8002 127.0.0.1:8003   (redis-trib.rb创建集群时会尝试连接列出来的redis节点,如果这里报错你就要检查一下你列出来的redis节点是否都正常运行或者所有节点直接是否都网络互通)

留意一下屏幕,会有一句(type 'yes' or accept),输入yes,回车。(意思是:接受自主分配三主三从)

如果最后出现

>>> Check for open slots...

>>> Check slots coverage...

说明搭建成功。

11、验证集群

redis-cli -h 127.0.0.1 -c -p 7000  (加参数 -c 可以连接到集群,因为redis.conf将bind改为了ip地址,所以 -h 不可以省略)

连接到7000端口使用set存测试值

再连接到7001端口取值,redis集群可用

提示:在使用cli连接到redis后可以使用info replication命令来查看主从关系等信息。

12、其余测试

搭建完成后可以做些其余测试,比如在主节点A上存数据,看数据是存到A节点内还是会随机存到任一主节点?

再比如down掉主节点A,看A的从节点是否会抢占A节点等等。

这篇文章只是给大家入了个门,保证了该集群是可用的,但几乎所有redis的配置都是默认的。接下来一篇文章研究的重心就放在了如何调优和redis集群在生产上的应用。

13、总结(必看):

  1. 从,A挂了的话从节点A1就会顶替A来掌管它的哈希槽,如果A1再挂了,其哈希槽就会没有节点来掌管,即cluster就会不可用。
  2. 写操作会随机到3个主节点上,即使是在从节点上进行的写操作,也会被随机重定向到某个主节点中,在主节点上操作也一样会随机重定向到一个中,当然覆盖原有key除外。
  3. 数据是分开存储的,主节点不进行数据的相互同步与复制,数据的复制发生在主节点和其从节点之间。
  4. 数据a存在节点A中,在节点B中查找数据a,redis会自动重定向到节点A中进行查找
  5. Redis 并不能保证数据的强一致性. 这意味这在实际中集群在特定的条件下可能会丢失写操作。比如写入A节点的数据,A在同步给从节点A1的过程中A出现宕机,这样未同步过去的数据就出现了丢失的情况。

7、默认主节点A宕机后从节点A1成为master,但当A重新启用后并不会重新抢占为master。

redis集群安装2的更多相关文章

  1. CentOS下redis集群安装

    环境: 一台CentOS虚拟机上部署六个节点,创建3个master,3个slave节点 1.下载并解压 cd /root wget http://download.redis.io/releases/ ...

  2. Springboot 2.0.x 集成基于Centos7的Redis集群安装及配置

    Redis简介 Redis是一个基于C语言开发的开源(BSD许可),开源高性能的高级内存数据结构存储,用作数据库.缓存和消息代理.它支持数据结构,如 字符串.散列.列表.集合,带有范围查询的排序集,位 ...

  3. redis 集群安装

    redis集群安装 1.下载redis源码 2.解压并进入解压后的文件夹redis内 3.make,生成一系列的文件(mkreleasehdr.sh, redis-benchmark, redis-c ...

  4. redis集群安装部署

    (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 192.168.1.160:7000 192. ...

  5. 【Redis篇】Redis集群安装与初始

    一.前述   本文将单台节点不同端口模拟集群方式. 二.具体搭建 前提是安装好redis具体可参考http://www.cnblogs.com/LHWorldBlog/p/8463269.html 1 ...

  6. windows下redis集群安装和部署

    1.下载windows版本的Redis 官网只提供linux版本的下载 官网下载地址:http://redis.io/download github下载地址:https://github.com/MS ...

  7. Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)

    一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...

  8. Windows下Redis集群安装与部署

    1.下载 Redis-x64-3.2.100.zip 安装程序 官网下载地址:http://redis.io/download GitHub下载地址:https://github.com/micros ...

  9. redis集群安装多端口多实例部署

    目标(本文达成的结果,配对关系可能会变): 先在131上进行操作 1.下载redis http://download.redis.io/releases/redis-5.0.2.tar.gz 2.解压 ...

随机推荐

  1. Go项目部署到服务器

    -bash: ./main: cannot execute binary file 将 go build main.go 生成的文件上传到服务器后,./main 运行后出新的报错 env GOOS=l ...

  2. Mac下载工具软件提示损坏

    今天装Navicat的时候一直报错文件损坏,最后请教别人才知道,这里记录下: 原因: Mac默认不允许任何来源的软件安装,安全问题,需要我们设置下即可: 解决方法: 方法一: 方法二: 终端输入命令: ...

  3. 域账号修改后,导致vs中的git连接失败

    域账号修改后,导致vs中的git连接失败, fatal: Authentication failed for https://blog.csdn.net/qq_34665539/article/det ...

  4. DLT(Direct Linear Transform)算法

    1.DLT定义            DLT是一个 用于解决包含尺度问题的最小二乘问题 的算法.           DLT解决问题的标准形式为:                            ...

  5. OWASP TOP 10(OWASP十大应用安全风险)

    TOP1-注入 当不受信任的数据作为命令或查询的一部分发送到解释器时,会发生注入漏洞,例如SQL,NoSQL,OS,LDAP注入(轻量目录访问协议),xpath(XPath即为XML路径语言,它是一种 ...

  6. php utf8 gbk 数组 互转

    这些都是工作中常用的 前几年写过 但没有记录的习惯,后边有要用到麻烦,现在记录下 以后直接拿来用 数组里的 utf8_to_gbk 方法 是上一篇写的 直接调用 public static funct ...

  7. IdentityServer4学习笔记汇总(实现传送门在底部)

    前言 互联网时代,对信息和资源的保护越发苛刻,在所有应用中授权和认证是必不可少缺少的一部分.如果一个应用没有授权和认证那么这个应用就是不完整或者说不安全的应用.在.Net平台给我们提供了一套完整的授权 ...

  8. GB和GIB的区别

    天啦撸,这么多年才知道这个东西! Gibibyte(giga binary byte)是信息或计算机硬盘存储的一个单位,简称GiB.由来“GiB”,“KiB”,“MiB”等是于1999年由国际电工协会 ...

  9. talend工具通过关键字来取得text文本中的数据

    问题描述: 在文件夹中有多个text文本,通过关键字来取得text文本里面我所需要的数据,并出力到Excel里面.取得的数据,在text文本里面可能是多行的存在,并且在Excel里面是一行的存在. 解 ...

  10. [转帖]Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点

    Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点 http://network.51cto.com/art/201909/603780.htm 可以毫不夸张的说现如今的互联网是基于TC ...