首先确定自己需要建立多少个Redis主节点,因为Redis集群需要进行选举判决,所以主节点个数必须是奇数个,也就是说集群里面最少的主节点个数就是3个。因为每个主节点至少有一个备份节点,所以面我将在一台Linux服务器(在多台linux服务器之间搭建集群的流程和一台上搭建一样)里面搭建一个主节点为3个总节点数为6个的Redis集群,其中谁为主节点谁为副节点由集群自己判断。

redis的各个版本的下载地址:redis下载

redis的中文版的集群资料可以访问:http://www.redis.cn/topics/cluster-tutorial.html

安装配置redis  

上传redis的安装包到服务器,编译安装    PREFIX后面写的是自己的安装路径

[root@inode-2 server]# tar -zxvf redis-4.0.9.tar.gz
[root@inode-2 server]# cd redis-4.0.9/
[root@inode-2 redis-4.0.9]# make
[root@inode-2 redis-4.0.9]# make install PREFIX=/export/server/redis-cluster

如果运行make出现:gcc: Command not found 此类错误则安装gcc即可,然后删除redis-4.0.9,重新编译安装

[root@inode-2 redis-4.0.9]# yum -y install gcc automake autoconf libtool make
[root@inode-2 redis-4.0.9]# yum install gcc gcc-c++

正确编译安装后安装目录下会有一个bin文件夹,我们将这个bin文件夹复制5份就得到了redis集群的6个节点。我将这个6个bin文件夹分别命名为redis01到redis06(重命名bin:mv bin/ redis01;复制:cp -r redis01/ redis02)。然后在redis01里面新建一个redis.conf配置文件,写入相关配置,然后将配置文件复制到其余5个文件夹。

[root@inode-2 redis01]# vi redis.conf

然后将如下内容写入redis.conf文件,其中port是这个redis的端口号,将redis.conf文件复制给其余5个文件夹时端口号要修改,我是配置的7001~7006

daemonize yes
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
appendonly yes
protected-mode no

要创建redis集群要用到redis-trib,安装redis-trib需要ruby环境,复制redis解压文件src下的redis-trib.rb文件到redis-cluster目录

[root@inode-2 redis-cluster]# cp /export/server/redis-4.0.9/src/redis-trib.rb  ./

安装ruby环境

我们需要ruby版本要大于等于2.2.2所以我先安装RVM,通过RVM来安装高版本ruby

[root@inode-2 redis-cluster]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
[root@inode-2 redis-cluster]# curl -sSL https://get.rvm.io | bash -s stable
[root@inode-2 redis-cluster]# source /etc/profile.d/rvm.sh
[root@inode-2 redis-cluster]# rvm reload
[root@inode-2 redis-cluster]# rvm requirements run
[root@inode-2 redis-cluster]# rvm install 2.4.4
[root@inode-2 redis-cluster]# ruby -v 

之后再安装rubygem redis依赖

[root@inode-2 redis-cluster]#  wget http://rubygems.org/downloads/redis-4.0.1.gem
[root@inode-2 redis-cluster]# gem install ./redis-4.0.1.gem

安装到这里redis集群所需要的环境就安装完全了,我们可以编写一个startall.sh的脚本来启动所有的redis节点

#!/bin/bash
cd ./redis01
./redis-server ./redis.conf
cd ../redis02
./redis-server ./redis.conf
cd ../redis03
./redis-server ./redis.conf
cd ../redis04
./redis-server ./redis.conf
cd ../redis05
./redis-server ./redis.conf
cd ../redis06
./redis-server ./redis.conf

给startall.sh赋权限并启动所有redis

[root@inode-2 redis-cluster]# chmod 755 startall.sh
[root@inode-2 redis-cluster]# ./startall.sh

查看redis运行进程是否启动成功,看到端口号7001~7006,6个节点都启动成功

[root@inode-2 redis-cluster]# ps aux | grep redis
root       1374  0.0  0.7 145308  7580 ?        Ssl  08:46   0:00 ./redis-server *:7001 [cluster]
root       1379  0.0  0.7 145308  7584 ?        Ssl  08:46   0:00 ./redis-server *:7002 [cluster]
root       1384  0.0  0.7 145308  7584 ?        Ssl  08:46   0:00 ./redis-server *:7003 [cluster]
root       1389  0.0  0.7 145308  7588 ?        Ssl  08:46   0:00 ./redis-server *:7004 [cluster]
root       1394  0.0  0.7 145308  7584 ?        Ssl  08:46   0:00 ./redis-server *:7005 [cluster]
root       1457  0.0  0.7 145308  7580 ?        Ssl  08:51   0:00 ./redis-server *:7006 [cluster]
root       1462  0.0  0.0 112704   972 pts/0    R+   08:51   0:00 grep --color=auto redis

我们可以通过进程名称用pkill来杀掉redis进程来让redis停止

[root@inode-2 redis-cluster]# pkill -9 redis
[root@inode-2 redis-cluster]# ps aux | grep redis
root       1465  0.0  0.0 112704   968 pts/0    R+   08:54   0:00 grep --color=auto redis

  创建redis集群

使用redis-trib.rb创建集群,在这之前保证6个节点都已经开启,不然会报一下错误,下面的192.168.231.13是我虚拟机的ip,你需要换成你自己的服务器ip,或者你也可以写127.0.0.1,不过我不建议写127.0.0.1,因为它会让其它服务器或者你windows上的redis访问工具连接不上你的redis集群

[root@inode-2 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.231.13:7001 192.168.231.13:7002 192.168.231.13:7003 192.168.231.13:7004 192.168.231.13:7005 192.168.231.13:7006
>>> Creating cluster
[ERR] Sorry, can't connect to node 192.168.231.13:7001

中途会出现Can I set the above configuration? (type 'yes' to accept):提示你是否可以设置,输入yes即可

[root@inode-2 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.231.13:7001 192.168.231.13:7002 192.168.231.13:7003 192.168.231.13:7004 192.168.231.13:7005 192.168.231.13:7006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.231.13:7001
192.168.231.13:7002
192.168.231.13:7003
Adding replica 192.168.231.13:7005 to 192.168.231.13:7001
Adding replica 192.168.231.13:7006 to 192.168.231.13:7002
Adding replica 192.168.231.13:7004 to 192.168.231.13:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: e4678a9a8410bf5d2c653e6848c1c7ba68a3e21e 192.168.231.13:7001slots:0-5460 (5461 slots) master
M: 486f781e0f1ba8f23f963f7e99b0995e2fcd9fda 192.168.231.13:7002slots:5461-10922 (5462 slots) master
M: 69f56075e9542d9fa000eaa72f67c5a023f65eff 192.168.231.13:7003slots:10923-16383 (5461 slots) master
S: 32a1a109212a5d6ac0e8b518c6df184445714a72 192.168.231.13:7004replicates 69f56075e9542d9fa000eaa72f67c5a023f65eff
S: 28fb9022061f2fa40c2a0fc7fddf909d2f9a5609 192.168.231.13:7005replicates e4678a9a8410bf5d2c653e6848c1c7ba68a3e21e
S: 63b909534ee5fae34200cf63e70b3bf1f162ce8c 192.168.231.13:7006replicates 486f781e0f1ba8f23f963f7e99b0995e2fcd9fda
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join..  (这里有可能出现一直等待的结果)
>>> Performing Cluster Check (using node 192.168.231.13:7001)
M: e4678a9a8410bf5d2c653e6848c1c7ba68a3e21e 192.168.231.13:7001slots:0-5460 (5461 slots) master1 additional replica(s)
M: 69f56075e9542d9fa000eaa72f67c5a023f65eff 192.168.231.13:7003slots:10923-16383 (5461 slots) master1 additional replica(s)
S: 28fb9022061f2fa40c2a0fc7fddf909d2f9a5609 192.168.231.13:7005slots: (0 slots) slavereplicates e4678a9a8410bf5d2c653e6848c1c7ba68a3e21e
M: 486f781e0f1ba8f23f963f7e99b0995e2fcd9fda 192.168.231.13:7002slots:5461-10922 (5462 slots) master1 additional replica(s)
S: 63b909534ee5fae34200cf63e70b3bf1f162ce8c 192.168.231.13:7006slots: (0 slots) slavereplicates 486f781e0f1ba8f23f963f7e99b0995e2fcd9fda
S: 32a1a109212a5d6ac0e8b518c6df184445714a72 192.168.231.13:7004slots: (0 slots) slavereplicates 69f56075e9542d9fa000eaa72f67c5a023f65eff
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.Waiting for the cluster to join..  (这里有可能出现一直等待的结果)
>>> Performing Cluster Check (using node 192.168.231.13:7001)
M: e4678a9a8410bf5d2c653e6848c1c7ba68a3e21e 192.168.231.13:7001slots:0-5460 (5461 slots) master1 additional replica(s)
M: 69f56075e9542d9fa000eaa72f67c5a023f65eff 192.168.231.13:7003slots:10923-16383 (5461 slots) master1 additional replica(s)
S: 28fb9022061f2fa40c2a0fc7fddf909d2f9a5609 192.168.231.13:7005slots: (0 slots) slavereplicates e4678a9a8410bf5d2c653e6848c1c7ba68a3e21e
M: 486f781e0f1ba8f23f963f7e99b0995e2fcd9fda 192.168.231.13:7002slots:5461-10922 (5462 slots) master1 additional replica(s)
S: 63b909534ee5fae34200cf63e70b3bf1f162ce8c 192.168.231.13:7006slots: (0 slots) slavereplicates 486f781e0f1ba8f23f963f7e99b0995e2fcd9fda
S: 32a1a109212a5d6ac0e8b518c6df184445714a72 192.168.231.13:7004slots: (0 slots) slavereplicates 69f56075e9542d9fa000eaa72f67c5a023f65eff
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

     期间如果出现Waiting for the cluster to join . . . . . . . . . 一直等待没有响应的结果,是因为redis总线端口没有开放。redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口,集群总线端口为redis客户端连接的端口 + 10000,如redis端口为7001,则集群总线端口为17001,如果是防火墙要开放相应总线端口,如果是阿里云则需要在安全组规则里面配置开放相应的端口。

开放总线端口后先将所有的redis关闭,然后去每个redis节点文件夹里面(本文是redis01-redis06)删除appendonly.aof 、nodes.conf 、dump.rdb(此文件有则删除无则不管)三个文件。然后重新启动所有节点,重新开启集群。

 redis集群测试 

我们的redis集群就创建好了,然后我们可以测试一下自己集群是否正常工作,我们通过redis-cli随便连接一个redis

[root@inode-2 redis02]# ./redis-cli -c -p 7003
127.0.0.1:7003> set redis_key redis_value
OK
127.0.0.1:7003> 

通过Ctrl+C跳出7003端口的redis连接,然后我们去端口7005的redis获取redis_key看能不能获得redis_value

[root@inode-2 redis02]# ./redis-cli -c -p 7005
127.0.0.1:7005> get redis_key
-> Redirected to slot [12262] located at 192.168.231.13:7003
"redis_value"
192.168.231.13:7003> 

在redis集群里面我们可以连接到任何一个节点就可以访问所有redis的数据,这样,redis集群就是创建成功了

Linux CentOS 7 系统安装Redis集群相关推荐

  1. Linux从头开始搭建Redis集群(三种方式)

    Linux搭建Redis集群 前言 一.下载Redis安装程序包 1.打开虚拟机终端,输入以下命令,下载对应的 Redis 文件 2.下载好之后,进行解压 3.将解压好的文件移动/复制到 /usr/l ...

  2. 在centos上搭建redis集群并附测试(真集群非伪集群)

    环境:centos6.5 x86 32位 redis3.2.8 ruby-2.2.3 一. redis集群原理 redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了 ...

  3. Linux centos 6配置hadoop 集群搭建笔记教程

    一.安装JDK 1.上传jdk-8u121-linux-x64.tar.gz文件到/opt目录 2.解压jdk文件 tar -zxvf jdk-8u121-linux-x64.tar.gz -C /u ...

  4. linux安装redisDocker安装redis集群

    安装redis Installation From source code Download, extract and compile Redis with: $ wget https://downl ...

  5. linux部署redis集群遇到的问题

    版本信息: redis:5.0.8 linux服务器:CentOS 7 不同版本问题处理方式可能有所不同 1.在java程序中,连接不上redisCluster. 报错信息: no reachable ...

  6. Linux中的redis集群搭建

    看在多的书,若果不实践一次,我觉得效果并不好,只有自己完完整整的做一次! 所以今天打算搭建一个redis集群来练练手~! 1.Linux CentOS  , redis-3.2.4 版本 2.配置环境 ...

  7. linux redis-trib.rb,linux 关于redis-trib.rb构建redis集群

    之前搭建集群漏下的坑, 今次再搭一次. 环境 ruby环境 yum install ruby rubygems -y redis的gem环境 gem install redis-3.2.2.gem 部 ...

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

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

  9. centos redis 升级版本_带你来搭建虚拟机和Redis集群,记得收藏

    来源于公众号Java爱好者社区 , 作者东升的思考 1.前言 我们看到分析 Redis 使用或原理的文章不少,但是完整搭建一套独立的 Redis 集群环境的介绍,并不是很多或者说还不够详细. 那么,本 ...

最新文章

  1. msvcrt.lib和LIBCD.lib链接冲突
  2. Chapter 2 Open Book——16
  3. java项目包创建顺序_java程序初始化的顺序
  4. 罗美琪和春波特的故事...
  5. 初识Zookeeper
  6. boost::mpi模块all_reduce() 集合的测试
  7. lisp 中望cad 选项卡_这些高效插件,学CAD的基本用过两种以上
  8. 【干货】打造优秀B端产品需求分析流程要点
  9. 解释logistic回归为什么要使用sigmoid函数
  10. matlab sizeof size,使用Matlab进行MEXing C时,size_t和mwSize之间的差异
  11. python commands用法_python之commands模块(执行Linux Shell命令)
  12. Java经典编程题50道之三十二
  13. CheckBox组件
  14. Carrot2 - Wikipedia, the free encyclopedia
  15. 数据结构 图论02 十字链表详解 代码
  16. Redis深度历险——原理与集群篇
  17. Chelly个人训练
  18. vs2017 linux unable to start debugging
  19. 面试:React相关
  20. 2021衡阳田家炳高考成绩查询,2021年衡阳高考最高分多少分,历年衡阳高考状元

热门文章

  1. Android JetPack组件之ViewModel状态的保存(程序在后台被系统杀死数据也存活)
  2. 阴阳师守护契约活动该怎么玩 守护契约活动玩法攻略
  3. String类 常用方法案例
  4. ADB命令自动刷抖音
  5. Spring Aware 到底是什么?
  6. 【web小票打印】谷歌浏览器跳过预览直接打印(lodop)
  7. 【Django】开发日报_12_Day:手机号码管理系统-实现订单功能
  8. 输入法无法启动的常见原因及解决方案
  9. 软件测试自学摄影棚,实战对决 摄影棚内人像与静物测试
  10. 微调Hugging Face中图像分类模型