Redis集群搭建

下载Redis源码并编译安装,下载编译这部分网上很多可参考。这里我选择的版本是3.0.7版本

 

集群搭建

 

1.准备搭建一个如下图的Redis集群,三个主节点,三个从节点

 

2.需要处理配置文件

由于只有一台机子,因此放到都放到同一目录下,在一目录下建立各个实例的文件夹

 

将每个redis.conf复制到各个文件夹中,并作对应的路径修改

以下配置供参考:

#使用守护进程方式启动

daemonize yes     

#进程记录文件

pidfile /app/redis-prmi/5067/redis.pid

#端口号

port 5067

tcp-backlog 511

tcp-keepalive 0

loglevel notice

#日志文件,修改对应路径

logfile "/app/redis-prmi/5067/redis.log"

databases 16

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename "dump.rdb"

dir "/app/redis-prmi/5067"

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 0

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

cluster-enabled yes

cluster-config-file "/app/redis-prmi/5067/nodes-5067.conf"

cluster-node-timeout 15000

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

 

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

 

#单个实例的最大容量,可以GB,MB,KB

maxmemory 100MB

maxmemory-policy volatile-ttl

 

#youcan add some rename commend here

#rename-command FLUSHALL ""

 

按照文件修改对应实例的关键点,如文件将文件中的5067改为5068,依次类推,并放到不同的目录下。

 

3.启动server

redis-server  /xxx/xxx/redis.conf

 

启动完后的进程

 

 

连接集群,查看状态

 

发现cluster节点只有一个,现在将各个节点加入到集群中

 

添加一个后发现集群的节点已经有2个了,依次添加后的状态

 

节点状态,如下图,前面的一串数字为实例IDmaster表示当前为master实例,一会会将其中的3master转变为slave

 

 

此时的集群还未分配slotRedis集群中需要将16384(0-16383)slot分配到不同的实例上,并且要全部分配,cluster才生效,接下来使用命令进行分配。

以下命令为将编号012slot分配给5067这个实例

 

一条条命令来分配slot太麻烦,这里写了个shell脚本,需要5个输入参数,分别为实例id,开始slot,结束slot,实例IP,实例端口号

 

chmod +x addslots.sh

 

 ./addslot.sh 055974b431ed46c9cc0a0d61635cd9b1a7f7d6ad 0 5461 127.0.0.1 5067

./addslot.sh 96ef79476e6a91173587516823dfab8c270df8a15462 5462 10922 127.0.0.1 6067

./addslot.sh c73bb8c7ad28da710966bc6f27dbbd33f37df81c10923 10923 16383 127.0.0.1 7067

此时slot已分配完毕,集群开始进行可用状态

 

 

 

接着单独连接上几个将要作为slave的实例,使用命令cluster replicate {nodeid}

 

全部操作完可以发现刚才的master实例已切换为slave实例

 

集群可用

 

set一个数据

 

 

 

 

附:addslots脚本

 

nodeid=$1

beginslot=$2

endslot=$3

 

ip=$4

port=$5

 

while [ $beginslot -le $endslot ]

do

    echo $nodeid" "$beginslot

    redis-cli -c -h $4 -p $5 cluster setslot $beginslot node $nodeid

    let beginslot++

done


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值