redis集群搭建详细记录

下载redis

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

wget命令无效,执行下面安装插件

yum -y install wget

复制redis.conf文件多分(这里配置3个1主1从,形成3主3从)

port 7001#修改成自己对应的端口号


#bind 127.0.0.1 #注释或者去掉这个


logfile "/root/redis-cluster/redis.log"#事先创建好,指定了记录日志的文件



dir /root/redis-cluster/7001/ #事先创建好,数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录


appendonly yes 开启AOF功能需要设置配置:appendonly yes,默认不开启

默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。



protected-mode no #保护模式 yes改为no


cluster-enabled yes  #是否开启集群


cluster-config-file nodes7001.conf#根据目录不同区分,集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突



cluster-node-timeout 5000    节点互连超时的阀值。集群节点超时毫秒数


进入src下启动redis  必须是6个节点,集群最少需要3个主节点

./redis-server ../../7000/redis0.conf &

./redis-server ../../7001/redis1.conf &

./redis-server ../../7002/redis2.conf &

./redis-server ../../7003/redis3.conf &

./redis-server ../../7004/redis4.conf &

./redis-server ../../7005/redis5.conf &

ps -ef | grep redis查看启动的redis节点

启动集群 redis/src目录下

redis-cli --cluster create 192.168.198.128:7000 192.168.198.128:7001 192.168.198.128:7002 192.168.198.128:7003 192.168.198.128:7004 192.168.198.128:7005 --cluster-replicas 1

#cluster-replicas 1   设置一主一从,代表一个主节点下面有几个从节点

 输入命令后如下图提示是否按当前的主从配置,输入yes开始配置

输入./redis-cli -c -p 7000   查看集群

这要注意有输入-c(表示集群模式)

然后执行cluster nodes显示如图则表示集群部署成功

至此集群模式配置完成

 

水平扩容 

复制两份redis.conf   7006/redis6.conf、7007/redis7.conf,一主一从扩容

./redis-server ../../7006/redis6.conf &

./redis-server ../../7007/redis7.conf &

增加主节点

./redis-cli --cluster add-node 192.168.0.31:7006 192.168.0.31:7000

添加到主节点中,7000为自己任意主节点

 添加后槽显示空

使用redis-cli命令为7006分配hash槽,找到集群中的任意一个主节点(7000),对其进行重新分片工作

命令:./redis-cli --cluster reshard 192.168.198.128:7000

输入100,分配100槽

 提示需要加入槽点的id是多少(槽点id来自如下图,在cluster nodes中查询到需要增加槽点的主节点输入即可)

 下来需要输入增加类型(all,done两种)

两种方式:

一种是all,以将所有节点用作散列槽的源节点,

一种是done,这种是你自己选择从哪个节点上拿出来节点分给8007

备注:all是随机的,比如说我们要分出1000个,则3个主节点分别拿出333个,333个,334个节点分别7007,这里我们选择done,从7000拿1000个给7006

如果选择done,如上图需要先选择分配的master的id,master任意选择,在输入done回车就行

 

下图是否开始分配槽数,输入yes就行,分配开始

 

如图分配完成有槽数

 

添加从节点

./redis-cli --cluster add-node 192.168.198.128:7007 192.168.198.128:7001

如主节点同理,将需要加入的节点加入到集群中任意对应的节点(7001是集群中的从节点)

加入成功!

进入到当前从节点客户端

执行与主节点绑定命令CLUSTER REPLICATE d6c245137ae1c47bdabfee1e1cd8bfdff5acaf3f

d6c245137ae1c47bdabfee1e1cd8bfdff5acaf3f   :主节点id

查看

 7006已经是7007的主节点了

 

 

删除从节点:

命令:

./redis-cli --cluster del-node 192.168.198.128.31:7007 230e6e5b45e310fffafd2809f0bd5c869889a015

 

删除主节点:

命令:

./redis-cli --cluster reshard 192.168.198.128:7006

 

关闭节点:

命令:./redis-cli -p 7000 shutdown 

 

 

服务启动成功了但是telnet 192.168.xx.xx 7001不通

   如果telnet不通,但是ps -ef|grep redis可以看到服务或者本地客户端可以连接,远程客户端连接不了。这个时候就要修改redis.conf参数了

vim 7001(2)/redis.co

关掉受保护模式

启动redis时没有反应,查看进程没有相关进程号。

Redis.conf文件中有一个

Logfile标签,可以设置日志文件输出到这个文件中进行排查问题

 

 

注意下的情况[ERR] Node 192.168.198.128:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决:

这个时候需要将每个节点下的这几个文件给删掉(测试情况删掉,实际应用不要删,这是备份文件以及节点信息,按实际的情况进行处理)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值