zoukankan      html  css  js  c++  java
  • 第十章、Redis 集群搭建


    一、概述

    • Redis3.0之后的版本支持集群

      • 集群管理,cluster xxx
      • 给予配置(nodes-port.conf)的集群管理
      • ASK转向/MOVED转向机制
      • Hot resharding:在线分片
      • slave->master选举,集群容错
      • 节点自动发现

    二、redis cluster 集群安装搭建步骤

    • 下载安装包

      wget http://download.redis.io/releases/redis-3.2.1.tar.gz
      tar -zxvf /redis-3.2.1.tar.gz
      #或者管网下载 tar 包,然后上传至服务器进行解包。
    • 编译并进行安装

      #因为 redis 是用 c 实现的,所有要进行编译。
      cd redis-3.2.1 	 	
      make && make install
      #相当于:
      - make
      - make install
    • 安装 ruby 环境

      redis 集群是用的 ruby 脚本,所以要想执行该脚本,需要 ruby 环境.。对应 redis 的源码 src 目录下的redis-trib.rb,redis-trib.rb 是redis 官方推出的管理 redis 集群的工具,是基于 redis 提供的集群命令封装成简单、便捷、实用的操作工具。所以为了方便管理集群,可安装一下 ruby 环境。

      yum install ruby 
      yum install rubygems
      #或者执行
      yum -y install ruby ruby-devel rubygems rpm-build
      
      #gem 命令安装 redis 接口,gem 是 ruby 的一个工具包
      gem install redis
      
      #安装完成之后运行一下 redis-trib.rb 命令,出现 redis-trib 命令的使用参数就说明 ruby 环境是可靠的
      /usr/local/redis-3.2.1/src/redis-trib.rb
    • 搭建集群 (redis-cluster)

      #1、创建 redis-cluster 目录以及 redis 节点实例文件目录
      cd /usr/local
      mkdir redis-cluster
      cd /usr/local/redis-cluster
      mkdir redis-8001 redis-8002 redis-8003 redis-8004 redis-8005 redis-8006

      #2、复制 redis.conf 到 redis 节点目录下
      cd /usr/local/redis-3.2.1
      cp redis.conf /usr/local/redis-cluster/redis-8001
      cp redis.conf /usr/local/redis-cluster/redis-8002
      cp redis.conf /usr/local/redis-cluster/redis-8003
      ...

      #3、分别修改节点下 redis-conf 文件,由于在一台机器(192.16819.129 伪分布式集群)上,因此每个实例应该有不同的端口。同时,每个实例显然会有自己的存放数据的地方。

      #端口
      port 8001

      #注释 bind ip
      #开启 AOF 日志模式
      appendonly yes

      #开启后台模式
      daemonize yes
      #Redis 以后台模式运行时默认会把 pid 文件放在 /var/run/redis_6379.pid
      pidfile /usr/local/redis-3.0.0/pid/redis_8001.pid

      #RDB 持久化 dump 备份文件目录
      dir /usr/local/redis-cluster/redis-8001

      #4、开启集群配置
      cluster-config-file nodes-8001.conf
      cluster-enabled yes
      cluster-node-timeout 15000

      #5、编写 shell 脚本批量启动 startall.sh 与关闭 shutdown.sh redis 实例
      startall.sh
      /usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8001/redis.conf
      /usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8002/redis.conf
      /usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8003/redis.conf
      /usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8004/redis.conf
      /usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8005/redis.conf
      /usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8006/redis.conf

      chmod +x startall.sh 修改 startall.sh 文件的执行权限
      运行 startall.sh 文件启动 redis:$ /usr/local/redis-cluster/startall.sh
      ps -ef | grep redis 查看 redis 是否启动成功!

      shutdown.sh
      cd /usr/local/redis-3.0.0/src
      ./redis-cli -h 47.95.38.201 -p 8001 shutdown
      ./redis-cli -h 47.95.38.201 -p 8002 shutdown
      ./redis-cli -h 47.95.38.201 -p 8003 shutdown
      ./redis-cli -h 47.95.38.201 -p 8004 shutdown
      ./redis-cli -h 47.95.38.201 -p 8005 shutdown
      ./redis-cli -h 47.95.38.201 -p 8006 shutdown

      chmod +x shutdown.sh 修改 shutdown.sh 文件的执行权限
      运行 shutdown.sh 文件关闭 redis:$ /usr/local/redis-cluster/shutdown.sh

      #6、使用 ruby 脚本创建集群,建立集群结点间得主从关系
      ./redis-trib.rb create --replicas 1 47.95.38.201:8001 47.95.38.201:8002 47.95.38.201:8003 47.95.38.201:8004 47.95.38.201:8005 47.95.38.201:8006

      问题 :Redis 集群一直 Waiting for the cluster to join....
      redis 集群不仅需要开通 redis 客户端连接的端口,而且需要开通集群总线端口,集群总线端口为 redis 客户端连接的端口 + 10000。如redis端口为 6379 则集群总线端口为 16379 故,所有服务器的点需要开通redis 的客户端连接端口和集群总线端口。

      问题:创建 redis 集群报错:ERR Slot 0 is already busy (Redis::CommandError)
      slot 插槽被占用了、这是因为 搭建集群前时,以前 redis 的旧数据和配置信息没有清理干净。
      用 redis-cli 登录到每个节点执行 flushall 和 cluster reset 就可以了;或者清除掉每个节点下的 rdb和node-conf文件。

      #运行下方命令检查是否搭建成功
      cd /usr/local/redis-cluster
      ./redis-trib.rb check 47.95.38.201:8001
      查看集群主从节点状态
      集群初步搭建成功!

    • 集群搭建参考教程

    Redis集群搭建教程
    Redis集群模式
    redis集群搭建及注意事项

  • 相关阅读:
    ActiveX在.NET 2005中的实现(三)
    SharePoint学习研究资源
    配置Excel Service的Excel Web Access 功能及应用
    SkyDrive 与 Hotmail 的 Office Web Apps
    ActiveX在.NET 2005中的实现(二)
    Sharepoint设置SMTP邮件发送服务器(使用中继服务器)
    SharePoint2010新功能
    Analysis自动处理
    NBear V3
    Server数据推送,长连接
  • 原文地址:https://www.cnblogs.com/pengguozhen/p/13397773.html
Copyright © 2011-2022 走看看