centos7.0 安装redis集群

  生产环境下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,到这里基本搞定了,但是还是需要完善,比如开机自启动啥的,这里我就不弄了,有兴趣的可以自己去捯饬下。

原文地址:https://www.cnblogs.com/hz-cww/p/6074062.html