redis高可用集群搭建

上篇博客记录了哨兵模式的集群搭建,今天搭建高可用的redis集群以及两种集群架构的对比。

搭建集群(参考redis官方文档)

1、在redis目录中创建cluster目录,cluster下分别创建存放redis.conf配置文件的目录如图:

2、修改配置文件

redis官方认为redis集群最少需要如下配置

port 9001 #根据实际情况进行修改
cluster-enabled yes #表示开启集群模式
cluster-config-file nodes-9001.conf #这个文件永远不需要人为操作,redis集群启动时创建。 
cluster-node-timeout 5000
appendonly yes

而我还做了如下配置

pidfile /var/run/redis_9001.pid # 把pid进程号写入pidfile配置的文件 
dir /usr/soft/redis-5.0.3/cluster/9001/ #数据存放目录,每个节点都不同,否则可能会导致数据丢失
logfile "9001.log"

3、分别复制redis.conf配置文件到9001-9008目录,并根据端口不同修改不同的配置

4、通过redis-server命令分别启动6个redis服务,端口依次是9001-9006。

5、创建集群:

redis5使用redis-cli 命令;而redis3或者4用redis-trib.rb命令

redis-cli --cluster create  192.168.195.128:9001 192.168.195.128:9002\
192.168.195.128:9003 192.168.195.128:9004 192.168.195.128:9005 192.168.195.128:9006 \
--cluster-replicas 1 #表示一个master挂一个slave

最后如果创建成功,会出现

[OK] All 16384 slots covered

通过redis-cli -p 9001命令连接redis集群服务,并输入cluster nodes可以查看redis节点信息

集群操作

1、新增节点

新增节点有两种方式,一是让该节点成为主节点:

通过redis-server命令分别启动端口为9007和9008的redis服务,通过命令

src/redis-cli --cluster add-node 192.168.195.128:9007 192.168.195.128:9001新增端口为9007的服务加入集群,但此时9007是一个没有分配hash槽位的master,此时可以通过src/rediscli ‐‐cluster reshard 192.168.195.128:9001命令给9007服务分配hash槽位

另外,使用命令src/redis-cli --cluster add-node 192.168.195.128:9008 192.168.195.128:9001加入9008服务,通过redis-cli -p 9008连接9008redis服务键入

cluster replicate acb37630ec411432ace6913c6a0760974c094fd3

使9008成为9007的slave。最后集群如图:

当kill 9001节点然后重启 ,9001的从节点9004变为主节点

 

2、删除节点

移除9008节点

src/redis-cli --cluster del-node 192.168.195.128:9001 97ef5e2d9e7f0e69bd2d83194c7644986d136a34

redis高可用集群搭建_第1张图片

移除9007节点,由于9007有hash槽位,所以移除节点比较麻烦,通过

src/redis-cli --cluster reshard 192.168.195.128:9007

迁移hash槽位,再删除9007节点(这里迁移hash槽位出现失败情况)

你可能感兴趣的:(redis,数据库,database)