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

2024-02-27 20:04

本文主要是介绍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/

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

这篇关于Redis高可用三主三从集群部署(三种方式部署/18个节点的大集群)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/753447

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*