试验机操作系统:CentOS Linux release 7.2.1511 (Core)

本文的目的是教会大家快速搭建redis集群,完了再深入学习。

试问如果不上手试验,看的资料再多有个毛用?

下载redis

下载网址:https://redis.io/download

写文章时最新版本为:redis-4.0.1.tar.gz

可以先下载到windows操作系统,然后拷贝到centos。

下载成功后,在centos上创建一个目录,存放我们的软件,我比较喜欢放在/soft目录下。

[root@localhost /]# mkdir /soft

然后利用WinScp工具拷贝到centos系统,放在/soft/目录下。

安装gcc

[root@localhost ~]# yum install gcc

中间有2次提示,要求输入:yes 或 y,我们按照提示来就可以。

安装pstree

[root@localhost ~]# yum install psmisc

中间有1次提示,要求输入:y。按照提示来就可以。

解压tar包

[root@localhost /]# cd /soft

[root@localhost soft]# tar zxvf redis-4.0.1.tar.gz

[root@localhost soft]# mv redis-4.0.1 /usr/local/redis

编译安装

[root@localhost soft]# cd /usr/local/redis

[root@localhost redis]# make MALLOC=libc

[root@localhost redis]# make & make install

说明:如果在make的时候不指定内存管理方式,会报错的:

zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录。

malloc是管理内存碎片的。

启动reids

[root@localhost redis]# src/redis-server redis.conf

如果成功,如下图:

然后新开终端,打开redis客户端

[root@localhost ~]# cd /usr/local/redis/

[root@localhost redis]# src/redis-cli

表示已经启动成功。

我相信单机安装有点linux基础的同学都能安装成功。

-------------------------------------------------------------------------------

Redis集群

redis集群要求最小3主3从。我这里跟其它介绍的不一样,我是模拟的真机环境。

准备6台centos7服务器,其中192.168.1.80我们刚刚装了redis,并启动成功。

因为redis集群还需要安装ruby,还需要配置集群,所以我的想法是先在一台机器上安装好之后,我们再拷贝整个系统到其它5台机器。这样我们做的重复工作就比较少了。

192.168.1.80

192.168.1.81

192.168.1.82

192.168.1.83

192.168.1.84

192.168.1.85

安装ruby

在刚安装好的redis服务器上安装ruby

因为创建集群时需要用Ruby 运行redis-trib.rb

[root@localhost redis]# yum -y install ruby ruby-devel rubygems rpm-build

[root@localhost redis]# gem install redis

这条命令有点慢,稍等片刻即可安装成功,如下图:

修改redis.conf

打开redis.conf,把下面列出来的配置项全部注释,完了拷贝下面7条配置到redis.conf文件末尾

port 6379

bind 192.168.1.80

daemonize yes

cluster-enabled yes

cluster-config-file nodes-6379.conf

cluster-node-timeout 15000

pidfile /var/run/redis_6379.pid

克隆5台系统

克隆5台操作系统,并且每台系统的redis.conf中的bind修改成对应的IP

我用的虚拟机,克隆前先关掉虚拟机,即192.168.1.80。不然无法克隆。

打开相关端口

说明:

redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口

集群总线端口为redis客户端连接的端口 + 10000

如redis端口为6379,则集群总线端口为16379

所以,所有服务器需要开通redis的客户端连接端口和集群总线端口

每台都要开启这两个端口

开启6379端口和16379端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent

[root@localhost ~]# firewall-cmd --zone=public --add-port=16379/tcp --permanent

重启防火墙

[root@localhost ~]# firewall-cmd --reload

启动redis

每台都要启动

[root@localhost ~]# cd /usr/local/redis/

[root@localhost redis]# src/redis-server redis.conf

启动集群

[root@localhost ~]# /usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.1.80:6379 192.168.1.81:6379 192.168.1.82:6379 192.168.1.83:6379 192.168.1.84:6379 192.168.1.85:6379

如下图,表示成功启动

仔细看这张图,其中

192.168.1.80

192.168.1.81

192.168.1.82

三台节点自动设置成了主节点

192.168.1.83

192.168.1.84

192.168.1.85

三台节点自动设置成了从节点,而且每个从节点对应哪个主节点都有说明。

连接redis集群

在192.168.1.80机器上进行连接

[root@localhost redis]# src/redis-cli -h 192.168.1.80 -c -p 6379

必须要加:-c参数

在192.168.1.80节点上写一条数据,看图:

然后Ctrl+c退出redis客户端,再连接到192.168.1.83节点上进行查询

[root@localhost redis]# src/redis-cli -h 192.168.1.83 -c -p 6379

看图:

看到没,跳转到192.168.1.80上了,从192.168.1.80获取的数据

好了,成功了,累死宝宝了。

参考网址

https://redis.io/download

http://os.51cto.com/art/201702/533052.htm?pc

如果重启服务器后,再次执行redis-trib.rb会报错如下错误:

[ERR] Node 192.168.1.80:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决方法:

删除dump.rdb和nodes-6379.conf这两个文件,然后重启redis服务,最后启动集群。

1次不行搞2次,2次不行搞3次。多删除几次。

centos7安装redis-4.0.1集群的更多相关文章

  1. CentOS7.2 安装redis 3.0.6集群

    1.环境确认 a.系统版本查看 [hadoop@p168 ~]$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)  b.安装依 ...

  2. Redis 5.0.5集群搭建

    Redis 5.0.5集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):s ...

  3. Redis 3.0 Cluster集群配置

    Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...

  4. 配置redis 4.0.11 集群

    配置redis 4.0.11 集群 准备redis 软件和redis配置文件 启动Redis服务 /data/soft/redis/src/redis-check-aof --fix /log/red ...

  5. Centos7下安装redis实战(单机版以及集群)

    一.背景 因项目需要,要引入redis做缓存,就在centos7下亲自安装了一遍redis,刚好趁着这个机会就来把redis的概念以及单机版和集群版redis安装步骤记录下来,在此和大家一起分享. 二 ...

  6. Redis 3.0.2集群搭建以及相关问题汇总

    Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...

  7. Redis 5.0.3集群部署

    参考文章 https://blog.csdn.net/yyTomson/article/details/85783753 https://www.cnblogs.com/zy-303/p/102731 ...

  8. redis 3.0的集群部署

    转载请注明出处:http://hot66hot.iteye.com/admin/blogs/2050676 最近研究redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到re ...

  9. (转)redis 3.0的集群部署

    一:关于redis cluster 1:redis cluster的现状 reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:http://antirez.com/ ...

  10. Redis 3.0.5 集群的命令、使用、维护

    cluster命令 CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息. //节点 CLUSTER MEET < ...

随机推荐

  1. MVVM模式的 数据绑定

    数据绑定要达到的效果 数据绑定要达到什么效果呢,就是在界面中绑定了数据源之后,数据在界面上的修改能反映到绑定源,同时绑定源的修改也能反映到界面上.从界面反映到绑定的数据源是很容易理解的,因为在绑定过程 ...

  2. HDU 6057 Kanade's convolution

    题目链接:HDU-6057 题意: 思路:先按照官方题解推导出下面的式子: 现在唯一的问题就是怎么解决[bit(x)-bit(y)=bit(k)]的问题. 我们定义\( F(A,k)_{i}=\lef ...

  3. HDU 6215 2017Brute Force Sorting 青岛网络赛 队列加链表模拟

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6215 题意:给你长度为n的数组,定义已经排列过的串为:相邻两项a[i],a[i+1],满足a[i]&l ...

  4. fsevents npm install是报错

    npm install 安装插件的时候,fsevents报错,这是node 8.x版本的问题,解决办法,把node 版本切换到6.x

  5. mvn简单命令

    导出maven项目依赖的jar包 mvn dependency:copy-dependencies -DoutputDirectory=lib 编译Java代码 mvn compile eclipse ...

  6. No.2 selenium学习之路之八种基本定位

    selenium的八种定位方式 1.通过id定位     find_element_by_id() send_keys() 输入框输入字符串 click()  鼠标点击事件 注:send_keys输入 ...

  7. plsql developer配置

    一:今天plsql developer连接 出问题了 ,Oracleclient没正确安装 0.连接vpn 1.环境变量:TNS_ADMIN = D:\worksoftware\oracleClien ...

  8. Hexo命令无法找到 -问题修复

    本人PC安装hexo按照官方npm方式下载: npm install -g hexo-cli 但是到了控制台,输入hexo总是无法找到该命令,提示:Command not Found!!!,无论git ...

  9. Java 容器的基本概念

    java容器类类库的用途时"保存对象",并将其划分为两个不同的概念: 1)Collection(采集).一个独立元素的序列,这些元素都服从一条或多条规则,List必须按照插入的顺序 ...

  10. 20165203《Java程序设计》第五周学习总结

    教材学习内容总结 第七章 内部类 注意内部类和外嵌类的关系: 外嵌类的成员变量和方法在内部类有效 内部类的类体不可以声明static变量和方法.外嵌类的类体可以用内部类声明对象. 内部类仅供它的外嵌类 ...