我们使用Sentinel模式搭建的redis集群虽然解决了高可用的问题,但是最终也只有一个主节点;当业务量大的时候会产生如下问题:
并发写的请求增高;
数据量增大;此时需要考虑数据分片存储了;
单个服务器的网卡上限达到瓶颈;
由此单个主从复制就无法满足需求了,因此Redis Cluster模式登场了;

Redis Cluster是分布式架构:即Redis Cluster中有多个节点(主从复制节点),每个节点都负责进行数据读写操作;每个节点之间会进行通信。简单来说就是多个主从复制节点集群提供服务。
集群要求:
Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。
部署集群
我们在每台机器上执行如下命令来创建6个redis服务。
docker run -d -v /home/app/redis-cluster/data:/data --name redis-cluster -p 6379:6379 -p 16379:16379 redis redis-server --requirepass "123456" --appendonly yes --masterauth "123456" --cluster-enabled yes
后面这个16379端口使用redis集群间进行数据通讯的端口,它是在你设置的redis访问端口上+10000;
如果向使用配置文件实现可以修改redis.conf配置中集群相关配置即可,获取redis.conf配置:
wget http://download.redis.io/redis-stable/sentinel.conf
在上面的命令需要加上配置文件路径映射,下面是示例命令
docker run -d -v /home/app/redis-cluster/data:/data -v /home/app/redis/conf:/usr/local/etc/redis --name redis-c1 -p 6381:6379 -p 16379:16379 redis redis-server /usr/local/etc/redis/redis.conf
下面开始集群的配置,直接使用redis-cli创建集群即可;
docker exec -it redis-cluster /bin/bash
redis-cli --cluster create 192.168.56.101:6379 192.168.56.102:6379 192.168.56.103:6379 192.168.56.104:6379 192.168.56.105:6379 192.168.56.106:6379 --cluster-replicas 1 -a 123456
参数最后加-a是因为我们设置了密码,因此需要加上访问密码;之后输入yes即可。
注意如果在一台机器上搞的docker需要使用host模式的网络连接类型才行,在创建的时候需要使用docker容器的IP;我们通过docker inspect 容器ID命令获取容器的IP。

文章转载自起岸星辰,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




