Redis高可用三主三从集群部署(三种方式部署/18个节点的大集群)

文章目录

  • 🔊博主介绍
  • 🥤本文内容
  • 使用宝塔面板搭建
    • 集群规划
    • 配置
    • 验证
  • 使用docker搭建
  • 使用脚本搭建
    • 规划
    • 防火墙端口
    • 配置脚本
    • redis.conf配置文件
    • 执行过程
  • 📢文章总结
  • 📥博主目标

🔊博主介绍

🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文专业写手、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五公里、🚀徒步爬过衡山、🔥有过三个月减肥20斤的经历、是个喜欢躺平的狠人。

📕拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、Spring MVC、SpringCould、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RockerMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。

📙有过从0到1的项目高并发项目开发与管理经验,对JVM调优、MySQL调优、Redis调优 、ElasticSearch调优、消息中间件调优、系统架构调优都有着比较全面的实战经验。

📘有过云端搭建服务器环境,自动化部署CI/CD,弹性伸缩扩容服务器(最高200台),了解过秒级部署(阿里云的ACK和华为云的云容器引擎CCE)流程,能独立开发和部署整个后端服务,有过分库分表的实战经验。

🎥经过多年在CSDN创作上千篇文章的经验积累,我已经拥有了不错的写作技巧,与清华大学出版社签下了四本书籍的合约,并将陆续在明年出版。这些书籍包括了基础篇、进阶篇、架构篇的📌《Java项目实战—深入理解大型互联网企业通用技术》📌,以及📚《解密程序员的思维密码–沟通、演讲、思考的实践》📚。具体出版计划会根据实际情况进行调整,希望各位读者朋友能够多多支持!


文章目录

  • 🔊博主介绍
  • 🥤本文内容
  • 使用宝塔面板搭建
    • 集群规划
    • 配置
    • 验证
  • 使用docker搭建
  • 使用脚本搭建
    • 规划
    • 防火墙端口
    • 配置脚本
    • redis.conf配置文件
    • 执行过程
  • 📢文章总结
  • 📥博主目标

🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。

💡在这个美好的时刻,本人不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

🥤本文内容

CSDN

使用宝塔面板搭建

集群规划

使用CentOS7进行操作,Linux系统,配置为2个处理器核心,4个线程,8GB内存和100GB磁盘存储,所有计算机都首先进行YUM更新,修改每台计算机的固定IP地址,然后安装宝塔面板,在宝塔面板的软件商店中安装Redis,并开放端口6379(Redis默认端口)。

IP地址布局:
主节点1(Master1):192.168.80.101
主节点2(Master2):192.168.80.102
主节点3(Master3):192.168.80.103
从节点1(Slave1):192.168.80.111
从节点2(Slave2):192.168.80.112
从节点3(Slave3):192.168.80.113

在这里插入图片描述

配置

在Redis 6.0中,你可以使用server_cpulist、bio_cpulist、aof_rewrite_cpulist和bgsave_cpulist等配置项来指定Redis的不同进程或线程应该绑定到哪些CPU内核上运行。你需要根据你的服务器硬件和性能需求来设置这些参数。例如,如果你的服务器有8个CPU内核,并且你希望Redis进程和I/O线程在不同的内核上运行,你可以像下面示例那样配置它们。

  • server_cpulist:RedisServer和IO线程绑定到CPU内核
  • bio_cpulist:后台子线程绑定到CPU内核
  • aof_rewrite_cpulist:后台AOF rewrite进程绑定到CPU内核
  • bgsave_cpulist:后台RDB进程绑定到CPU内核

这可以帮助你优化Redis的性能,特别是当你有多个CPU内核,并且希望将不同类型的操作分散到不同的内核上时。以下是一个redis.conf配置文件的示例,展示了如何设置这些参数:

# Redis配置文件示例  
# 绑定到所有网络接口  
bind 0.0.0.0
# 保护模式设置为no,这样Redis就可以接受来自任何主机的连接  
protected-mode no
# Redis 集群节点监听的端口  
port PORT
# TCP backlog的数量,默认是1500,在高并发环境下你可能需要增加这个值。同时需要编辑sudo nano /etc/sysctl.conf文件,添加或者编辑net.core.somaxconn = 1500,在 nano 编辑器中,按 Ctrl + O(这是“O”字母,不是数字零)。这将会提示你保存文件。如果文件是第一次创建或之前没有被修改过,它会询问你文件名,此时你可以直接按 Enter 键确认使用当前的文件名。如果文件已经被修改过,它会直接保存更改。保存文件后,按 Ctrl + X。这将会退出 nano 编辑器并返回到终端。否则会出现提示 TCP 的 backlog 设置(1500)不能强制执行,因为 /proc/sys/net/core/somaxconn 的值被设置为更低的 128。/proc/sys/net/core/somaxconn 是一个内核参数,它定义了系统中每一个端口上排队的最大 TCP 连接数。sudo sysctl -p
tcp-backlog 1500
# 开启集群模式
cluster-enabled yes
# 超时时间,超时则认为master宕机,随后主备切换。单位是毫秒  
cluster-node-timeout 5000
# 集群配置文件的路径,Redis 集群节点会自动创建和更新这个文件  
cluster-config-file nodes-PORT.conf
#集群各节点IP地址,记得修改为你的ip地址
cluster-announce-ip REDIS_CLUSTER_IP
#集群节点映射端口 
cluster-announce-port PORT
#集群总线端口 
cluster-announce-bus-port 1PORT 
# TCP 后台线程和I/O线程:如果启用了 TCP 后台线程(io-threads-do-reads)或 I/O 线程(io-threads),确保为这些线程配置了正确的 CPU 内核列表(server_cpulist、bio_cpulist 等)。
io-threads-do-reads yes
io-threads 4
# Redis Server绑定到的CPU内核列表,这里绑定到CPU 0和1  
server_cpulist 0-1 
# 后台I/O线程绑定到的CPU内核列表,这里绑定到CPU 2和3  
bio_cpulist 2-3
# AOF重写进程绑定到的CPU内核列表,这里绑定到CPU 4  
aof_rewrite_cpulist 4 
# RDB持久化进程绑定到的CPU内核列表,这里绑定到CPU 5  
bgsave_cpulist 5
# 启用AOF持久化  
appendonly yes
# AOF文件名称  
appendfilename "appendonly.aof"
# appendonly 文件同步策略,always 表示每个写命令都立即同步,everysec 表示每秒同步一次,no 表示由操作系统决定何时同步  
appendfsync everysec
# 密码设置  
requirepass admin
# Redis集群启用了密码验证,那么除了在每个节点的配置文件中设置requirepass之外,还需要设置masterauth
masterauth admin
# 禁用 RDB 快照持久化,因为集群模式下有节点复制功能  
save ""
# 禁用 AOF 重写
auto-aof-rewrite-percentage 0
auto-aof-rewrite-min-size 0

这些参数的具体使用可能会因Redis版本的不同而有所变化,所以请确保查阅你正在使用的Redis版本的官方文档以获取最准确的信息。

在配置完成后,你需要重启Redis服务来使新的配置生效。

验证

验证是否启动成功

ps -ef | grep redis

查看版本

redis-cli --version

redis5.0以上集群创建方式改为了C编写的redis-cli创建,创建集群,–cluster-replicas 1指定从库数量1,创建顺序三主-三从。即主-主-主-从-从-从。如果redis设置了密码,则创建集群时需要添加密码信息 -a 密码。在任意节点上执行以下命令:

redis-cli -a admin --cluster create 192.168.80.101:6371 192.168.80.102:6372 192.168.80.103:6373 192.168.80.111:6381 192.168.80.112:6382 192.168.80.113:6383 --cluster-replicas 1

确认集群配置信息,确认无误则输入 yes 并按回车。

[root@master1 redis]# redis-cli -a admin --cluster create 192.168.80.101:6371 192.168.80.102:6372 192.168.80.103:6373 192.168.80.111:6381 192.168.80.112:6382 192.168.80.113:6383 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.80.112:6382 to 192.168.80.101:6371
Adding replica 192.168.80.113:6383 to 192.168.80.102:6372
Adding replica 192.168.80.111:6381 to 192.168.80.103:6373
M: e6e0dd6a4e109660df421b4bef93f4f72991619c 192.168.80.101:6371slots:[0-5460] (5461 slots) master
M: 5520b535a6e9adc9424c6bd35ccff689a7f9c18a 192.168.80.102:6372slots:[5461-10922] (5462 slots) master
M: ea32e9db2b4a9b16e509ecb6a2235abb7a13cd0c 192.168.80.103:6373slots:[10923-16383] (5461 slots) master
S: bb78f4547103f6e1bed1482a5ee8204c4c257f81 192.168.80.111:6381replicates ea32e9db2b4a9b16e509ecb6a2235abb7a13cd0c
S: 975f23baca9ccc541b16cab916d66efa7d1b6fc2 192.168.80.112:6382replicates e6e0dd6a4e109660df421b4bef93f4f72991619c
S: 559528309e92929364623c58208e268c73933d9c 192.168.80.113:6383replicates 5520b535a6e9adc9424c6bd35ccff689a7f9c18a
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join

检查集群:

redis-cli -a admin --cluster check 192.168.80.101:6379

查看集群信息:

redis-cli -a admin -h 192.168.80.101 -p 6379 -c

-a Redis密码
-c表示集群模式,指定IP和端口

cluster info 

查看集群节点列表

cluster nodes

使用docker搭建

在安装好docker之后,直接在不同机器上执行以下命令(节点1):

docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6379

这种方式启动少了很多配置,单机可以怎么弄,集群不建议

使用脚本搭建

规划

三台服务器,每台服务器部署6个Redis实例,累计形成一个18个节点的Redis大集群。这意味着服务器的硬件资源不能太小,最少都是8核心8GB以上的配置,太低可能会出问题。

防火墙端口

在配置Redis集群时,需要开放两类端口:

  • 客户端访问端口:这是Redis节点用于与客户端进行交互的端口。在默认情况下,Redis使用6379作为这个端口,但你可以根据需要进行修改。在配置文件中,这个端口通常被设置为port配置项的值。
  • 集群总线端口:这是Redis集群节点之间用于通信和数据交换的端口。这个端口通常是客户端访问端口加10000。例如,如果客户端访问端口是6379,那么集群总线端口就是16379。在配置文件中,这个端口没有直接的配置项,但它是基于port配置项的值自动计算的。

因此,在配置Redis集群时,你需要确保你的防火墙允许通过这两类端口进行通信。对于每个Redis节点,都需要开放相应的客户端访问端口和集群总线端口。例如,如果你有三个Redis节点,分别使用6379、6380和6381作为客户端访问端口,那么你需要开放的端口就是6379、6380、6381以及对应的集群总线端口16379、16380、16381。

请注意,这些端口只是默认的,你可以根据你的需要进行修改。但是,在修改端口后,你需要确保Redis配置文件中的port配置项和客户端的连接字符串都使用了正确的端口号。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

配置脚本

执行编写脚本docker-redis-cluster.sh:

vim docker-redis-cluster.sh
#!/bin/bash
# 循环执行6for i in $(seq 6)
do# 设置端口号PORT=637$i  # 获取当前主机的IP地址REDIS_CLUSTER_IP=$(hostname -I | awk '{print $1}')  # 设置配置文件路径CONFIG_FILE="/opt/software/rediscluster/conf/redis-$i.conf"  # 通过sed命令替换模板文件中的占位符,生成实际的配置文件sed "s/PORT/${PORT}/g;s/REDIS_CLUSTER_IP/${REDIS_CLUSTER_IP}/g;" /opt/software/rediscluster/conf/redis.conf > "$CONFIG_FILE"  # 使用docker运行Redis容器,并挂载配置文件和数据目录docker run -d --name redis-node-$i --restart=unless-stopped --net host --privileged=true -v /opt/software/rediscluster/node/redis-node-$i:/data -v "$CONFIG_FILE":/etc/redis/redis.conf redis:7.2.4 redis-server /etc/redis/redis.conf
done

redis.conf配置文件

# Redis配置文件示例  
# 绑定到所有网络接口  
bind 0.0.0.0
# 保护模式设置为no,这样Redis就可以接受来自任何主机的连接  
protected-mode no
# Redis 集群节点监听的端口  
port PORT
# TCP backlog的数量,默认是1500,在高并发环境下你可能需要增加这个值。同时需要编辑sudo nano /etc/sysctl.conf文件,添加或者编辑net.core.somaxconn = 1500,在 nano 编辑器中,按 Ctrl + O(这是“O”字母,不是数字零)。这将会提示你保存文件。如果文件是第一次创建或之前没有被修改过,它会询问你文件名,此时你可以直接按 Enter 键确认使用当前的文件名。如果文件已经被修改过,它会直接保存更改。保存文件后,按 Ctrl + X。这将会退出 nano 编辑器并返回到终端。否则会出现提示 TCP 的 backlog 设置(1500)不能强制执行,因为 /proc/sys/net/core/somaxconn 的值被设置为更低的 128/proc/sys/net/core/somaxconn 是一个内核参数,它定义了系统中每一个端口上排队的最大 TCP 连接数。sudo sysctl -p
tcp-backlog 1500
# 开启集群模式
cluster-enabled yes
# 超时时间,超时则认为master宕机,随后主备切换。单位是毫秒  
cluster-node-timeout 5000
# 集群配置文件的路径,Redis 集群节点会自动创建和更新这个文件  
cluster-config-file nodes-PORT.conf
#集群各节点IP地址,记得修改为你的ip地址
cluster-announce-ip REDIS_CLUSTER_IP
#集群节点映射端口 
cluster-announce-port PORT
#集群总线端口 
cluster-announce-bus-port 1PORT 
# TCP 后台线程和I/O线程:如果启用了 TCP 后台线程(io-threads-do-reads)或 I/O 线程(io-threads),确保为这些线程配置了正确的 CPU 内核列表(server_cpulist、bio_cpulist 等)。
io-threads-do-reads yes
io-threads 4
# Redis Server绑定到的CPU内核列表,这里绑定到CPU 01  
server_cpulist 0-1 
# 后台I/O线程绑定到的CPU内核列表,这里绑定到CPU 23  
bio_cpulist 2-3
# AOF重写进程绑定到的CPU内核列表,这里绑定到CPU 4  
aof_rewrite_cpulist 4 
# RDB持久化进程绑定到的CPU内核列表,这里绑定到CPU 5  
bgsave_cpulist 5
# 启用AOF持久化  
appendonly yes
# AOF文件名称  
appendfilename "appendonly.aof"
# appendonly 文件同步策略,always 表示每个写命令都立即同步,everysec 表示每秒同步一次,no 表示由操作系统决定何时同步  
appendfsync everysec
# 密码设置  
requirepass admin
# Redis集群启用了密码验证,那么除了在每个节点的配置文件中设置requirepass之外,还需要设置masterauth
masterauth admin
# 禁用 RDB 快照持久化,因为集群模式下有节点复制功能  
save ""
# 禁用 AOF 重写
auto-aof-rewrite-percentage 0
auto-aof-rewrite-min-size 0

执行过程

执行以下命令运行脚本:

sh docker_redis6.sh
docker exec -it redis-node-1 bash
redis-cli  -a admin --cluster create 192.168.80.101:6371 192.168.80.101:6372 192.168.80.101:6373 192.168.80.101:6374 192.168.80.101:6375 192.168.80.101:6376 192.168.80.102:6371 192.168.80.102:6372 192.168.80.102:6373 192.168.80.102:6374 192.168.80.102:6375 192.168.80.102:6376 192.168.80.103:6371 192.168.80.103:6372 192.168.80.103:6373 192.168.80.103:6374 192.168.80.103:6375 192.168.80.103:6376 --cluster-replicas 1
redis-cli -p 6371 -a admin
cluster info 
cluster nodes

如果需要停止删除所有容器并移除节点信息,请执行以下命令:

docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) && rm -rf node/

在这里插入图片描述

操作日志如下:

[root@node3 rediscluster]# sh docker-redis-cluster.sh 
2ddafd3e91c676a4884536b250712b17002027b30bc184b491701a474c0ba9a9
c4ff49c66a1824c6089a338bb8acdf86ce339e29e5155b549d1c00965e12b0ed
530daa9ff0d0b68176b77617ad72282e518862a3dadda021ca948b7aa13f1e16
07effb9132ab8d7899f51ec30ec1a108f130dc103a00a1e4d211b744a960d047
2f241530e2951b4c685c3c4e910c461c98d1b23ba0b88aae238b4af1ee440210
33ff2eed2ae65a41c409985465e9b5a7c0b90ae9d614dff13cb63e4e715aa447
[root@node3 rediscluster]# docker exec -it redis-node-1 bash
root@node3:/data# redis-cli  -a admin --cluster create 192.168.80.101:6371 192.168.80.101:6372 192.168.80.101:6373 192.168.80.101:6374 192.168.80.101:6375 192.168.80.101:6376 192.168.80.102:6371 192.168.80.102:6372 192.168.80.102:6373 192.168.80.102:6374 192.168.80.102:6375 192.168.80.102:6376 192.168.80.103:6371 192.168.80.103:6372 192.168.80.103:6373 192.168.80.103:6374 192.168.80.103:6375 192.168.80.103:6376 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 18 nodes...
Master[0] -> Slots 0 - 1819
Master[1] -> Slots 1820 - 3640
Master[2] -> Slots 3641 - 5460
Master[3] -> Slots 5461 - 7281
Master[4] -> Slots 7282 - 9101
Master[5] -> Slots 9102 - 10922
Master[6] -> Slots 10923 - 12742
Master[7] -> Slots 12743 - 14563
Master[8] -> Slots 14564 - 16383
Adding replica 192.168.80.102:6374 to 192.168.80.101:6371
Adding replica 192.168.80.103:6374 to 192.168.80.102:6371
Adding replica 192.168.80.101:6375 to 192.168.80.103:6371
Adding replica 192.168.80.102:6375 to 192.168.80.101:6372
Adding replica 192.168.80.103:6375 to 192.168.80.102:6372
Adding replica 192.168.80.101:6376 to 192.168.80.103:6372
Adding replica 192.168.80.102:6376 to 192.168.80.101:6373
Adding replica 192.168.80.103:6376 to 192.168.80.102:6373
Adding replica 192.168.80.101:6374 to 192.168.80.103:6373
M: 0c2ce94d99291b55f181867991f9e39aa2690301 192.168.80.101:6371slots:[0-1819] (1820 slots) master
M: dc610488eb49a1d53b02f246171ca792482600ee 192.168.80.101:6372slots:[5461-7281] (1821 slots) master
M: fc901fa4cb00cba1b22beae6114f6c45898f1f44 192.168.80.101:6373slots:[10923-12742] (1820 slots) master
S: 668179a19a8c85c74b8f04456b25e7a844757f82 192.168.80.101:6374replicates e2179f84bb47afa517b793bf95aa755fe72f3dae
S: bda761bbb7bababb19d7a85a99f56782e30c03b6 192.168.80.101:6375replicates ba00470e7d33e2b677d3dab1fd2d1d95af03fa53
S: 9f5aeb9230e3fa7fb86b75a1ab9a07b8801e52c7 192.168.80.101:6376replicates 2930c5a669a3378f6abad869f03d2f51dda26642
M: c37f388dd0a0ff29cfbf9936a671565f77444311 192.168.80.102:6371slots:[1820-3640] (1821 slots) master
M: 7e711ab35b67994b0ef5a5d12ad63e217a44e644 192.168.80.102:6372slots:[7282-9101] (1820 slots) master
M: 54f8ca5d4e7f4e40798e17a49f21c915c51f95c2 192.168.80.102:6373slots:[12743-14563] (1821 slots) master
S: 90452b7335ded535fe3b72ebb1d7e83df3962abd 192.168.80.102:6374replicates 0c2ce94d99291b55f181867991f9e39aa2690301
S: c30f6ed1b91580aea9b89bafe36b4393dffdd549 192.168.80.102:6375replicates dc610488eb49a1d53b02f246171ca792482600ee
S: 9be6338fcd653b7fd632a474c2107f93a1aa6852 192.168.80.102:6376replicates fc901fa4cb00cba1b22beae6114f6c45898f1f44
M: ba00470e7d33e2b677d3dab1fd2d1d95af03fa53 192.168.80.103:6371slots:[3641-5460] (1820 slots) master
M: 2930c5a669a3378f6abad869f03d2f51dda26642 192.168.80.103:6372slots:[9102-10922] (1821 slots) master
M: e2179f84bb47afa517b793bf95aa755fe72f3dae 192.168.80.103:6373slots:[14564-16383] (1820 slots) master
S: 5a8a30fd89c1d00ddf8a5700c523d1fab9663071 192.168.80.103:6374replicates c37f388dd0a0ff29cfbf9936a671565f77444311
S: afbd41e97fef798f6e87d6d2a0e76433570eae6e 192.168.80.103:6375replicates 7e711ab35b67994b0ef5a5d12ad63e217a44e644
S: ddee24135bee2cad01c24a2aa473a50ece55f55b 192.168.80.103:6376replicates 54f8ca5d4e7f4e40798e17a49f21c915c51f95c2
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.....
>>> Performing Cluster Check (using node 192.168.80.101:6371)
M: 0c2ce94d99291b55f181867991f9e39aa2690301 192.168.80.101:6371slots:[0-1819] (1820 slots) master1 additional replica(s)
M: e2179f84bb47afa517b793bf95aa755fe72f3dae 192.168.80.103:6373slots:[14564-16383] (1820 slots) master1 additional replica(s)
S: afbd41e97fef798f6e87d6d2a0e76433570eae6e 192.168.80.103:6375slots: (0 slots) slavereplicates 7e711ab35b67994b0ef5a5d12ad63e217a44e644
S: bda761bbb7bababb19d7a85a99f56782e30c03b6 192.168.80.101:6375slots: (0 slots) slavereplicates ba00470e7d33e2b677d3dab1fd2d1d95af03fa53
S: 668179a19a8c85c74b8f04456b25e7a844757f82 192.168.80.101:6374slots: (0 slots) slavereplicates e2179f84bb47afa517b793bf95aa755fe72f3dae
S: 9f5aeb9230e3fa7fb86b75a1ab9a07b8801e52c7 192.168.80.101:6376slots: (0 slots) slavereplicates 2930c5a669a3378f6abad869f03d2f51dda26642
M: 2930c5a669a3378f6abad869f03d2f51dda26642 192.168.80.103:6372slots:[9102-10922] (1821 slots) master1 additional replica(s)
S: 90452b7335ded535fe3b72ebb1d7e83df3962abd 192.168.80.102:6374slots: (0 slots) slavereplicates 0c2ce94d99291b55f181867991f9e39aa2690301
M: c37f388dd0a0ff29cfbf9936a671565f77444311 192.168.80.102:6371slots:[1820-3640] (1821 slots) master1 additional replica(s)
M: ba00470e7d33e2b677d3dab1fd2d1d95af03fa53 192.168.80.103:6371slots:[3641-5460] (1820 slots) master1 additional replica(s)
M: 7e711ab35b67994b0ef5a5d12ad63e217a44e644 192.168.80.102:6372slots:[7282-9101] (1820 slots) master1 additional replica(s)
M: dc610488eb49a1d53b02f246171ca792482600ee 192.168.80.101:6372slots:[5461-7281] (1821 slots) master1 additional replica(s)
S: 9be6338fcd653b7fd632a474c2107f93a1aa6852 192.168.80.102:6376slots: (0 slots) slavereplicates fc901fa4cb00cba1b22beae6114f6c45898f1f44
M: fc901fa4cb00cba1b22beae6114f6c45898f1f44 192.168.80.101:6373slots:[10923-12742] (1820 slots) master1 additional replica(s)
S: c30f6ed1b91580aea9b89bafe36b4393dffdd549 192.168.80.102:6375slots: (0 slots) slavereplicates dc610488eb49a1d53b02f246171ca792482600ee
M: 54f8ca5d4e7f4e40798e17a49f21c915c51f95c2 192.168.80.102:6373slots:[12743-14563] (1821 slots) master1 additional replica(s)
S: 5a8a30fd89c1d00ddf8a5700c523d1fab9663071 192.168.80.103:6374slots: (0 slots) slavereplicates c37f388dd0a0ff29cfbf9936a671565f77444311
S: ddee24135bee2cad01c24a2aa473a50ece55f55b 192.168.80.103:6376slots: (0 slots) slavereplicates 54f8ca5d4e7f4e40798e17a49f21c915c51f95c2
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
root@node3:/data# redis-cli -p 6371 -a admin
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6371> cluster info 
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:18
cluster_size:9
cluster_current_epoch:18
cluster_my_epoch:13
cluster_stats_messages_ping_sent:134
cluster_stats_messages_pong_sent:149
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:284
cluster_stats_messages_ping_received:149
cluster_stats_messages_pong_received:135
cluster_stats_messages_received:284
total_cluster_links_buffer_limit_exceeded:0
127.0.0.1:6371> cluster nodes
bda761bbb7bababb19d7a85a99f56782e30c03b6 192.168.80.101:6375@16375 slave ba00470e7d33e2b677d3dab1fd2d1d95af03fa53 0 1709020740616 13 connected
5a8a30fd89c1d00ddf8a5700c523d1fab9663071 192.168.80.103:6374@16374 slave c37f388dd0a0ff29cfbf9936a671565f77444311 0 1709020741524 7 connected
e2179f84bb47afa517b793bf95aa755fe72f3dae 192.168.80.103:6373@16373 master - 0 1709020740918 15 connected 14564-16383
c30f6ed1b91580aea9b89bafe36b4393dffdd549 192.168.80.102:6375@16375 slave dc610488eb49a1d53b02f246171ca792482600ee 0 1709020741000 2 connected
54f8ca5d4e7f4e40798e17a49f21c915c51f95c2 192.168.80.102:6373@16373 master - 0 1709020742000 9 connected 12743-14563
ddee24135bee2cad01c24a2aa473a50ece55f55b 192.168.80.103:6376@16376 slave 54f8ca5d4e7f4e40798e17a49f21c915c51f95c2 0 1709020742534 9 connected
90452b7335ded535fe3b72ebb1d7e83df3962abd 192.168.80.102:6374@16374 slave 0c2ce94d99291b55f181867991f9e39aa2690301 0 1709020741000 1 connected
ba00470e7d33e2b677d3dab1fd2d1d95af03fa53 192.168.80.103:6371@16371 myself,master - 0 1709020740000 13 connected 3641-5460
c37f388dd0a0ff29cfbf9936a671565f77444311 192.168.80.102:6371@16371 master - 0 1709020741000 7 connected 1820-3640
afbd41e97fef798f6e87d6d2a0e76433570eae6e 192.168.80.103:6375@16375 slave 7e711ab35b67994b0ef5a5d12ad63e217a44e644 0 1709020741423 8 connected
0c2ce94d99291b55f181867991f9e39aa2690301 192.168.80.101:6371@16371 master - 0 1709020742535 1 connected 0-1819
9be6338fcd653b7fd632a474c2107f93a1aa6852 192.168.80.102:6376@16376 slave fc901fa4cb00cba1b22beae6114f6c45898f1f44 0 1709020742635 3 connected
9f5aeb9230e3fa7fb86b75a1ab9a07b8801e52c7 192.168.80.101:6376@16376 slave 2930c5a669a3378f6abad869f03d2f51dda26642 0 1709020742535 14 connected
fc901fa4cb00cba1b22beae6114f6c45898f1f44 192.168.80.101:6373@16373 master - 0 1709020740514 3 connected 10923-12742
2930c5a669a3378f6abad869f03d2f51dda26642 192.168.80.103:6372@16372 master - 0 1709020741000 14 connected 9102-10922
7e711ab35b67994b0ef5a5d12ad63e217a44e644 192.168.80.102:6372@16372 master - 0 1709020742535 8 connected 7282-9101
668179a19a8c85c74b8f04456b25e7a844757f82 192.168.80.101:6374@16374 slave e2179f84bb47afa517b793bf95aa755fe72f3dae 0 1709020742432 15 connected
dc610488eb49a1d53b02f246171ca792482600ee 192.168.80.101:6372@16372 master - 0 1709020741625 2 connected 5461-7281
127.0.0.1:6371> 

CSDN

📢文章总结

对本篇文章进行总结:

🔔以上就是今天要讲的内容,阅读结束后,反思和总结所学内容,并尝试应用到现实中,有助于深化理解和应用知识。与朋友或同事分享所读内容,讨论细节并获得反馈,也有助于加深对知识的理解和吸收。

以梦为马,不负韶华

🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

🚀🎉希望各位读者大大多多支持用心写文章的博主,现在时代变了,🚀🎉 信息爆炸,酒香也怕巷子深🔥,博主真的需要大家的帮助才能在这片海洋中继续发光发热🎨,所以,🏃💨赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!

  • 💂 博客主页: 我是廖志伟
  • 👉开源项目:java_wxid
  • 🌥 哔哩哔哩:我是廖志伟
  • 🎏个人社区:幕后大佬
  • 🔖个人微信号SeniorRD
  • 🎉微信号二维码SeniorRD

📥博主目标

探寻内心世界,博主分享人生感悟与未来目标

  • 🍋程序开发这条路不能停,停下来容易被淘汰掉,吃不了自律的苦,就要受平庸的罪,持续的能力才能带来持续的自信。我本是一个很普通的程序员,放在人堆里,除了与生俱来的盛世美颜,就剩180的大高个了,就是我这样的一个人,默默写博文也有好多年了。
  • 📺有句老话说的好,牛逼之前都是傻逼式的坚持,希望自己可以通过大量的作品、时间的积累、个人魅力、运气、时机,可以打造属于自己的技术影响力。
  • 💥内心起伏不定,我时而激动,时而沉思。我希望自己能成为一个综合性人才,具备技术、业务和管理方面的精湛技能。我想成为产品架构路线的总设计师,团队的指挥者,技术团队的中流砥柱,企业战略和资本规划的实战专家。
  • 🎉这个目标的实现需要不懈的努力和持续的成长,但我必须努力追求。因为我知道,只有成为这样的人才,我才能在职业生涯中不断前进并为企业的发展带来真正的价值。在这个不断变化的时代,我们必须随时准备好迎接挑战,不断学习和探索新的领域,才能不断地向前推进。我坚信,只要我不断努力,我一定会达到自己的目标。

🔔有需要对自己进行综合性评估,进行职业方向规划,我可以让技术大牛帮你模拟面试、针对性的指导、传授面试技巧、简历优化、进行技术问题答疑等服务。

可访问:https://java_wxid.gitee.io/tojson/

开发人员简历优化、面试突击指导、技术问题解答

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c入门第二十五篇: 学生成绩管理系统优化(多线程)

前言 程夏:“你这个系统不好用啊?连上之后没有反应,是不是挂了?” 师弟:“不应该啊,我这边好好的,可以正常操作的。” 程夏:“我这边有问题,大概率还是你系统问题。你…

C语言标准库函数qsort( )——数据排序

大家好!我是保护小周ღ,本期为大家带来的是深度解剖C语言标准库函数 qsort(),qsort()函数他可以对任意类型的数据排序,博主会详细解释函数使用方法,以及使用快速排序的左右指针法模拟实现函数功能,这样的排…

IT廉连看——C语言——分支语句

IT廉连看—分支语句 一、什么是语句 C语句可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 本周后面介绍的是控制语句。 控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成&…

Delphi 报错 Type androidx.collection.ArraySet is defined multiple times

Delphi 11 建立一个新的 Multi-Device Application 编译成app的时候报错 报错信息 [PAClient Error] Error: E7688 Unable to execute "E:\Program\Java\jdk1.8.0_301\bin\java.exe" -cp "e:\program\embarcadero\studio\22.0\bin\Android\r8-3.3.28.jar"…

FPGA_SD卡读写

一 SD卡 SD卡,安全数字卡,体积小,容量大,存储速度块,支持热插拔。 二 SD卡存储容量 SD卡类型协议规范容量等级SDSCSD1.0上限至2GBSDHCSD2.02GB至32GBSDXCSD3.032GB至2TB 三 SD卡速度等级 标志串列数据写入速度UHS…

MWC 2024丨美格智能发布全新5G-A模组及FWA解决方案,将5.5G带入现实

2月26日,在MWC 2024世界移动通信大会上,美格智能正式宣布推出5G-A模组SRM817WE以及全新的5G-A FWA解决方案,包含5G-A CPE解决方案SRT858M、5G-A MiFi解决方案SRT878H和5G-A ODU解决方案SRT853MX,旨在进一步提升网络性能&#xff0…

跟着cherno手搓游戏引擎【25】封装2DRenderer,封装shader传参,自定义Texture

封装2DRenderer&#xff1a; Renderer.h: #include"ytpch.h" #include"Renderer.h" #include <Platform/OpenGL/OpenGLShader.h> #include"Renderer2D.h" namespace YOTO {Renderer::SceneData* Renderer::m_SceneData new Renderer::S…

python中“全局变量”之谜

全局变量&#xff0c;是不是以为着在整个程序中的值都是一样的&#xff0c;是不是都是同一个呢&#xff1f; 我们通过下面的例子来看全局"变量之变” 上面的程序运行结果如下&#xff1a; 从上面的运行结果可以看出&#xff1a;尽管变量num被声明为全局变量&#xff0c;在…

测试基础2:接口测试入门儿 哟呼开心

单元测试&#xff1a;一段代码的功能是否正确&#xff0c;在软件开发中进行的测试活动&#xff1b; 单元测试框架&#xff1a; java&#xff1a;junit&#xff0c;testNG c#:NUint python&#xff1a;pytest、unittest接口测试&#xff1a;检测外部系统与系统之间以及内部各个子…

腾讯云4核8g云服务器能承受多少人访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

MFC web文件 CHttpFile的使用初探

MFC CHttpFile的使用 两种方式&#xff0c;第一种OpenURL&#xff0c;第二种SendRequest&#xff0c;以前捣鼓过&#xff0c;今天再次整结果发现各种踩坑&#xff0c;好记性不如烂笔头&#xff0c;记录下来。 OpenURL 这种方式简单粗暴&#xff0c;用着舒服。 try {//OpenU…

图形系统开发实战课程:进阶篇(上)——7.图形交互操作: 视点控制与动画

图形开发学院&#xff5c;GraphAnyWhere 课程名称&#xff1a;图形系统开发实战课程&#xff1a;进阶篇(上)课程章节&#xff1a;“图形交互操作: 视点控制与动画”原文地址&#xff1a;https://www.graphanywhere.com/graph/advanced/2-7.html 第七章 图形交互操作: 视点控制与…

[云原生] 二进制安装K8S(中)部署网络插件和DNS

书接上文&#xff0c;我们继续部署剩余的插件 一、K8s的CNI网络插件模式 2.1 k8s的三种网络模式 K8S 中 Pod 网络通信&#xff1a; &#xff08;1&#xff09;Pod 内容器与容器之间的通信 在同一个 Pod 内的容器&#xff08;Pod 内的容器是不会跨宿主机的&#xff09;共享…

c语言经典测试题4

1.题1 #include <stdio.h>//没有break的话&#xff0c;输入什么都会往下一直执行下去&#xff0c;而且default在最后就会全都执行 int main() {char c;int v0 0, v1 0, v2 0;do{switch (c getchar())// 输入ADescriptor{casea:caseA:casee:caseE:casei:caseI:caseo:…

【Python笔记-设计模式】责任链模式

一、说明 旨在将请求沿着处理者链进行发送。收到请求后&#xff0c;每个处理者均可对请求进行处理&#xff0c;或将其传递给链上的下个处理者。 (一) 解决问题 将请求的发送者和接受者解耦&#xff0c;并使请求随着处理对象链传递&#xff0c;优化系统内部处理逻辑 (二) 使…

【算法 - 动态规划】找零钱问题Ⅰ

在前面的动态规划系列文章中&#xff0c;关于如何对递归进行分析的四种基本模型都介绍完了&#xff0c;再来回顾一下&#xff1a; 从左到右模型 &#xff1a;arr[index ...] 从 index 之前的不用考虑&#xff0c;只考虑后面的该如何选择 。范围尝试模型 &#xff1a;思考 [L ,…

【BUG 记录】MyBatis-Plus 处理枚举字段和 JSON 字段

【BUG 记录】MyBatis-Plus 处理枚举字段和JSON字段 一、枚举字段&#xff08;mysql环境已测、postgresql环境已测&#xff09;1.1 场景1.2 定义枚举常量1.3 配置枚举处理器1.4 测试 二、JSON字段&#xff08;mysql环境已测&#xff09;2.1 导包2.2 使用对象接受2.3 测试 三、JS…

图片录入设备、方式与质量对图片转Excel的影响

随着数字化时代的到来&#xff0c;图片已经成为人们日常生活中不可或缺的一部分。在各行各业中&#xff0c;图片的应用越发广泛&#xff0c;从而促使了图片处理技术的快速发展。然而&#xff0c;图片的质量对于后续数据处理和分析的准确性和可靠性有着至关重要的影响。本文将从…

【k8s配置与存储--持久化存储(PV、PVC、存储类)】

1、PV与PVC 介绍 持久卷&#xff08;PersistentVolume&#xff0c;PV&#xff09; 是集群中的一块存储&#xff0c;可以由管理员事先制备&#xff0c; 或者使用存储类&#xff08;Storage Class&#xff09;来动态制备。 持久卷是集群资源&#xff0c;就像节点也是集群资源一样…

年龄性别预测3:Android实现年龄性别预测和识别(含源码,可实时预测)

年龄性别预测3&#xff1a;Android实现年龄性别预测和识别(含源码&#xff0c;可实时预测) 目录 年龄性别预测3&#xff1a;Android实现年龄性别预测和识别(含源码&#xff0c;可实时预测) 1.年龄性别预测和识别方法 2.人脸检测方法 3.年龄性别预测和识别模型训练 &#…