假设公司现在1-2亿条数据需要缓存,单机单台设备肯定扛不住的,这个时候就需要分布式存储,用redis如果落地呢?本期就带着大家搭建一个3主3从redis集群。
1、拉取redis6.0.8镜像
涉及命令:docker pull redis:6.0.8
实例:
2、创建6个redis容器实例
涉及命令:
docker run -d --name redis-node-1 --net host --privileged=true -v /usr/local/tool/volumn/redis/node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /usr/local/tool/volumn/redis/node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382;
docker run -d --name redis-node-3 --net host --privileged=true -v /usr/local/tool/volumn/redis/node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383;
docker run -d --name redis-node-4 --net host --privileged=true -v /usr/local/tool/volumn/redis/node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384;
docker run -d --name redis-node-5 --net host --privileged=true -v /usr/local/tool/volumn/redis/node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385;
docker run -d --name redis-node-6 --net host --privileged=true -v /usr/local/tool/volumn/redis/node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386;
Options说明:
选项 | 说明 |
---|---|
–net host | 使用宿主机的IP和端口,默认 这个和docker网络有关,后续我们会讲解,先记住 |
-v /data/redis/share/redis-node-x:/data | 容器卷,将redis数据存储在宿主机上 |
–cluster-enabled yes | 开启redis集群 |
–appendonly yes | 开启持久化 |
实例:
3、构建主从关系
进入任意一个redis容器节点,构建主从关系,由于我的宿主机IP为:192.168.13.61
涉及命令:
redis-cli --cluster create 192.168.13.61:6381 192.168.13.61:6382 192.168.13.61:6383 192.168.13.61:6384 192.168.13.61:6385 192.168.13.61:6386 --cluster-replicas 1
Options说明:
–cluster-replicas 1 : 为每个master 创建 1 个 slave
实例:
4、查看节点状态
涉及命令:
#查看集群状态 redis默认端口为6379 因为我们改变了默认端口,所以需要手动指定
redis-cli -p 6381 cluster info
实例:进入任意节点,查看集群状态
集群状态每个参数说明:
- cluster_state:状态是ok节点是否能够接收查询。fail状态表示有哈希槽没有被绑定到任意一个节点或者节点可以提供服务但是带有fail标记,或者该节点无法连续到多数master节点
- cluster_slots_assigned:与某个节点关联的槽数(不是未绑定的)。这个数字应该是16384,节点才能正常工作,这意味着每个散列槽应该映射到一个节点。
- cluster_slots_ok:哈希槽状态不是Fail和PFail的数量
- cluster_slots_pfail:哈希槽状态是PFAIL的数量。请注意,只要PFAIL状态不由FAIL故障检测算法提升,这些散列槽仍可正常工作。PFAIL仅意味着我们目前无法与节点通话,但可能只是一个暂时的错误。
- cluster_slots_fail:哈希槽状态是FAIL的数量。如果此数字不为零,则该节点无法提供查询,除非在配置中cluster-require-full-coverage设置为no。
- cluster_known_nodes:群集中已知节点的总数,包括处于握手(HANDSHAKE)状态还没有称为集群正式成员的节点
- cluster_size:至少包含一个哈希槽而且能够提供服务的master节点数量
- cluster_current_epoch:集群本地Current Epoch变量的值,这个值在节点故障转移期间创建的独特的自增版本号
- cluster_my_epoch:我们正在与之交谈的Config Epoch节点。这是分配给此节点的当前配置版本。
- cluster_stats_messages_sent:通过node-to-node二进制总线发送的消息数量
- cluster_stats_messages_received:通过node-to-node二进制总线接收的消息数量
5、查看集群节点
进入任意一个节点,查询集群节点信息
涉及命令:
redis-cli -p 6381 cluster nodes
6、数据存储
进入任意节点,存储数据
涉及命令:
redis-cli -p 6381 -c
#注意 因为我们是在集群状态下执行数据存储,必须加入-c 选项,用于redis集群通过key切换节点存储
7、检查每个节点的情况
进入任意节点,执行命令
涉及命令:
redis-cli --cluster check 192.168.13.61:6381
实例:
到此,我们的redis3主3从配置结束,但是适逢双十一,流量爆增时就需要自动扩容,双十一过后需要自动缩容,后续我们继续讲解redis扩容和缩容
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84251.html