生产环境下redis基本上都是用的集群,毕竟单机版随时都可能挂掉,风险太大。这里我就来搭建一个基本的redis集群,功能够用但是还需要完善,当然如果有钱可以去阿里云买云数据库Redis版的,那个还是很不错的。

一、redis概述

  1.1、目前redis支持的cluster特性:

  1):节点自动发现。
  2):slave->master 选举,集群容错。
  3):Hot resharding:在线分片。
  4):进群管理:cluster xxx。
  5):基于配置(nodes-port.conf)的集群管理。
  6):ASK 转向/MOVED 转向机制。
  1.2、redis cluster 架构
    1)redis-cluster架构图
架构细节:
  (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
  (2)节点的fail是通过集群中超过半数的节点检测失效时才生效。
  (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
  (4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value。
 
   2) redis-cluster选举:容错
     
  (1)领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉。
  (2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误
      a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态。
      b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态。
这里概述的可以学习下,也是从别处看到的,写下来以后自己也可以看看。
二、redis集群搭建

2.1、下载和解压redis,这里安装redis-3.2.1版本的,3.0以下版本不支持集群。

[root@localhost ~]# cd /usr/local
[root@localhost local]# mkdir redis-cluster
[root@localhost local]# cd redis-cluster/
[root@localhost redis-cluster]# wget http://download.redis.io/releases/redis-3.2.1.tar.gz
[root@localhost redis-cluster]# tar -zxvf redis-3.2.1.tar.gz

  2.2、编译安装

[root@localhost redis-cluster]# cd redis-3.2.1
[root@localhost redis-3.2.1]# make && make install

  2.3、创建6个节点文件夹,每个文件夹我们就以每个端口号命名,方便管理

[root@localhost redis-3.2.1]# cd ..
[root@localhost redis-cluster]# mkdir 6379 6380 6381 6382 6383 6384

  2.4、这里不需要复制整个redis,只复制redis.conf到对应文件夹

[root@localhost redis-cluster]# cp redis-3.2.1/redis.conf  6379/
[root@localhost redis-cluster]# cp redis-3.2.1/redis.conf 6380/
[root@localhost redis-cluster]# cp redis-3.2.1/redis.conf 6381/
[root@localhost redis-cluster]# cp redis-3.2.1/redis.conf 6382/
[root@localhost redis-cluster]# cp redis-3.2.1/redis.conf 6383/
[root@localhost redis-cluster]# cp redis-3.2.1/redis.conf 6384/

  2.5、修改每个redis.conf,这里我就拿6379的来做演示,其他的一样操作就好了

[root@localhost redis-cluster]# vi 6379/redis.conf

  修改的内容和下面一样:

daemonize    yes                           //设置yes,redis可以后台运行
pidfile /var/run/redis_6379.pid
bind 0.0.0.0       //原本绑定127.0.0.1,测试版本可以改成*
cluster-enabled yes //开启集群,把注释#去掉
port 6379 //端口号
cluster-config-file nodes_6379.conf //集群的配置,配置文件首次启动自动生成
cluster-node-timeout 5000 //请求超时,设置5秒够了
dir ./6379/ //方便管理
protected-mode no              //改为no,可以外界远程访问,redis 3.2 才追加的一个功能

  2.6、开启6个redis节点

[root@localhost redis-cluster]# redis-server 6379/redis.conf
[root@localhost redis-cluster]# redis-server 6380/redis.conf
[root@localhost redis-cluster]# redis-server 6381/redis.conf
[root@localhost redis-cluster]# redis-server 6382/redis.conf
[root@localhost redis-cluster]# redis-server 6383/redis.conf
[root@localhost redis-cluster]# redis-server 6384/redis.conf

  可以查看是否开启成功,

[root@localhost redis-cluster]# ps -ef | grep redis

  和下图所示一样就成功开启

三、开启集群模式

3.1、安装redis集群工具和环境

[root@localhost redis-cluster]# yum install ruby
[root@localhost redis-cluster]# yum install -y rubygems

  还有一个,用gem这个命令来安装redis接口,gem是ruby的一个工具包

gem install redis

3.2、启动redis集群,服务器IP填自己的服务器地址

[root@localhost redis-cluster]# redis-3.2.1/src/redis-trib.rb  create --replicas 1 服务器IP:6379 服务器IP:6380 服务器IP:6381 服务器IP:6382 服务器IP:6383 服务器IP:6384

  

  安装过程中,会出现红色框内提示,不用管,直接yes就好了,然后安装ok。

四、开启防火墙(如果防火墙关闭的请忽略) 

  4.1、开放6个节点端口,这里是centos7.0版本的防火墙开启方法,7.0以下的自己解决下下,也简单的

[root@localhost ~]firewall-cmd --zone=public --add-port=6379/tcp --permanent
[root@localhost ~]firewall-cmd --zone=public --add-port=6380/tcp --permanent
[root@localhost ~]firewall-cmd --zone=public --add-port=6381/tcp --permanent
[root@localhost ~]firewall-cmd --zone=public --add-port=6382/tcp --permanent
[root@localhost ~]firewall-cmd --zone=public --add-port=6383/tcp --permanent
[root@localhost ~]firewall-cmd --zone=public --add-port=6384/tcp --permanent

  4.2、重启防火墙

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

  4.3、查看是否开放成功

[root@localhost ~]# iptables -L -n

  

这是开启成功的,还有如果firewall-cmd这个命令找不到就要自己先安装防火墙,安装的可以自己网上找下。

五、测试

我这边是在windows下测试的,连接时候注意,连接命令后面要加 -c

 
结果上图,我在6380节点下设置数据,可以通过6379这个节点获取。(PS:白色地方是服务器IP,这个自己知道就好了,嘿嘿!)

OK,到这里基本搞定了,但是还是需要完善,比如开机自启动啥的,这里我就不弄了,有兴趣的可以自己去捯饬下。

centos7.0 安装redis集群的更多相关文章

  1. linux系统centOS7下搭建redis集群中ruby版本过低问题的解决方法

    问题描述: 在Centos7中,通过yum安装ruby的版本是2.0.0,但是如果有些应用需要高版本的ruby环境,比如2.2,2.3,2.4... 那就有点麻烦了,譬如:我准备使用redis官方给的 ...

  2. 从零开始安装Redis 集群(Linux CenOS7)

    从零开始安装Redis 集群(Linux CenOS7) 使用ISO安装CentOS7虚拟机 配置静态IP(参考Mac VMware Fusion CentOS7配置静态IP) 安装vim [root ...

  3. liunx contos 7.4 安装redis集群

    前前后后安装了几次redis集群,基本上每次安装都会采坑,耗时伤神. 安装redis依赖gcc环境,安装前先检查liunx上面有没有安装GCC 命令:gcc -v 上传redis-4.0.1.tar. ...

  4. Centos7.5安装kafka集群

    Tags: kafka Centos7.5安装kafka集群 Centos7.5安装kafka集群 主机环境 软件环境 主机规划 主机安装前准备 安装jdk1.8 安装zookeeper 安装kafk ...

  5. 在虚拟机上安装redis集群,redis使用版本为4.0.5,本机通过命令客户端可以连接访问,外部主机一直访问不了

    在虚拟机上安装了redis 4 ,启动后本机客户端可以连接访问,但是外部主机一直访问不了,在使用java代码连接redis集群时报:no reachable node in cluster,原因:在r ...

  6. 离线安装redis集群

    Step0:redis集群组件需求 Step1:离线安装ruby Step2:离线安装rubygems Step3:安装rubygems的 redis api Step4:离线安装tcl 8.6 St ...

  7. Linux离线安装redis集群

    一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,联网环境安装较为简单,这里只说脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网,服务 ...

  8. centos7下的redis集群模式

    1.先安装好单机版的redis 2.Reids安装包里有个集群工具,要复制到/usr/local/bin里去 cd /home/redis/redis-4.0./src ls - cp redis-t ...

  9. Linux(ubuntu)安装redis集群,redis集群搭建

    今天学习一下redis集群的搭建.redis在现在是很常用的数据库,在nosql数据库中也是非常好用的,接下来我们搭建一下redis的集群. 一.准备 首先我们要安装c语言的编译环境,我们要安装red ...

随机推荐

  1. IIS配置MP3/MP4/OGG/flv等资源文件访问

    配置过程参考:http://www.cnblogs.com/EasonJim/p/4752399.html 以下包含了mp4的mime类型: 323 text/h323 acx application ...

  2. POJ 1321 棋盘问题(dfs)

    传送门 棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38297   Accepted: 18761 Descri ...

  3. SAM初探

    SAM,即Suffix Automaton,后缀自动机. 关于字符串有很多玩法,有很多算法都是围绕字符串展开的.为什么?我的理解是:相较于数字组成的序列,字母组成的序列中每个单位上元素的个数是有限的. ...

  4. 【原】小玩node+express爬虫-1

    最近开始重新学习node.js,之前学的都忘了.所以准备重新学一下,那么,先从一个简单的爬虫开始吧. 什么是爬虫 百度百科的解释: 爬虫即网络爬虫,是一种自动获取网页内容的程序.是搜索引擎的重要组成部 ...

  5. JMeter 集合点

    JMeter也有像LR中的集合点,本篇就来介绍下JMeter的集合点如何去实现. JMeter里面的集合点通过添加定时器来完成. 注意:集合点的位置一定要在Sample之前. 集合点:简单来理解一下, ...

  6. vm.max_map_count

    Virtual memoryedit Elasticsearch uses a hybrid mmapfs / niofs directory by default to store its indi ...

  7. win tomcat

    D:\tomcat8080\binstartup.bat rem ------------------------------------------------------------------- ...

  8. View绘制机制

    View 绘制机制 1. View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 me ...

  9. zabbix3 设置邮件报警(五)

    Zabbix邮件报警配置 一.安装sendmail或者postfix(安装一种即可) yum install sendmail #安装 service sendmail start #启动 chkco ...

  10. 防火墙iptables

    iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙.NAT.咋一看iptables的配置很复杂,掌握规律后,其实用iptables完成指定任务并不难,下面我们通过具体实例,学习ip ...