centos 搭建redis集群

前言

搭建集群需要6个点,我是3台虚拟机每台两个实例(根据自己的资源而定)
本文redis采用当前官网最新版本 redis-4.0.9
虚拟机系统 Centos7.4
  • 集群功能限制
    1:key批量操作支持有限
    2:key事物操作支持有限
    3:不支持多数据库空间,单机下redis可以支持16(0-15)个库,集群模式下只能使用一个数据库空间,即 db0 .
    4:复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复制
    5:key作为数据分区的最小粒度,因此不能将一个大的键值对象如 hash 、list等映射到不同的节点。

1:各节点安装redis

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

2:解压编译安装

tar -zxvf redis-4.0.9.tar.gz     //解压
cd redis-4.0.9      //进入解压后的目录
make && make install  //编译安装

3:创建 Redis 节点

分别在每台虚拟机/opt/redis-4.0.9/ 下创建 redis_cluster
mkdir redis_cluster
cp /opt/redis-4.0.9/redis.cof /opt/redis_cluster/redis01.conf
cp /opt/redis-4.0.9/redis.cof /opt/redis_cluster/redis02.conf

每台机器配置两个redis实例文件,修改端口等信息

各节点配置文件进行以下修改:

port  7001     //其余5个点端口7002,7003,7004,7005,7006        
bind 本机ip     //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes     //redis后台运行
pidfile  /var/run/redis_7001.pid   //pidfile文件
cluster-enabled  yes       //开启集群  把注释#去掉
cluster-config-file  nodes_7001.conf   //集群的配置  配置文件首次启动自动生成 
cluster-node-timeout  15000   //请求超时,默认15秒,可自行设置
appendonly  yes           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志

4:启动全部节点

这里写图片描述

这里写图片描述

这里写图片描述

可以看到3台虚拟机每个机器2个节点都启动起来了。

5:创建集群(方法一)

  • Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成安装。
redis-trib.rb  create  --replicas 1  10.30.X.X:7001   10.30.X.X:7002   10.30.X.X:7003  10.30.X.X:7004  10.30.X.X:7005  10.30.X.X:7006
  • –replicas 1 表示指定每个master创建1个从节点。

执行时如果遇到 /usr/bin/env: ruby: No such file or directory 报错
由于这个工具是用 ruby 实现的,所以需要安装 ruby。
安装ruby:
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
redis4.0之后需要 redis requires Ruby version >= 2.2.2
所以需要去官网拉取新的ruby包。
http://www.ruby-lang.org/en/downloads/
再次运行命令:

redis-trib.rb  create  --replicas 1  10.30.X.X:7001   10.30.X.X:7002   10.30.X.X:7003  10.30.X.X:7004  10.30.X.X:7005  10.30.X.X:7006

这里写图片描述
输入 yes 即可,然后出现如下内容,说明安装成功。

这里写图片描述

到这一步集群就算搭建完成 ,现在就可以登录到集群进行操作验证。

6:创建集群(方法二)

通过Gossip协议彼此通信握手,达到感知对方的存在。
命令:cluster meet x.x.x.x 7002

这里写图片描述

节点握手之后集群还不能正常工作,这时集群处于下线状态,所有数据读写都被禁止。

这里写图片描述

可以看到当前所有插槽没有分配到节点,因此集群无法完成槽到节点的映射。只有当16384个槽全部分配给节点后,集群才进入在线状态。

6.1:分配槽

命令(登录要分配曹位的节点):cluster addslots {0...5461} (分配0-5461槽位给当前机器)

6.2:添加从节点

命令:cluster replicate 主节点ID
例:127.0.0.1:7001> cluster replicate 2db18763b42040c76b1832e5b06c43bb5b78089f

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页