redis4.0.11集群搭建、redis删除集群节点,redis新增集群节点

redis4.0.11集群搭建

1、需要具备至少三台虚拟机,在每台虚拟机上安装一主一从

2、搭建三台虚拟机,实现6个cluster实例

3、创建三个文件夹

mkdir -p /etc/redis-cluster  #保存实例集群状态,包含其他信息
mkdir -p /var/log/redis #redis启动日志
mkdir -p /var/redis/7001 #持久化存储地址,每个实例但是分配一个文件夹,比如在本台虚拟机创建两个实例,就需要在创建一个文件夹,/var/redis/7002,以此类推
mkdir -p /etc/redis #存储redis.conf配置文件路径

4、修改redis.conf配置文件(我把redis.conf,改为7001.conf名称,此时可以存放多个实例配置文件),这是其中1个实例的配置

port 7001
cluster-enabled yes #开启集群
cluster-config-file /etc/redis-cluster #集群状态信息
cluster-node-timeout 15000 #集群节点超时
daemonize yes #在后台运行
pidfile /var/run/redis_7001.pid #pid存储路径
dir /var/redis/7001 #持久化存储路径
logfile /var/log/redis/7001.log
bind 192.168.1.115 #本虚拟机地址,假设在同一台虚拟机创建两个实例,此地址相同
appendonly yes #开启AOF持久化

5、准备启动redis-cluster集群,其他虚拟机也是此操作

cp /usr/local/redis/redis-4.0.11/utils/redis_init_script  /etc/init.d/redis_7001

# 再进入/etc/init.d
# 将redis_7001文件授权

chmod 777 redis_7001

vi redis_7001
#### 以下是文件内容,将REDISPORT改成7001即可。然后保存

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

# chkconfig:   2345 90 10

# description:  Redis is a persistent key-value database

### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO

REDISPORT=7001
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

# 已不是文件内容
# 执行启动redis命令
./7001.conf start

6、安装ruby

wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
tar xvf ruby-2.2.7.tar.gz
cd ruby-2.2.7
./configure --prefix=/usr/local/ruby-2.2.7
make && make install
ln -s /usr/local/ruby-2.2.7/bin/ruby /usr/bin/ruby
ln -s /usr/local/ruby-2.2.7/bin/gem /usr/bin
ruby -v
gem -v

7、使用gem安装redis集群依赖

gem install redis

#假设此命令报错后,提示
ERROR:  Loading command: install (LoadError)
	cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args for nil:NilClass

#还需安装zlib依赖,zlib库

yum install zlib-devel
cd /data/ruby-2.4.2
cd ext/zlib
ruby extconf.rb
make #如果此命令报错的话需修改一个文件,如果不报错继续执行 make install
//在操作下一步之前需要修改Makefile文件中的zlib.o: $(top_srcdir)/include/ruby.h,将$(top_srcdir)修改为../..如下
//zlib.o: ../../include/ruby.h
//这一步如果不修改,make时会爆出另外一个错误
//报错信息:make:*** No rule to make target `/include/ruby.h, needed by `zlib.o.  Stop
make install 

#安装zlib库
yum install openssl-devel
cd /data/ruby-2.4.2
cd ext/openssl
ruby extconf.rb
make #如果此命令报错的话需修改一个文件,如果不报错继续执行 make install
//报错信息:make: *** No rule to make target `/include/ruby.h', needed by `ossl_ssl_session.o'.  Stop.
vi Makefile #经过仔细查看,发现少了top_srcdir的定义,我在此文件上方加了“top_srcdir = ../..”变量
# 然后再执行make命令,发现可以了
make install

gem install redis

8、将16384个槽位分配到各个实例上

cp /usr/local/redis/redis-4.0.1/src/redis-trib.rb /usr/local/bin

redis-trib.rb create --replicas 1 192.168.31.187:7001 192.168.31.187:7002 192.168.31.19:7003 192.168.31.19:7004 192.168.31.227:7005 192.168.31.227:7006

redis-trib.rb check 192.168.31.187:7001 #询问其中一台实例,获取集群状态以及信息

已部署集群完毕

redis增加master集群节点

redis-trib.rb add-node 192.168.1.137:7007 192.168.31.187:7001
redis-trib.rb check 192.168.31.187:7001 
#重新分配槽位
增加一台master,总共就4台master实例
16384 / 4 =4096
redis-trib.rb reshard 192.168.31.187:7001 #向集群中其中一台实例发起
看到此处:How many slots do you want to move (from 1 to 16384)?
输入4096
然后输入要新分配进来ID:M: 9f447f9910df25f69d9960f5c4c68327294241f0
redis-trib.rb check 192.168.31.187:7001 命令可以查看
然后输入要参与分配实例的ID,输入完一个实例ID回车一次,我们之前有三台master实例,所有我们要输入三次
输入完三次后,输入done命令即可

redis增加salve集群节点

redis-trib.rb add-node --slave --master-id 挂入哪台master做slave就输入哪台masterID 输入被加入的slave节点地址加端空 192.168.1.137:7008 随便输入一台集群中地址 192.168.1.115:7001
即可
redis-trib.rb add-node --slave --master-id 28927912ea0d59f6b790a50cf606602a5ee48108 192.168.1.137:7008 192.168.1.115:7001

redis删除集群节点

redis-trib.rb reshard 192.168.1.115:7001
输入分配多少个槽位:1365、1365、1366(分别三次相同操作)
输入目标实例(要分配到哪台实例上):28927912ea0d59f6b790a50cf606602a5ee48108 
输入槽位要被移除的ID:28927912ea0d59f6b790a50cf606602a5ee48156
输入:done
以上是移除槽位,将master槽位移除完,---完毕
redis-trib.rb del-node 192.168.1.115:7001 (指定一台实例,集群中哪个实例都行)  28927912ea0d59f6b790a50cf606602a5ee48156 (输入要被移除的实例ID)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值