1、虚拟机环境

使用的Linux环境已经版本:

Centos 7   64位系统

主机ip:

192.168.56.180

192.168.56.181

192.168.56.182

每台服务器是1主1从,实验3台服务器课成为3主3从。

Redis安装的项目目录、日志、配置文件等都存放在/root/svr/目录下。

2、下载相关的安装包以及解压

首先在192.168.56.180机器操作:

cd /root/svr
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar -zxvf redis-3.2.9.tar.gz

3、安装

在/root/svr/redis-3.2.9/目录下执行:

make install PREFIX=/root/svr/redis-3.2.9

4、配置信息

创建集群配置、log日志、数据所在的文件夹:

cd /root/svr/redis-3.2.9/
mkdir cluster-conf

创建集群端口文件夹:

cd cluster-conf
mkdir 7777
mkdir 8888

复制配置文件到/root/svr/redis-3.2.9/cluster-conf/7777目录下:

cp /root/svr/redis-3.2.9/redis.conf  /root/svr/redis-3.2.9/cluster-conf/7777

修改7777目录下redis.conf配置文件:

(注意:找到相应的信息修改,或者把修改的信息全部注释掉,重新添加下面信息到头部,有利于以后修改和查看)

#注释掉ip或者设置0.0.0.0都是局域网访问
#bind 127.0.0.1
#端口号
port 7777 #指定了记录日志的文件
logfile "/root/svr/redis-3.2.9/cluster-conf/7777/redis.log" #该目录要事先创建好,数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
dir /root/svr/redis-3.2.9/cluster-conf/7777/ #是否开启集群
cluster-enabled yes #集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息,
#这个文件并不需要手动配置,这个配置文件有Redis生成并更新,
#每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突。
cluster-config-file nodes.conf #节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout 5000 #默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了,
#但是redis如果中途宕机,会导致可能有几分钟的数据丢失,
#根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性,
#Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,
#每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
appendonly yes

复制7777目录下redis.conf至8888并修改端口及存储路径:

cp /root/svr/redis-3.2.9/cluster-conf/7777/redis.conf /root/svr/redis-3.2.9/cluster-conf/8888

5、使用scp复制安装和配置好的redis复制到其他服务器上

已经在192.168.56.180机器配置好,复制到181和182机器

在两台新机器上创建文件夹

mkdir /root/svr

复制:

scp -r /root/svr/redis-3.2.9 root@192.168.56.181:/root/svr/
#输入181机器密码即可传输数据。
scp -r /root/svr/redis-3.2.9 root@192.168.56.182:/root/svr/
#输入182机器密码即可传输数据。

6、启动3台机器的redis

3台机器执行启动方式:

/root/svr/redis-3.2.9/bin/redis-server /root/svr/redis-3.2.9/cluster-conf/7777/redis.conf &
/root/svr/redis-3.2.9/bin/redis-server /root/svr/redis-3.2.9/cluster-conf/8888/redis.conf &

查看状态是否:

ps -ef|grep redis

7、创建集群

/root/svr/redis-3.2.9/src/redis-trib.rb create --replicas 1 192.168.56.180:7777 192.168.56.180:8888 192.168.56.181:7777 192.168.56.181:8888 192.168.56.182:7777 192.168.56.182:8888

无法创建,提示错误信息:

提示错误,是没有安装ruby这个插件,因为redis

集群创建的程序文件redis-trib,rb是由ruby来编写的,需要安装:

yum install ruby

安装ruby完毕接着执行上面的创建集群命令

报错。这时候需要安装一些和ruby与reids相关程序包和类库

yum install rubygems
gem install reids

报错,提示ruby版本需要大于2.2.2版本。CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2

需要安装个高版本的ruby

#安装curl
yum install curl
#安装rvm
#gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
#curl -L get.rvm.io | bash -s stable
#source /usr/local/rvm/scripts/rvm

查看rvm库中已知的ruby版本

rvm list known

安装一个ruby版本

rvm install 2.4.0

使用一个ruby版本

rvm use  2.4.0

卸载一个已知版本

rvm remove 2.0.0

查看现在版本

ruby --version

在重新安装ruby相关的redis就可以了

gem install redis

更新ruby版本、移除旧版本、重新安装reids完毕。接着执行上面的创建集群命令。

还是出现错误:提示连接不上节点:

这时候需要排查一下错误:

第一:服务器是否关闭防火墙

systemctl status firewalld.service  #查看防火墙
systemctl stop firewlld.service #关闭防火墙

(我这边已经关闭)

第二:是否所有的节点都启动

ps -ef|grep redis

(我这边都已经启动并且正常运行)

第三:服务器之间是否ping通

ping 192.168.56.180

ping 192.168.56.181

ping 192.168.56.182

(我这边都能正常ping通过)

第四:是否可以telnet ip port  连接上

yum install telnet
telbet 192.168.56.180 7777

出现错误:提示redis是受保护的,需要身份验证才可以进行:

这个问题解决可以有两种方法解决:

(1)修改配置文件redis.conf的权限参数设置为no,就是不需要权限验证

protected-mode no

(2)修改配置文件redis.conf的权限设置安全密码(密码自定义设置)

requirepass “111111”   #权限密码

我这里是第一解决方法,不需要权限,先kill启动的6个redis进程,在修改配置文件。在启动reidis服务。

接着执行上面的创建集群命令。

创建集群启动成功。

8、测试redis集群

#登录客户端
./redis-cli -c -p 7777(或者8888) #-c 参数:表示使用集群模式连接

在192.168.56.181:7777服务set值

在192.168.56.182:8888服务上get

9、数据解析

完整搭建起来,管理的集群以及主从关联都在nodes.conf文件中生成的,我这边集群节点的生成配置文件数据显示

主/从                   节点id                       ip     prot   slot槽范围     槽数量     m/s   主从等比例  附近信息(如果是主节点记录为复制功能,如果是从节点,关联相应的主节点id)

M: 3f0d98eebfa18364a95ce7a578865ba7a3ef4493 192.168.56.180:7777 slots:0-5460 (5461 slots) master 1 additional replica(s)
S: 54a525c670ad92a45dccfa92164c0a5f220a10bc 192.168.56.180:8888 slots: (0 slots) slave replicates 078973835bb8a36aeef272c2e243a9d9d733ea96 M: 078973835bb8a36aeef272c2e243a9d9d733ea96 192.168.56.181:7777 slots:5461-10922 (5462 slots) master 1 additional replica(s)
S: 4e13f9dca80c63079e536b17eaa81cef8fcba624 192.168.56.182:8888 slots: (0 slots) slave replicates 3c0fa46c14e6d25c7e7b01079162baec86bd88e9 M: 3c0fa46c14e6d25c7e7b01079162baec86bd88e9 192.168.56.182:7777 slots:10923-16383 (5461 slots) master 1 additional replica(s)
S: d507f34a7dab6dc512a82427e3731967f5a69101 192.168.56.181:8888 slots: (0 slots) slave replicates 3f0d98eebfa18364a95ce7a578865ba7a3ef4493

当节点挂了,nodes.conf会记录新的数据

当主节点挂了,因为集群会一直在监听集群中的主从节点的状态。加入一个主节点挂了,集群监听机制检查到,会对主节点的槽(数据)进行迁移,按照投票机制将主节点关联的从节点进行选举出一个充当主节点,因为我这里一个主节点关联一个从节点,所以只能是那个充当。

10、扩展知识

(1)持久层的配置和原理:rdb和aof

(2)哨兵、数据字段迁移、键空间迁移、在线迁移、redis-trib.rb的详解

(3)集群节点添加,删除

(4)Jedis客户端对集群的数据操作:set、list、key/value、hash等

(5)将key值执行CRC16算法对18384个槽进行取模

(6)压测.........

Redis随笔(四)Centos7 搭redis3.2.9集群-3主3从的6个节点服务的更多相关文章

  1. centos7安装redis3.2.5集群

    安装参照     https://blog.csdn.net/mingliangniwo/article/details/54600640  https://blog.csdn.net/u013820 ...

  2. redis3.0.5集群部署安装详细步骤

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

  3. 缓存系列之五:通过codis3.2实现redis3.2.8集群的管理

    通过codis3.2实现redis3.2.8集群 一:Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没 ...

  4. 大数据学习之旅2——从零开始搭hadoop完全分布式集群

    前言 本文从零开始搭hadoop完全分布式集群,大概花费了一天的时间边搭边写博客,一步一步完成完成集群配置,所以相信大家按照本文一步一步来完全可以搭建成功.需要注意的是本文限于篇幅和时间的限制,也是为 ...

  5. Redis-3.2.1集群内网部署

    摘要: Redis-3.2.1集群内网部署 http://rubygems.org国内连不上时的一种Redis集群部署解决方案.不足之处,请广大网友指正,谢谢! 一. 关于redis cluster  ...

  6. redis3.2.2 集群

    http://blog.csdn.net/imxiangzi/article/details/52431729 http://www.2cto.com/kf/201701/586689.html me ...

  7. Redis面试题详解:哨兵+复制+事务+集群+持久化等

    Redis主要有哪些功能? 1.哨兵(Sentinel)和复制(Replication) Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制. ...

  8. Redis 5.0.7 讲解,单机、集群模式搭建

    Redis 5.0.7 讲解,单机.集群模式搭建 一.Redis 介绍 不管你是从事 Python.Java.Go.PHP.Ruby等等... Redis都应该是一个比较熟悉的中间件.而大部分经常写业 ...

  9. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...

随机推荐

  1. 腾讯云开放云压测“黑科技“,产品上线从此不再“压力山大"

    商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 能否解决"高并发"问题一直是检验一个产品后台是否稳定,架构是否合理,性能是否强大的核心标准.对于产品而言,多高的并发 ...

  2. Anaconda+用conda创建python虚拟环境

    Anaconda+用conda创建python虚拟环境 Anaconda与conda区别 conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理.包管理与pip的使用类似,环境 ...

  3. springboot小技巧(转)

    一些springboot小技巧.小知识点 初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JDBC.两种方式各有区别下面 ...

  4. 【HTML5】Canvas

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. Java 读者写者问题

    实验存档.V 允许好几个人同时读,但是不允许在有人读的时候写,以及同一时间只能有一个人在写. 读者.java: package operating.entity.readerwriter; impor ...

  6. SET与SPLIT

    所以说不要以为前一天考了什么后一天就不会考这类的东西了 出题人总是能竭尽所能 打破你的下限qaq naive split 详解blog来自ljz大佬:http://blog.csdn.net/ljz_ ...

  7. bzoj 2298: [HAOI2011]problem a

    Description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n ...

  8. bzoj 3551: [ONTAK2010]Peaks加强版

    Description [题目描述]同3545 Input 第一行三个数N,M,Q. 第二行N个数,第i个数为h_i 接下来M行,每行3个数a b c,表示从a到b有一条困难值为c的双向路径. 接下来 ...

  9. MySQL在字段中使用select子查询

    前几天看别人的代码中看到在字段中使用select子查询的方法,第一次见这种写法,然后研究了一下,记录下来 大概的形式是这样的: select a .*,(select b.another_field ...

  10. php-基础知识-apache服务器

    一.支持php的服务器有:iis.apache.lighted(德国制造).nginx(俄罗斯制造,功能强大[反向代理.服务器集群.流媒体服务器........].轻量) 二.今天主要分享apache ...