redis高可用-集群部署

一:背景

前面我们实现了redis的主从同步和哨兵模式,解决了单机redis的故障转移和流量分担,但是不管是主从或者哨兵模式都是一个主服务对应一个或者多个从服务,并且主服务和从服务的数据是一样的,这样就实现不了redis大数据量写的问题,不能分担写服务到多个redis服务,那么有没有一种模式能够实现redis内存的横向扩展,多主对应多从,并且实现故障转移自动修复。答案是一定的redis的设计者已经为我们提供了现成的设计方案,那就是使用Redis Cluster。下面我们来实操下利用Redis Cluster实现redis的集群部署。

二:实现方式

1:环境准备

我们为了部署方便使用单台主机部署3个主服务,3个从服务组成redis集群,对应的主机和端口如下:

主服务:

master1    192.168.56.101  6381

master2     192.168.56.101  6382

master3      192.168.56.101 6383

从服务:

slave1   192.168.56.101  6391

slave2   192.168.56.101  6392

slave3   192.168.56.101  6393

2: 创建配置文件

mkdir /usr/local/redis-cluster

cp /usr/local/bin/redis.conf redis_master_1.conf

修改redis_master_1.conf的配置如下:

# 守护进行模式启动
daemonize yes

# 绑定地址,需要修改

bind 0.0.0.0

# 绑定端口,需要修改
port 6381

# pid文件存储位置,文件名需要修改

pidfile "/var/run/redis_6381.pid"
 

# log文件存储位置,文件名需要修改

logfile "/var/run/redis_6381.log"

# RDB快照备份文件名,文件名需要修改
 

dbfilename "redis_6381.rdb"

# 本地数据库存储目录,需要修改

dir "/usr/local/redis/redis_6381"
 

# 集群相关配置
# 是否以集群模式启动
cluster-enabled yes

# 集群节点回应最长时间,超过该时间被认为下线
cluster-node-timeout 15000

# 生成的集群节点配置文件名,文件名需要修改

cluster-config-file nodes-6381.conf

# aof持久化
appendonly yes

#修改各自的aof文件名
appendfilename "appendonly6381.aof"

#设置密码
requirepass  123456
masterauth   123456

修改其他5份配置文件,改变对应的端口和文件路径

3:启动服务

/usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_1.conf 

/usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_2.conf 
  /usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_3.conf 
  /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_1.conf 
   /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_2.conf 
   /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_3.conf 


 

4:这时候这6个服务是没有任何关联的,我们需要将他们加入集群

进入任意一个redis服务

 /usr/local/bin/redis-cli -h 127.0.0.1 -p 6381

auth 123456

cluster meet 192.168.56.101 6382
cluster meet 192.168.56.101 6383
cluster meet 192.168.56.101 6391
cluster meet 192.168.56.101 6392
cluster meet 192.168.56.101 6393

然后查看所有节点:

cluster nodes

发现三个主服务和三个从服务,同时查看端口监听,可以发现10000+端口,说明集群的服务之间已经可以通信

5:配置主从服务

我们需要查看主服务的节点id,查看8381-6383的主服务node id

进入对应的从服务,配置主服务node id

进入6391从服务:

cluster replicate e9e7bcf9ff199e2a99d8dfb5342deebfe1462a8a

进入6392从服务:

cluster replicate f48f4528f051a1e585df05601217772a3ecbfb64

进入6393从服务:

cluster replicate 542bba27134e01c306c8c326b5deaac750234107

6:分配槽位

为了考虑今后的写入操作能分配均匀,槽位也要进行均匀分配。

仅在Master上进行分配,从库不进行分配,仅做主库的备份和读库使用。

节点    槽位数量
6381    0 - 5461
6382    5461 - 10922
6383    10922 - 16383

编写脚本:

#!/bin/bash

n=0
for ((i=n;i<=5461;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6381 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done
 

#!/bin/bash

n=5462
for ((i=n;i<=10922;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6382 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done

#!/bin/bash

n=10923
for ((i=n;i<=16383;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6383 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done
 

执行完查看状态:

CLUSTER info

状态已经显示成功

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

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

相关文章

远程桌面总是连接不上,mstsc远程总是连接不上解决方法

远程桌面连接在日常生活和工作中扮演着至关重要的角色&#xff0c;它允许用户在不同地点和设备之间无缝协作。然而&#xff0c;有时用户可能会遇到MSTSC&#xff08;Microsoft远程桌面连接&#xff09;总是连接不上的问题&#xff0c;这可能是由于多种原因造成的。本文将针对这…

C malloc经典面试题解答与分析

本篇博客介绍关于C malloc经典的错误代码写法以及解决方法。 题目1 错误的代码&#xff1a; #include <iostream>void test01(char* p) {p (char*)malloc(10); }int main1() {char* p NULL;test01(&p);const char* str "hello";strcpy(p, str);print…

Linux 线程的同步与互斥

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 前言 1.资源共享问题 2.进程线程间的互斥…

C语言程序设计-7 数组

在程序设计中&#xff0c;为了处理方便&#xff0c;把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在&#xff23;语言中&#xff0c;数组属于构造数据类型。一个数 组可以分解为多个数组元素&#xff0c;这些数组元素可以是基本数…

晶体振荡电路中的负性阻抗是什么?-晶发电子

在理想的振荡电路中&#xff0c;为了保持振荡的稳定性和强度&#xff0c;需要一种机制来补偿晶振振动过程中的能量损耗。在实际应用中&#xff0c;这种能量损耗是不可避免的&#xff0c;它可能导致振荡逐渐衰减直至停止。为了解决这个问题&#xff0c;振荡电路设计者采用了一种…

公司怎么管理文档外发泄密?强化企业文档安全用迅软加密软件就行了!

一、文档加密软件原理 迅软DSE加密软件对各类需要加密的文件&#xff08;如&#xff1a;技术资料、商业数据、红头文件、会议纪要、机要文件、图纸、财务报表等&#xff09;进行加密。 使用加密算法对文件自动加密&#xff0c;只有拥有正确的解密密钥或密码的人才能打开文件&…

语言模型测试系列【10】

一个巧合&#xff0c;又测到了新的区别&#xff0c;以下是关于python代码生成的测试效果。 语言模型 文心一言讯飞星火通义千问2.5豆包360智脑百小应腾讯元宝KimiC知道商量智谱清言 这次的测试问题来源于**智谱AI开放平台**的介绍&#xff0c;正好有个python生成的效果说明…

韩顺平0基础学java——第28天

p569-591 坦克大战&#xff01;&#xff08;绘图监听事件线程文件处理&#xff09; 绘图 绘图原理 Component类提供了两个和绘图相关最重要的方法: 1. paint(Graphics g)绘制组件的外观 2. repaint()刷新组件的外观。 当组件第一次在屏幕显示的时候,程序会自动的调用paint()…

智能网联汽车实训教学“好帮手”——渡众机器人自动驾驶履带车

智能网联汽车实训教学“好帮手”——渡众机器人自动驾驶履带车 人工智能技术的兴起&#xff0c;为传统汽车行业注入了强有力的变革基因&#xff0c;以AI技术为驱动的无人驾驶成为汽车产业的未来&#xff0c;同样也面临诸多机遇和挑战。 一方面智能网联汽车的发展&#xff0c;为…

GD32学习

参考视频13.立创开发板GD32教程&#xff1a;串口配置_哔哩哔哩_bilibili 固件库跟用户手册基本上差不多&#xff0c;只不过用用户手册编写程序的话会更加的底层&#xff0c;固件库的话就是把一些函数封装起来&#xff0c;用的时候拿过来即可&#xff0c;目前我还没有找到固件库…

【数据库备份完整版】物理备份、逻辑备份,mysqldump、mysqlbinlog的备份方法

【数据库备份完整版】物理备份、逻辑备份&#xff0c;mysqldump、mysqlbinlog的备份方法 一、物理备份二、逻辑备份1.mysqldump和binlog备份的方式&#xff1a;2.mysqldump完整备份与恢复数据2.1 mysqldump概念2.2 mysqldump备份2.3 数据恢复2.4 **使用 Cron 自动执行备份**2.5…

linux下编译安装和使用cURL库(含有openssl)

cURL是一个利用URL语法指定各种协议(如HTTP、HTTPS、FTP等)进行数据传输的工具,它以客户端的身份,允许用户通过命令行与服务器交互。cURL库(libcurl)是cURL的编程接口(API),提供了一套丰富的函数,供开发者在自己的应用程序中实现网络传输功能 cURL库是网络编程中不可…

搭建一个简单的xxljob

数据库表结构&#xff1a; YyJobInfo&#xff1a; public class YyJobInfo {//定时任务idprivate int id;//该定时任务所属的执行器的idprivate int jobGroup;//定时任务描述private String jobDesc;//定时任务添加的时间private Date addTime;//定时任务的更新时间private D…

服务器权限管理

我们linux服务器上有严格的权限等级&#xff0c;如果权限过高导致误操作会增加服务器的风险。所以对于了解linux系统中的各种权限及要给用户&#xff0c;服务等分配合理的权限十分重要。&#xff08;权限越大&#xff0c;责任越大&#xff09; 1.基本权限 U--user用户,G-group…

智谱API调用

一、智谱API 文心一言api 千帆大模型平台 申请和使用 智谱AI开放平台 登录智谱AI开放平台&#xff0c;点击右上角的开发者工作台&#xff0c;然后查看自己的API glm-4 接口 conda create -n zhipuai python3.10 -y 二、如何使用 这边的介绍是根据官方文档的接口文档来进行介绍…

深度学习之绘图基础

文章目录 1.实验目的2. 需求3.代码结果图片 1.实验目的 熟练绘制各种图像&#xff0c;为深度学习打基础 2. 需求 给定一个函数&#xff0c;需要你画出原图像以及这个函数在某点切线图像 3.代码 # File: python绘制函数图像以及倒数图像.py # Author: chen_song # Time: 20…

绽放光彩的小程序 UI 风格

绽放光彩的小程序 UI 风格

vivado WIRE

WIRE是用于在Xilinx部件上路由连接或网络的设备对象。一根电线 是单个瓦片内部的一条互连金属。PIP、系紧装置和 SITE_PINs。 提示&#xff1a;WIRE对象不应与设计的Verilog文件中的WIRE实体混淆。那些 电线在设计中与网络有关&#xff0c;而不是与定义的设备的路由资源有关 WI…

创业众筹网

摘 要 创业是社会经济发展的重要动力&#xff0c;其在任何经济发展时期任何国家都最具活力与桃战性。然而创业的资金却是90%创业者面临的首要问题。包括积蓄不足、无不动产、负债、不知如何向银行申贷,及无法预估所创行业之总资金、成本。部分创业者虽然有心创业&#xff0c;但…

AI创作音乐引发的深思

在最近一个月中&#xff0c;音乐大模型的迅速崛起让素人生产音乐的门槛降到了最低。这一变革引发了关于AI能否彻底颠覆音乐行业的广泛讨论。在初期的兴奋过后&#xff0c;人们开始更加理性地审视AI在音乐领域的应用&#xff0c;从版权归属、原创性、创作质量、道德层面以及法律…