Redis-Cluster环境搭建

   编辑配置文件
        1)
这里以3M-3S为例,先创建/usr/loca/redis-cluster集群目录。为了简化配置,copy原生的redis.conf文件到该目录下,作为所有redis实例的公用配置。其中主要对以下参数进行了修改。     

[root@localhost redis-cluster]# cp ../redis-4.0.14/redis.conf redis-common.conf
# bind 127.0.0.1     # 关闭bind绑定,开放连接访问
daemonize yes        #开启后台运行
protected-mode no    #测试环境下关闭保护模式
cluster-enabled yes  #启用集群模式
appendonly yes       #启用aof持久化机制
cluster-node-timeout 5000  #节点宕机发现时间,可以理解为主节点宕机后从节点升级为主节点时间

        2)接下来在redis-cluster目录下创建6700—6705六个文件夹,用来存放不同redis实例生成的pid文件、rdb/aof文件等。然后分别在对应文件夹下创建redis6700.conf—redis6705.conf文件。以redis6700.conf为例,内容如下

include /usr/local/redis-cluster/redis-common.conf
port 6700
dir /usr/local/redis-cluster/6700/ #指定工作目录,rdb,aof持久化文件将会放在该目录下,不同实例一定要配置不同的工作目录
cluster-config-file nodes6700.conf #生成的集群配置文件名称,集群搭建成功后会自动生成,在工作目录下
pidfile /usr/local/redis-cluster/6700/redis6700.pid
appendfilename "appendonly-6700.aof"


 

启动实例:为了方便启动,在redis-cluster下创建start.sh文件,并启动

[root@localhost redis-cluster]# cat start.sh
#!/bin/bash
/usr/local/redis-4.0.14/src/redis-server 6700/redis6700.conf
/usr/local/redis-4.0.14/src/redis-server 6701/redis6701.conf
/usr/local/redis-4.0.14/src/redis-server 6702/redis6702.conf
/usr/local/redis-4.0.14/src/redis-server 6703/redis6703.conf
/usr/local/redis-4.0.14/src/redis-server 6704/redis6704.conf
/usr/local/redis-4.0.14/src/redis-server 6705/redis6705.conf
[root@localhost redis-cluster]# 
[root@localhost redis-cluster]# ./start.sh
29319:C 08 Sep 12:48:04.196 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
29319:C 08 Sep 12:48:04.196 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=29319, just started
29319:C 08 Sep 12:48:04.196 # Configuration loaded
29321:C 08 Sep 12:48:04.203 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
29321:C 08 Sep 12:48:04.203 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=29321, just started
29321:C 08 Sep 12:48:04.203 # Configuration loaded
...
[root@localhost redis-cluster]# 
[root@localhost redis-cluster]# ps -ef | grep redis
root      29320      1  0 12:48 ?        00:00:00 /usr/local/redis-4.0.14/src/redis-server *:6700 [cluster]
root      29325      1  0 12:48 ?        00:00:00 /usr/local/redis-4.0.14/src/redis-server *:6701 [cluster]
root      29330      1  0 12:48 ?        00:00:00 /usr/local/redis-4.0.14/src/redis-server *:6702 [cluster]
root      29335      1  0 12:48 ?        00:00:00 /usr/local/redis-4.0.14/src/redis-server *:6703 [cluster]
root      29337      1  0 12:48 ?        00:00:00 /usr/local/redis-4.0.14/src/redis-server *:6704 [cluster]
root      29345      1  0 12:48 ?        00:00:00 /usr/local/redis-4.0.14/src/redis-server *:6705 [cluster]
root      29355  20955  0 12:48 pts/0    00:00:00 grep --color=auto redis
[root@localhost redis-cluster]# 

通过集群命令,创建集群

      1)进入到redis的安装目录/src目录下,执行./redis-trib.rb命令,redis-trib.rb是官方提供的Redis Cluster的管理工具,默认位于源码包的src目录下,因为该工具是用ruby开发的,所以需要准备相关的依赖环境。

[root@localhost redis-cluster]# cd ../redis-4.0.14/src
[root@localhost src]# ./redis-trib.rb  create --replicas 1 192.168.192.128:6700 192.168.192.128:6701 192.168.192.128:6702 192.168.192.128:6703 192.168.192.128:6704 192.168.192.128:6705
/usr/bin/env: ruby: 没有那个文件或目录
[root@localhost src]# 

        2)安装./redis-trib.rb依赖环境

[root@localhost src]# yum -y install ruby ruby-devel rubygems rpm-build
...
完毕!
[root@localhost src]# gem install redis
Fetching: redis-4.1.3.gem (100%)
ERROR:  Error installing redis:
        redis requires Ruby version >= 2.3.0.

     Centos环境下执行gen install redis时,我这里报错,查了相关资料,是因为Centos支持的ruby默认版本到2.0.0,因此需要安装RVM即Ruby的版本管理器。安装完成之后再执行gen install redis

yum -y install curl  #如果安装了可以跳过
yum -y install git   #如果安装了git可以跳过这步
curl -L get.rvm.io | bash -s stable  # 这一步和下面一步,经常出网络问题,执行了N次才成功,fuck
source /usr/local/rvm/scripts/rvm
rvm install 2.4    # 差不多花了半个多小时,才下成功,失败N次
rvm use 2.4
gem install redis

       3)执行创建集群命令 ./redis-trib.rb create --replicas 1 ip:port...,其中create操作表示创建集群, --replicas参数指定集群中每个主节点配备几个从节点,这里设置为1。

  ./redis-trib.rb支持的操作如下

create:创建集群
check:检查集群
info:查看集群信息
fix:修复集群
reshard:在线迁移slot
rebalance:平衡集群节点slot数量
add-node:添加新节点
del-node:删除节点
set-timeout:设置节点的超时时间
call:在集群所有节点上执行命令
import:将外部redis数据导入集群

  安装完成后可以通过./redis-trib.rb check ip:port,或者./redis-trib.rb info ip:port查看集群信息

[root@localhost src]# ./redis-trib.rb info 192.168.192.128:6705 
192.168.192.128:6701 (e2d047cd...) -> 0 keys | 5462 slots | 1 slaves.
192.168.192.128:6700 (97934460...) -> 0 keys | 5461 slots | 1 slaves.
192.168.192.128:6702 (ca7b7c54...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
[root@localhost src]#  

测试集群
        
集群搭建好后,通过redis-cli连接集群,来测试一下(-c 表示自动重定向)

      从结果可以看出,uname这个Key经过计算后,落在了10359这个slot上,这个slot属于6704Mater节点,所以Redis返回了一个Redirected结果,并告诉了客户端目标ip:port,这里客户端自动帮我们做了重定向。如果key对应的slot落在当前节点,就会直接返回操作结果。

./redis-trib.rb命令

[root@localhost src]# ./redis-trib.rb help 
Usage: redis-trib <command> <options> <arguments ...>

  create          host1:port1 ... hostN:portN
                  --replicas <arg>
  check           host:port
  info            host:port
  fix             host:port
                  --timeout <arg>
  reshard         host:port
                  --from <arg>
                  --to <arg>
                  --slots <arg>
                  --yes
                  --timeout <arg>
                  --pipeline <arg>
  rebalance       host:port
                  --weight <arg>
                  --auto-weights
                  --use-empty-masters
                  --timeout <arg>
                  --simulate
                  --pipeline <arg>
                  --threshold <arg>
  add-node        new_host:new_port existing_host:existing_port
                  --slave
                  --master-id <arg>
  del-node        host:port node_id
  set-timeout     host:port milliseconds
  call            host:port command arg arg .. arg
  import          host:port
                  --from <arg>
                  --copy
                  --replace
  help            (show this help)

For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值