Redis集群方案

Redis Cluster

5.0新版安装集群方式

#配置yes开启redis-cluster
cluster-enabled yes
#配置节点之间超时时间
cluster-node-timeout 15000
#这个配置很重要,cluster开启必须重命名指定cluster-config-file,不能与别的节点相同,否则会启动失败,最好按主机+端口命名
cluster-config-file nodes-6379.conf

完成以上配置之后,可以使用src下的redis-server命令,逐个启动redis实例。

redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

redis-cli --cluster check host:port检查集群状态slots详细分配

安装环境

yum install ruby
或下载tar,编译安装,最低版本2.2(Redis3.2.0)
gem install redis

要让集群正常运作至少需要三个主节点,强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。

主要配置

cd /usr/local/redis
mkdir cluster/{7001 7002 7003 7004 7005 7006}
cd cluster
vi redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
protected-mode no
requirepass 12345678
masterauth 12345678
pidfile "/usr/local/redis/cluster/7001/redis.pid"
logfile "/usr/local/redis/cluster/7001/redis.log"
dbfilename "dump-7001.rdb"
dir "/usr/local/redis/cluster/7001/"

注意设置密码后,需要在ruby下的gem /usr/local/lib/ruby/gems/2.5.0/gems/redis-4.0.1/lib/redis/client.rb修改password属性;如不设置密码,将protected-mode设为yes,bind改为服务器的IP地址。

修改并复制到各个节点目录
sed -i 's@7001@7002@' redis.conf && cp redis.conf 7002/redis.conf

启动各个节点
redis-server 7001/redis.conf

使用redis-trib.rb工具创建集群
/usr/local/redis/bin/redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

显示以下信息,表示创建成功
[OK] All 16384 slots covered

注:trib.rb脚本只在第一次创建集群使用
添加节点:./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7001
add-node --slave 添加为从节点
移除节点:./redis-trib.rb del-node 127.0.0.1:7001

redis客户端连接
redis-cli -c -p 7001 -a 12345678 -c表示连接集群 -a连接密码
> cluster nodes 所有节点
> cluster info 当前节点信息

Redis测试脚本

#!/bin/bash
echo "redis tools 0.0.1"

OPT=$1
if [ ! -n "$OPT" ];then
    echo "Usage: $0 operate"
    exit 1;
fi

DIR=/usr/local/redis/cluster
PORTS="7001 7002 7003 7004 7005 7006"
IP="172.16.15.216"

redis_pid() {
	echo `ps -ef | grep redis-server | grep -v grep | tr -s " "|cut -d" " -f2`
}

start() {
    cd $DIR
    for d in $PORTS
	do
	    redis-server $d/redis.conf
	done
    echo "redis servers has started."
}

stop() {
    pid=$(redis_pid)
    for p in $pid
        do
            kill $p
        done
    echo "redis servers has stopped."
}

reset() {
    cd $DIR
    for d in $PORTS
        do
            rm -rf $d/appendonly.aof $d/dump-$d.rdb $d/nodes.conf $d/redis.log
        done
    echo "redis cluster has reseted and all config&db files has deleted."
}

create() {
    cd $DIR
    ips=""
    for d in $PORTS
        do
	    ips="$ips $IP:$d"
	done
    /usr/local/redis/bin/redis-trib.rb create --replicas 1 $ips 
    echo "redis cluster created."
}

case $OPT in
	start)
	    stop
   	    start
	;;
	stop)
	    stop
	;;
	reset)
	    stop
	    reset
	;;
	create)
	    start
	    sleep 5
	    create
	;;
	*)
	echo "Usage: $0 operate"
	;;
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值