生产环境下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. substr()函数

    substr 定义于头文件 <string> string substr (size_t pos = 0, size_t len = npos) const;复制子字符串,要求从指定位置开 ...

  2. BZOJ4698: Sdoi2008 Sandy的卡片

    差分,枚举一个串的所有后缀,暴力在所有其他串中kmp,复杂度$O(nm^2)$. #include<cstdio> const int N=1005; const int M=105; i ...

  3. AVA正则表达式4种常用功能

    正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 下面简单的说下它的4种常用功能: 查询: String str="abc efg ABC";  Str ...

  4. Swift3.0变化分享

    Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...

  5. 如何保存gnome的linux的 会话?相当于windows下的休眠?

    在关机前, 你进行的所有操作, 的集合, 就叫做你跟 linux系统 机器间的 一次 会话, 一个session. linux 可以 在关机时保存 这些session, 保存这些打开的窗口 和程序. ...

  6. MFC下打开选择文件夹并获取文件夹的绝对路径

    http://blog.csdn.net/w18758879921/article/details/51613382 http://www.cnblogs.com/greatverve/archive ...

  7. Spark 官方文档(4)——Configuration配置

    Spark可以通过三种方式配置系统: 通过SparkConf对象, 或者Java系统属性配置Spark的应用参数 通过每个节点上的conf/spark-env.sh脚本为每台机器配置环境变量 通过lo ...

  8. 使用Impersonation仿冒用户运行WCF 服务方法

    默认情况下,当我们把wcf服务器部署在IIS上时, 我们访问wcf时使用的是IIS内建的内建角色,对于IIS8.0,它被命名为ApplicationPoolIdentity, 一般来说,系统为每个应用 ...

  9. webstorm快捷键大全

    使用webstorm一段时间了,这里分享一下常用到的快捷键,不用死记,孰能生巧! Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*-*/ ) Shift+F6 重构-重命名 Ctrl+ ...

  10. BULK操作减少redo实验

    建表: create table sm_histable ( sm_id ), sm_subid ), service_type ), orgton ), orgnpi ), destton ), d ...