说明:

10.0.0.111部署6500,6501,6502三个主节点

10.0.0.222部署6500,6501,6502三个备份节点

1.安装redis:略

2.配置内核参数

  1. # 配置 vm.overcommit_memory 为1,这可以避免数据被截断
  2. sysctl -w vm.overcommit_memory=1

3.建文件夹

  1. cd /usr/local/
  2. mkdir redis-cluster
  3. cd redis-cluster
  4. mkdir 6500 6501 6502
  5. cd /var/log/
    mkdir redis

4.修改配置文件

  1. cd /etc/redis/
    cp redis.conf redis_bak.conf
    vim /etc/redis/redis.conf
  2.  
  3. bind 192.168.2.247(需要不同服务器的节点连通,就不能设置为 127.0.0.1
  4. protected-mode no(需要不同服务器的节点连通,这个就要设置为 no
  5. daemonize yes(设置后台运行redis
  6. cluster-enabled yes
  7. cluster-node-timeout 5000
  8. appendonly yes

5.拷贝文件到不同目录,并做如下修改

  1. cp redis.conf /usr/local/redis-cluster/6500
  2.  
  3. port 6500
  4. pidfile /var/run/redis_6500.pid
  5. logfile /var/log/redis/redis_6500.log
  6. dbfilename dump_6500.rdb
  7. appendfilename "appendonly_6500.aof"
  8. cluster-config-file nodes_6500.conf

6.启动redis

7.测试远程连接

10.0.0.111跟10.0.0.222均进行1-8操作

8.创建集群

  1. cd /root/redis-4.0./src/
  2.  
  3. ./redis-trib.rb create --replicas 10.0.0.111: 10.0.0.111: 10.0.0.111: 10.0.0.222: 10.0.0.222: 10.0.0.222:
  4.  
  5. yes(不能直接回车或者输入y,必须输yes)

9.连接测试

可连接任意节点,集群会重定向处理,连接需加参数-c(cluster首字母?)

redis-cli -h 10.0.0.222 -c -p 6500

10.模拟主节点挂掉

关掉主机的三个进程,连接备用节点,发现仍然可以取到a的值,因为在前面设了。

连接任意一个节点都能取到所有节点的数据(前提:ip+端口通,可以做个连接池,在一个ip+端口不通时切换到另一个)

11.重新开启111上的6500,6501,6502结点并加入集群(此处为新增节点的操作,如节点挂掉,只需重新启动进程就好,无需此操作,暂时不删,请忽略)

依此把三个节点加入集群:

  1. 语法 ./redis-trib.rb add-node    new_host:new_port existing_host:existing_port
  1. cd /root/redis-4.0./src/
  2. ./redis-trib.rb add-node 10.0.0.111:6500 10.0.0.222:6500
  3.  
  4. 运行结果

>>> Adding node 10.0.0.111:6500 to cluster 10.0.0.222:6500
>>> Performing Cluster Check (using node 10.0.0.222:6500)
M: 16ed34de7815c7c13e5263a03685082fda1783a8 10.0.0.222:6500
slots:5461-10922 (5462 slots) master
0 additional replica(s)
M: a0f0745883e3eaec9e469db66ced83e9ce114629 10.0.0.222:6502
slots:10923-16383 (5461 slots) master
0 additional replica(s)
M: 458741ac8b916c95c8093573d0718af07da19832 10.0.0.222:6501
slots:0-5460 (5461 slots) master
0 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 10.0.0.111:6500 to make it join the cluster.
[OK] New node added correctly.

连接111的6500,取上一步设的bbb,可以取到值,并且设置ccc的值

继续加入6501,6502

  1. ./redis-trib.rb add-node 10.0.0.111: 10.0.0.222:
  2. ./redis-trib.rb add-node 10.0.0.111: 10.0.0.222:

连接111的6501,取上一步设置的ccc值,可以取到

12.重新分配哈希槽测试(不然节点虽然能存取数据,但都是转向到其他节点做的)

  1. E:\Program Files\Redis>redis-cli -h 10.0.0.111 -c -p 6500 cluster nodes
  2. d64d42cc090440053eb464539f8a8bf0a93543d6 10.0.0.222:6502@16502 slave 21f1919531e456bdff078ab7351ed4e900287f9c 0 1534490272266 6 connected
  3. 21f1919531e456bdff078ab7351ed4e900287f9c 10.0.0.111:6501@16501 master - 0 1534490273000 2 connected 10923-16383
  4. a6990cc5fa94c8e713bcc44536bf87d2e889dce8 10.0.0.222:6500@16500 master - 0 1534490273000 4 connected 5461-10922
  5. 9049ba4a344dbd1e75ee62f40e12dc07881f0a37 10.0.0.111:6500@16500 myself,master - 0 1534490273000 1 connected 0-5460
  6. 246b6da627b00c8dbc5e513592c227af6185a765 10.0.0.111:6502@16502 slave a6990cc5fa94c8e713bcc44536bf87d2e889dce8 0 1534490274269 4 connected
  7. 0957bbd8905c9d5a50d4545571304e175bc8f892 10.0.0.222:6501@16501 slave 9049ba4a344dbd1e75ee62f40e12dc07881f0a37 0 1534490273267 5 connected
  1. 找到master节点id: a6990cc5fa94c8e713bcc44536bf87d2e889dce8
  1. redis-cli -h 10.0.0.111 -c -p 6501 cluster nodes
    ./redis-trib.rb reshard 10.0.0.111:
  2. 输入你要分配的数量 4000
    填入id: a6990cc5fa94c8e713bcc44536bf87d2e889dce8
    输入:all
    输入:yes
  1.  

13.集群重建测试

1.关掉所有节点的进程:pkill -9 redis

2.删掉相关文件(111,222均要执行)

  1. cd /usr/local/redis-cluster/
  2. rm *.rdb
  3. rm *.conf
  1. cd /root
  2. rm *.rdb
  3. rm *.conf

3.开启所有节点进程

  1. [root@centos7 redis]# redis-server /usr/local/redis-cluster//redis.conf
  2. [root@centos7 redis]# redis-server /usr/local/redis-cluster//redis.conf
  3. [root@centos7 redis]# redis-server /usr/local/redis-cluster//redis.conf

4.重新创建集群(步骤8)

不知道为什么没有按顺序前三个成为master节点。。

5.看看集群情况:

  1. E:\Program Files\Redis>redis-cli -h 10.0.0.111 -c -p cluster nodes
  2. d64d42cc090440053eb464539f8a8bf0a93543d6 10.0.0.222:@ slave 21f1919531e456bdff078ab7351ed4e900287f9c connected
  3. 21f1919531e456bdff078ab7351ed4e900287f9c 10.0.0.111:@ master - connected -
  4. a6990cc5fa94c8e713bcc44536bf87d2e889dce8 10.0.0.222:@ master - connected -
  5. 9049ba4a344dbd1e75ee62f40e12dc07881f0a37 10.0.0.111:@ myself,master - connected -
  6. 246b6da627b00c8dbc5e513592c227af6185a765 10.0.0.111:@ slave a6990cc5fa94c8e713bcc44536bf87d2e889dce8 connected
  7. 0957bbd8905c9d5a50d4545571304e175bc8f892 10.0.0.222:@ slave 9049ba4a344dbd1e75ee62f40e12dc07881f0a37 connected

111的6500,6501跟222的6500为主节点,似乎只有主节点有哈希槽

6.尝试将222的6500主节点转到111的6502上

杀掉222上6500对应的端口,111上的5002自动升为master,接管对应哈希槽的处理

再重新开启222的6500进程,可以看到6500的状态由上图的master.fail转为slave

参考:

官方文档:Redis 集群教程

官方文档:Redis 集群规范

centos 7 两台机器搭建三主三从 redis 集群

(error) CLUSTERDOWN Hash slot not served

Redis集群搭建与简单使用

redis集群添加删除节点

Redis集群

Redis集群与插槽分配(动态新增或删除结点)

redis cluster重启

 

centos redis集群搭建的更多相关文章

  1. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  2. redis集群搭建及注意事项

    上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...

  3. Linux Redis集群搭建与集群客户端实现(Python)

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  4. Linux Redis集群搭建与集群客户端实现

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  5. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

  6. Docker Swarm redis 集群搭建

    Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...

  7. Redis学习之路(二)Redis集群搭建

    一.Redis集群搭建说明 基于三台虚拟机部署9个节点,一台虚拟机三个节点,创建出4个master.4个slave的Redis集群. Redis 集群搭建规划,由于集群至少需要6个节点(3主3从模式) ...

  8. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  9. 二、redis集群搭建

    redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...

随机推荐

  1. Node http请求信息

    //1:加载http模块 httpconst http = require("http");//2:创建http 服务器var server = http.createServer ...

  2. pandas聚合aggregate

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang chao # @Fi ...

  3. jdk1.8 HashMap扩容原理详解

    JDK1.7中,resize时,index取得时,全部采用重新hash的方式进行了.JDK1.8对这个进行了改善. 以前要确定index的时候用的是(e.hash & oldCap-1),是取 ...

  4. BZOJ5415[Noi2018]归程——kruskal重构树+倍增+堆优化dijkstra

    题目描述 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个 n 个节点.m 条边的无向连通图(节点的编号从 1 至 n).我们依次用 l,a 描述一条边的长度.海 ...

  5. poj1850-CODE-组合

    求出给定序列的序号.有一个定理需要知道 具体看这篇博客吧http://blog.csdn.net/lyy289065406/article/details/6648492 #include <c ...

  6. A Plug for UNIX POJ - 1087(模板题 没啥好说的。。就用了一个map)

    题意: 几种插头,每一种都只有一个,但有无限个插头转换器,转换器(a,b) 意味着 可以把b转换为a,有几个设备,每个设备对应一种插头,求所不能匹配插头的设备数量 这个题可以用二分图做 , 我用的是最 ...

  7. Cuba获取属性文件中的配置

    最直接的办法是,使用AppContext.getProperty("cuba.trustedClientPassword"); 可以获取到系统中的web模块下的wep-app.pr ...

  8. php laravel 多条件筛选

    效果如图,点击的条件出现在已选择的地方,点击已选择的条件可以删除当前点击的条件 语言是php 框架是laravel. 一.html <div class="doctor-conditi ...

  9. Leetcode 20.有效的括号 By Python

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...

  10. ??? cliquers

    解:先推一个式子,然后就是CRT了... 那个阶乘怎么求呢?主要是分母可能有0,这时我们把分母的因子p全部提出来,上下次数相减判断即可. 细节颇多......注意在快速幂开始的时候a %= MO是个好 ...