数据库修仙筑基篇八——corosync-qdevice使用

Linux(HA)高可用集群框架及Corosync详解 Linux(HA)高可用集群框架及Corosync详解 集群系统:高可扩展性、高可用性、高性能、高性价比 一、Linux HA cluster架构 1.集群扩展方式: 1).scale on:向上扩展,即升级服务器硬件 扩大服务器的内存容量、增加cpu数量,在一定的范围内能增大服务器性能。 缺点:随着cpu个数的增加需要给CPU仲裁,此外CPU个数的增加会增大资源的竞争性, 所以超出... 阅读详情

corosync-qdevice使用

qdevice要用途是让群集能够承受大于标准仲裁规则所允许的节点故障数量。在分布式一致性协议中,基于多数派quorum的协议解决脑裂等问题,因而当集群存活节点挂死超过一半时,集群将无法对外提供服务。qdevice提供仲裁机制,使集群在多数节点挂掉后仍然能提供服务。典型的如双节点集群发生网络分区后,qdevice可以使其中一台机器继续提供服务,进而保证高可用。

QDevice 和 QNetd 会参与仲裁决定。在仲裁方 corosync-qnetd 的协助下,corosync-qdevice 会提供一个可配置的投票数,以使群集可以承受大于标准仲裁规则所允许的节点故障数量。我们强烈建议为双节点群集部署 corosync-qnetd 和 corosync-qdevice,但对于所含节点数为偶数的群集,一般也建议使用 QNetd 和 QDevice。

基本组件

corosync

corosync提供分布式一致性协议和配置。

qnetd

qnetd提供与qdevice通信的网络服务器。

qdevice

每个群集节点上与 Corosync 一起运行的 systemd 服务(守护程序)。这是 corosync-qnetd 的客户端。其主要用途是让群集能够承受大于标准仲裁规则所允许的节点故障数量。

QDevice 可以与不同的仲裁方配合工作,但目前仅支持与 QNetd 配合工作。

编译运行

编译

qdevice依赖corosync,在编译qdevice前应先编译corosync。

  • 下载源码

    git clone https://github.com/corosync/corosync-qdevice.git
    
  • 编译

    cd corosync-qdevice
    ./autogen.sh
    ./configure
    make -j 8
    sudo make install
    

    若编译时找不到libcorosync_common库,则需要导出pkgconfig文件路径到PKG_CONFIG_PATH,如:

    export PKG_CONFIG_PATH="/home/ha/code/corosync/pkgconfig"
    

    编译完成后会生成corosync-qnetd和corosync-qdevice。

    ha@ha-virtual-machine:~/code/corosync-qdevice$ ls install
    bin  etc  sbin  share  var
    ha@ha-virtual-machine:~/code/corosync-qdevice$ ls install/bin/
    corosync-qnetd  corosync-qnetd-certutil  corosync-qnetd-tool
    ha@ha-virtual-machine:~/code/corosync-qdevice$ ls install/sbin/
    corosync-qdevice  corosync-qdevice-net-certutil  corosync-qdevice-tool
    ha@ha-virtual-machine:~/code/corosync-qdevice$ ls install/etc/
    corosync  init.d
    ha@ha-virtual-machine:~/code/corosync-qdevice$ ls install/etc/corosync/
    qdevice  qnetd
    

运行

corosync-qnetd可以独立运行,同时corosync-qdevice在启动时候需要连接qnetd,因而需先启动corosync-qnetd。

一般我们使用非root用户运行,运行配置步骤如下:

  1. 先创建非root用户;

    groupadd -r coroqnetd
    useradd -r -g coroqnetd -d / -s /sbin/nologin -c "User for corosync-qnetd" coroqnetd
    chown -R coroqnetd:coroqnetd /etc/corosync/qnetd /var/run/corosync-qnetd
    
  2. 在/etc/corosync/qnetd/下创建corosync-qnetd.sysconfig写下如下内容

    # Corosync Qdevice Network daemon init script configuration file
    
    # COROSYNC_QNETD_OPTIONS specifies options passed to corosync-qnetd command
    # (default is no options).
    # See "man corosync-qnetd" for detailed descriptions of the options.
    COROSYNC_QNETD_OPTIONS=""
    
    # COROSYNC_QNETD_RUNAS specifies user under which qnetd daemon should be running
    # (not set or empty is default and means "user who executes init script")
    # Make sure to set correct owner of directories /etc/corosync/qnetd and
    # /var/run/corosync-qnetd
    # This has no effect if systemd unit is used (you have to change unit file)
    COROSYNC_QNETD_RUNAS="coroqnetd"
    
  3. 运行qnetd

    /etc/init.d/corosync-qnetd start
    

双节点qnet与三节点corosync的区别

  1. qnet主要作为第三方仲裁,配合qdevice来提供投票仲裁服务,不属于集群内节点,不承担任何集群节点功能;
  2. QDevice 支持多种不同的算法,而这些算法决定着如何分配投票的行为,如:
    • FFSplit (“fifty-fifty split”) 为默认算法,用于所含节点数为偶数的群集。如果群集分裂为两个相似的部分,此算法会根据启发检查结果和其他因素为其中一个部分提供一个投票
    • LMS (“last man standing”) 允许仅剩的那个节点看到 QNetd 服务器以获取投票。因此此算法适用于只有一个活动节点应保留法定票数的群集
  3. 启用qdevice加qnet后,corosync里的last_man_standing 选项(即动态修改quorum)与其不兼容,但qdevice如上描述可以选择LMS算法来进行投票;
  4. qnet一般需要独立于主集群,不要与 corosync 环或者环位于同一个网络网段,一般不在现有集群节点中运行制裁设备;
  5. 多个集群可以共用一个qnet仲裁服务,且不同的集群可以配置不同投票算法;

corosync1.0版本没有投票机制,需要使用corosync-qdevice来配合投票仲裁,corosync2.0版本通过votequorum提供投票机制。

votequorum与corosync-qdevice

votequorum和corosync-qdevice都是投票仲裁机制。

votequorum不需要引入第三方仲裁,直接作为一个服务集成到corosync中。votequorum通过为集群中的每个系统分配一定数量的选票,并确保只有当多数票出现时,才允许进行集群操作。

corosync-qdevice需要引入第三方仲裁qnet,除运行corosync服务、corosync-qdevice服务外,还需要在一台非集群节点运行corosync-qnetd服务。在仲裁方 corosync-qnetd 的协助下,corosync-qdevice 会提供一个可配置的投票数,以使群集可以承受大于标准仲裁规则所允许的节点故障数量。这里的标准仲裁规则是指当集群节点数超过一般挂死时集群将不可用。

双节点场景

对于双节点场景来说,

  • votequorum通过在corosync.conf中配置two_node来解决双节点场景的高可用问题,且这样配置后只能处理两个节点的情况,当有第三个节点加入时,two_node配置自动失效
  • 而corosync-qdevice通过在corosync.conf的device配置模块中配置algorithm: ffsplit来解决
手把手教你学SIMULINK模块库文件专栏--Scope 模块详解 模块是 Simulink 中的一个信号接收模块,用于实时显示信号波形。该模块可以捕捉并可视化仿真过程中信号的变化,帮助用户直观地分析系统的动态行为。模块都能提供强有力的支持。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常实用的工具,适用于需要实时显示信号波形的各种场景。模块的参数,可以进一步增强学习体验。模块参数的影响,下面我们将详细探讨每个参数如何影响波形显示。 阅读详情

相关推荐

vmware vsphere5---部署vCSA(VMware vCenter Server)附带第二阶段安装报错解决方案

因为这份文档我是边做边写的,遇到问题重新装了好几次所以IP会很乱ESXI主机为192.168.20.10VCSA为192.168.20.7,后台为192.168.20.7:5480后期请自行对应,后面的192.168.20.57请对应192.168.20.7,或根据自己的来。

m0_70212665的博客 5714

数据库修仙筑基篇九——corosync-qdevice详解

corosync-qdevice详解

growdu的网络博客 1324

ai数字人系统部署

这段代码实现了基本的语音交互闭环,用户通过语音输入问题,数字人识别语音后进行自然语言理解并生成回复,再将回复转换为语音输出。但实际应用中的 AI 数字人系统更为复杂,如形象渲染需专业图形引擎(如 Unity、Unreal Engine),自然语言处理也会涉及更复杂的模型微调及多轮对话管理等。一个完整的 AI 数字人系统涵盖形象生成、自然语言处理、动作控制等多个复杂功能,下面为你提供一个 Python 示例,整合多个库来实现数字人基础功能,包括语音交互、简单的自然语言理解以及通过虚拟形象展示对话。

weixin_ggwwsscc的博客 370

(CUDA)快速GPU开发------Device函数应用

Device函数表示的是仅仅在设备(Device)端能够使用的函数。Device函数可以是任何的函数,这样可以通过每一个线程来运行一个Device函数来达到并行的目的。在本文中聚焦软件开发速度,故而不讨论计算性能问题。

喝摩卡的被窝君 6180

Jetson AGX Orin 部署 JetPack:从依赖缺失到系统升级的完整排障指南

本文详细介绍了在Jetson AGX Orin开发板上部署JetPack SDK的完整排障指南,包括解决依赖缺失、系统升级和常见错误处理。通过确认硬件版本、配置正确的软件源、执行系统升级和安装核心组件等步骤,帮助开发者顺利完成JetPack的安装与配置,确保AI开发环境的稳定运行。

weixin_29172963的博客 160

如何用Python+Librosa实现轴承异响检测?5步搞定工业设备故障预警

本文详细介绍了如何利用Python和Librosa库,通过5个步骤构建工业轴承异响检测与故障预警系统。从音频采集、预处理、频谱特征提取,到构建机器学习模型并进行实时监测,提供了完整的代码级解决方案。该方法能有效识别轴承早期故障特征,实现低成本、高效的设备预测性维护。

rnn9storyteller的博客 634

数据库修仙筑基篇十——corosync-qnetd投票机制

corosync-qnetd投票机制

growdu的网络博客 597

15、远程操作水下航行器(ROV)的非线性控制系统设计

本文探讨了远程操作水下航行器(ROV)的非线性控制系统设计,重点介绍了多变量PID控制、改进的PD控制和滑模控制三种方法。详细阐述了各控制策略的原理、建模与仿真过程,并通过对比分析其在稳态误差、振荡、抖振及跟踪效果等方面的性能表现。文章还提出了针对不同控制方法的优化建议,并给出了选择合适控制策略的决策流程,为ROV高精度运动控制提供了系统性解决方案。

sun99的博客 157

QIODevice

QIOdevice

weixin_43446462的博客 712

FANUC机器人S523 新款PN板卡与西门子PLC通信配置介绍

FANUC机器人S523 新款PN板卡与西门子PLC通信配置介绍

Robot_PLC_HMI_Automation 354

全网唯一OpenCyphal/UAVCAN教程(8)libcanard介绍

当Cyphal里,这个结构体代表一条完整的Cyphal消息,之后我们会根据metadata里提供的元信息,其实就是消息ID,调用对应的反序列化函数,将payload还原成具体的Cyphal消息。用于构造一个新的发送队列,原则上一个can物理接口需要分配一个发送队列,如果它们的MTU大小一致,是可以共用一条的。这个库不包含IO层,是平台无关的,意义是没有实现具体的数据收发,仅提供将发送出去的Cyphal消息转成can帧,以及将收到的can帧转成Cyphal消息。返回值是这条消息拆解成的can帧的数目。....

二进制君 2409

LINUX 高可用群集之 ~Corosync~

Corosync:它属于OpenAIS(开放式应用接口规范)中的一个项目corosync一版本中本身不具 备投票功能,到了corosync 2.0之后引入了votequorum子系统也具备了投票功能了,如果我们用的是1版本的,又需要用到票数做决策时那该如何是好呢;当然,在红帽上把 cman +...

chuifuhuo6864的博客 627

线结构光相机原理详解以及精度控制总结

摘要:线阵结构光相机是工业三维检测的核心设备,结合线阵相机的高分辨率与结构光的主动三维成像能力。其工作原理基于线激光投射、逐线扫描、亚像素级条纹提取及三角测量法实现三维重建。精度受硬件、校准、环境和算法四因素影响,需通过优化硬件选型(如小像元相机、窄线宽激光)、精准校准(相机内参、激光平面)、环境控制(遮光、隔振、恒温)及算法优化(Steger算法、点云后处理)来提升。典型应用(卷材、轨道检测)中深度精度可达5-20μm,需根据场景需求平衡参数配置。

start_up_go的博客 940

Centos7.6加pcs搭建高可用数据库集群

1.安裝前環境 1.1.關閉防火墻(主備機) systemctl stop firewalld systemctl disable firewalld systemctl disable NetworkManager systemctl stop NetworkManager vi /etc/selinux/config 1.2.修改主機名(主備機) vi /etc/hostname -------------------- pcs01 -------------------- 1.3.配

Vic的博客 1785

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Pacemaker+Corosync集群与网络故障检测

Pacemaker+Corosync集群中,Corosync负责消息的传递,成员关系以及QUORUM服务,它实现了TOTEM协议确保应用也就是Pacemaker通过Corosync传递的消息是可靠有序的。由于Corosync负责通信,集群中各种网络故障的检测自然也是Corosync的事情。 ...

weixin_34268753的博客 898

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CentOS 7 corosync高可用集群的实现

CentOS 7 corosync高可用集群的实现===============================================================================概述:===============================================================================cr...

weixin_33798152的博客 693

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Corosync与Pacemaker集成指南:打造高可用集群的终极方案

在现代IT基础设施中,高可用性已成为关键需求。Corosync作为集群引擎的核心组件,与Pacemaker资源管理器的完美结合,为构建稳定可靠的集群系统提供了强大支持。本文将详细介绍如何将这两款工具无缝集成,帮助新手用户快速掌握高可用集群的搭建方法。 ## 一、核心组件简介:为何选择Corosync+Pacemaker组合? Corosync是一个开源集群引擎,提供集群成员管理、消息传递和仲裁

gitblog_00083的博客 351

Linux集群之corosync+pacemaker实现MySQL高可用

一、实验拓扑二、拓扑说明 分别在两个节点上实现部署MySQL,数据库文件存储在后端的NFS主机上,通过挂载至相应的节点上使用,在两个节点分别安装corosync和pacemaker用于实现MySQL的高可用,通过crmsh程序对pacemaker进行配置,当其中一个节点出现问题时用于前端访问的VIP地址将被移到另一个节点上,并挂载后端的NFS数据库存储文件,然后启动MyS...

weixin_33738578的博客 366

pve主要架构和重要服务介绍

PVE 支持软件定义网络,可以通过虚拟网络实现不同虚拟机和容器之间的通信。Proxmox VE 提供 VLAN、VXLAN、Bonding、桥接等功能,使用户能够灵活配置网络架构。

u010674101的专栏 4139

corosync

Corosync 是心跳信息传输层,它在传递信息时可通过简单的配置文件来定义信息的传递方式和协议等。它可以实现HA心跳信息传输的功能。

liyao130608的博客 1152

[转]HA高可用集群中“脑裂“问题解决

什么是脑裂(split-brain) 在"双机热备"高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。由于相互失去了联系,都以为是对方出了故障,两个节点上的HA软件像"裂脑人"一样,"本能"地争抢"共享资源"、争起"应用服务"。就会发生严重后果:1)或者共享资源被瓜分、两边"服务"都起不来了;2)或者两边"服务"都起来了,但同时读写"共享存储",导致数据损坏(常见如数据库轮询着的联机日志出错)。

1586

HA高可用集群中“脑裂“问题解决

------ 什么是脑裂(split-brain) 在"双机热备"高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。由于相互失去了联系,都以为是对方出了故障,两个节点上的HA软件像"裂脑人"一样,"本能"地争抢"共享资源"、争起"应用服务"。就会发生严重后果:1)或者共享资源被瓜分、两边"服务"都起不来了;2)或者两边"服务"都起来了,但同时读写"共享存储",导致数据损坏(常见如数据库轮询着的联.

singless的博客 3842

Linux高可用之Corosync

Linux高可用之Corosync

qq_45070541的博客 1122

金仓数据库KingbaseES Clusterware配置手册(系统结构 )

Clusterware作为全局资源管理的系统,可以解决大部分分布式系统中出现的问题,如脑裂、集群节点的增减等问题。作为去中心化的系统,避免了中心节点由于集群过大带来的过多负载压力的问题,在大集群应用的情况能够很好的提供集群系统的高吞吐、高压力、高负载的承载。

arthemis_14的博客 336

QIODevice类参考

QIODevice类是输入/输出设备的基类。 #include qiodevice.h> 被QBuffer、QFile、QSocket和QSocketDevice继承。 所有成员函数的列表。 公有成员 typedef off_t Offset QIODevice () virtual ~QIODevice () int flags () const

望都者 1733
上一篇: 数据库修仙筑基篇十一——corosync-cmap使用指南
下一篇: 数据库修仙筑基篇五——c-raft分布式存储方案
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在数据库世界里修仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值