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

  • 相关阅读:
    SpringCloud学习系列之四-----配置中心(Config)使用详解
    阿里云Docker镜像仓库(Docker Registry)
    阿里云Docker镜像加速
    Docker安装(yum方式 centos7)
    Docker Nginx安装(centos7)
    Dockerfile文件详解
    mysql 开发进阶篇系列 6 锁问题(事务与隔离级别介绍)
    mysql 开发进阶篇系列 5 SQL 优化(表优化)
    mysql 开发进阶篇系列 4 SQL 优化(各种优化方法点)
    sql server 性能调优之 资源等待PAGELATCH
  • 原文地址:https://www.cnblogs.com/hz-cww/p/6074062.html
Copyright © 2011-2022 走看看