Pacemaker与OpenStack集成与高可用集群部署指南
Pacemaker技术总结
Openstack&PacemakerPacemaker内部结构Corosync/totem协议Pacemaker主要功能资源代理标准资源限制高级资源类型服务异常监控负载均衡功能虚拟IP功能
很多Openstack组件服务可以集成运行在一个节点也可以在集群中分布式运行。
但要实现承载业务系统的高可用集群,必须将Openstack服务部署在高可用集群中,并实现故障自动转发和自愈,且不能给Openstack服务造成单点故障。
这些功能如下。
大多数Openstack服务本身没有这个功能。
因此,在生产环境中部署OpenStack高可用集群时,需要使用第三方集群资源管理软件,由第三方集群资源管理软件负责OpenStack集群资源的高可用监控、调度和管理。
Pacemaker是Linux环境下使用最广泛的开源集群资源管理器。
Pacemaker利用集群基础设施(例如Corosync)提供的消息传递和集群成员管理功能来实现节点级和资源级错误检测。
资源管理,从而确保集群服务的最大可用性。
在逻辑功能上,起搏器负责根据集群管理员定义的资源规则,管理集群内软件服务的完整生命周期。
Pacemaker在实际应用中几乎可以管理任何规模的集群。
凭借其强大的资源依赖模型,集群管理员可以准确地描述和表达集群资源之间的关系(包括资源的顺序和位置)。
同时,Pacemaker可以通过配置启动脚本和资源管理(资源代理)将几乎任何形式的软件资源作为资源对象进行管理。
另外,需要注意的是,Pacemaker只是一个资源管理器,并不是提供集群心跳信息。
Pacemaker的心跳引擎主要基于Corosync(或Heartbeat)。
在多节点集群中,图腾允许一个节点发送消息,所有其他节点都可以接收消息并有序地发送给顶层应用程序。
图腾节点有四种状态,这也是簇形成的四个阶段。
收集阶段:该阶段用于每个节点向外界宣告自己的存在,并收集其他节点的存在信息。
提交阶段:在此阶段,将创建一个代表节点,从所有其他节点收集信息并传输收集到的信息。
其他节点用于后续恢复阶段。
该阶段在新旧集群交替时使用,使用新集群传递来自旧集群的消息,以便旧集群成员可以到达所有节点。
消息。
有序转移至上层。
运营阶段。
至此,集群正常运行结束。
在该状态下,一个节点和其他节点发送的所有消息都会按顺序发送到上层。
在工作状态下,协议如下。
令牌在各个节点中流通,节点收到令牌后才能发送消息。
节点收到令牌后,执行以下操作:(1)取消令牌重传定时器。
(2)检查rtrtoken是否丢失。
信息记录:如果某个节点有这些消息,则广播这些消息,并从rtr中删除这些消息。
(3)比较my_aru和token序列,看是否有该节点未收到的消息。
如果是,请设置顺序。
在令牌上。
aru、rtr和aru_id(4)。
如果new_message_queue中有消息,则广播该消息并更改token中的seq(5)。
如果代币中aru的值是m某个值的两倍,则提高它。
向上。
传递序列号大于m的消息(6)向下一个节点发送令牌(7)启动令牌重传定时器,收到令牌或正常消息时取消再次
令牌由重传机制接收。
为了防止消息丢失并检测网络问题,请重新组织集群。
令牌中的局部变量my_aru、aru和seq用于确认所有节点都已收到消息,aru_id和rtr用于重传消息。
到某个节点。
LSB(LinuxstandardBase)
Systemd
OCF(openClusterFramework)
位置约束
顺序约束(顺序))
包约束(搭配)
Pacemaker集群是一个事件驱动的系统,其中事件可以是资源故障或更改配置。
ocf:pacemaker:ClusterMon资源监视集群的状态并针对每个集群事件触发警报。
该资源定期更新。
后端运行crm_mon,它也可以使用extra_options参数执行外部程序。
为保证资源正常运行,您可以在资源定义中添加监控操作。
如果没有为某个资源指定监控操作,则默认情况下,PC将每隔60秒创建一次监控操作。
所有节点上的LRM进程定期运行健康检查脚本来确定资源的状态。
LRM将结果报告给本地CRM流程,然后本地CRM流程报告给masterCRM流程。
pengine策略引擎计算对监控结果的响应,最后计算masterCRM。
通过返回路径向特定资源发送action,并执行相应的action(Redis服务支持的action包括如下所示的操作)。
该功能由相应的ocf:heartbeat:IPaddr2资源代理支持,可以同时创建多个不同IP地址的IPaddr2资源服务。
由于pacemaker支持的资源代理类型包括haproxy负载均衡服务代理等systemd类型的服务(但不限于该服务),因此我们可以配置haproxy服务提供负载均衡功能。
C++的学习方法!~
学习C++重点关注其各种语言设施所代表的语义思想以及C++所能表示的语义所代表的设计思想。首先,你需要从宏观的角度了解C++编程语言的本质。
这里我将列出C++最重要的特性:C++是一种基于C内存模型的静态类型检查语言,支持四种基本编程风格。
这里解释了三个重要的特性:静态声明是该语言基于C内存模型的类型检查特性,它告诉我们C++中的所有内存函数都是程序员的责任。
设计过程需要考虑很多方面,但理解所支持的四种基本范式是理解各种语言工具的基础。
然后记住C++的大设计哲学,就是整个C++中应用的核心就是通过定义新的可以使用的数据类型来扩展语言本身的能力(关键是怎么理解这句话。
,我的理解:any中的用户定义类型在设置类型时,更具体地说,用户定义类型可以定义为内置类型,它们的对象可以互相覆盖,并且可以与多个运算符一起使用,作为函数返回值的参数,可以用作容器操作的对象,用户定义类型可以用作内置类型(如模板参数),控制好这些设施。
(哪些设施?包括什么设施可以让用户定义的类型可以方便地用作内置类型?(什么是基本语言?就是C++中的Betterc类)在这里,我想介绍一个非常重要的概念:一个语言有自己的C+类型系统,最重要的是学习它的类型系统,所以首先你需要很好地理解数据类型概念,这样你的想法就会清晰,并得到C++的支持。
您可以选择开始学习基于C重载的bettercC++类,并且您需要了解两个最重要的新语言功能-基于对象-您需要构建最强大的C++。
类的概念,即用户定义类型,实际上是数据结构中抽象数据类型的概念,以及逻辑上构造和使用类的一系列语言步骤,在C++设计时永远记住使用类。
它代表了我们在C++抽象方法中定义类所需的概念-在这里您需要了解继承和多态性等常见模式。
技术,你应该明白你开始进入接口编程阶段。
但在这里,同时你需要学习OO思维,你需要了解的是C++可以通过语言的设计原则来定义(什么原则?不可变类型验证,不要为你不做的事付出代价)不需要)。
事情,选择权在程序员手中,语言本身不强制(强迫程序员做出选择),即C++定义的OO思想可以被C++特性调用,这样的OO思想或者纯OO以JAVA为代表的没有定论,它们的设计理念本身与一般的设计是不同的——这里要理解的最重要的一点是,无论其建立的初衷是什么,现在它代表了真正的意义。
意义:编译时多态性从这里我们理解了遗传学的本质——不同类型作为抽象条件的创建。
不,所以这些条件只是在我们自己的头脑中定义的,但是我们可以将一个具体类型作为抽象条件,并在模板方法中实现,这样模板就可以做比类型的基方法更多的事情,这就是创建。
抽象条件。
也就是说,我们不再将模板接受的参数视为类型,而是接受任何抽象条件的方法,只要满足模板接受的抽象条件即可。
它代表了一个总体思想——类型不再是基本的,它是抽象状态,类型就是抽象状态。
它是C++中的一种覆盖和实现方法。
STL是基于基于对象和通用设计这两种抽象设计模式相结合的技术而诞生的工业产品。
(2)书《C++编程语言》测试:如果你只买一本书,这就是你的选择,确实我已经用C++编程很长时间了。
语言描述非常好,我喜欢这种风格的技术描述。
本书的核心是告诉您如何使用正确的概念编写正确的C++代码。
强烈推荐。
《C++语言设计与演化》:这本书是我有中英文版的两本书之一(另一本是《设计模式》)。
如果您在获得上述书后想要第二本书,我认为这是您的选择。
添加有关C++的各种功能和所有有趣的故事。
中文版和英文版我都看过,强烈推荐。
“C++标准库”:亚马逊上有关C++的最佳评论书籍。
全书以简单易懂的方式介绍了标准编程库,全书以实际应用为主,但书中的例子非常清晰,并有一些图表展示,无论是指导还是学习经验都有存在的价值。
强烈推荐。
《高效C++中文版》:不用说,在任何推荐的C++书籍目录中都可以找到这本书。
主要强调的是使用各种C++特性时要注意什么,以及一些更通用的设计技巧。
短小精悍的语言自然很适合快现代风格。
强烈推荐。
《更有效的C++中文版》:作为前书的姊妹篇,风格相同,写作目的也相同。
我个人认为相比它的姊妹版还是有差距的,主要原因是信息量没有《高效C++中文版》大,而且主要讲了一些常见的C++设计技巧。
推荐。
《C++PRIMER中文版》:老师写的。
根据C++百科全书,它与“C++编程语言”具有同等地位。
不过前者更强调C++的语法和语义,而后者则侧重于如何利用C++进行模块化设计。
整本书构思巧妙在本书的开头,他直接进入了C++主题。
它直接进入第6章的步骤。
库的容器部分的设计是为了让读者可以清楚地定义容器和类,这是C++中两个非常重要的概念。
这样的设计对于有一定C++基础的读者来说可以说是非常有效的。
但对于初学者来说,这并不是一本真正适合的书,因为很多名字会让刚接触C++的人感到害怕。
推荐。
《思考C++》:全书重点以C或其他编程语言告诉读者C++概念和一些C++设计方法(书中给出的答案是只有对象才有能力维持某种状态和算法)不)。
如何创建抽象数据类型?如何理解多态性,如何使用代理隐藏继承,参考如何执行技术,如何执行慢速复制以获得成功,以及如何开发模板技术并将其转换为STL库。
可读性类似于《C++编程语言》。
读这样的书很累。
本书最大的特点是直接暴露了C++语言的核心——三个抽象模型以及语言设施本身对这三个抽象模型的支持。
而《ReflectionsonC++》让我深入思考什么才是最符合逻辑的使用C++的方式。
推荐。
《C++STL中文版》:很简单,不够优雅但价值很高。
个人认为它的价值主要体现在以下几个方面:1、STL实现的关键有两种表达方式,一是老式的函数方法,二是新的特征技术。
读者可以清楚地了解技术的演变。
2.提供了STLLITE版本,通过阅读这些代码,你会得到很大的提高。
3.书中呈现的测试模块对于想要扩展STL的读者来说是非常有用的章节,你可以按照上面介绍的方法测试自己的STL组件。
缺点:装订粗糙,与原件状况不符。
推荐:《C++PRIMERPLUS中文版》:一本非常非思想非技术性的书,但是非常适合初学者。
很多介词都是具体的、具体的,这个这本书是我读过的最适合初学者的C++书籍之一。
推荐。
《探索C++对象模型》:这是一本专门的书,描述了编译器如何组织内存空间来创建对象以及一些OO特性是如何实现的。
我不认为这是C++的必读,它应该被认为是课后阅读,因为如果你有时间了解C++的OO实现,最好花时间理解重要概念。
面向对象理论:写作教学。
推荐。
《C++中的新设计思维-通用编程和设计模式的应用》:可以说是一本关于C++的奇怪的书。
人们很难对这样一本书给予适当的评论和推荐(尤其是对于我这样一个有着实用而有趣的人生观的人来说~:),因为整本书所代表的想法是如此牵强。
.到了不切实际的地步,款式+工装裤——多么美丽的组合。
我个人的看法是,只有部分人需要看这本书,看看C++本身是否有问题,我认为会有,而大多数程序员不喜欢这种感觉~:)。
推荐。
《RevealedObjects:Java、Eiffel和C++》:从标题中可以明显看出,这本书不仅仅涉及C++。
整本书几乎都是对C++的批判(这本书源自作者写的一篇批判C++的文章)。
有时聆听另一个声音对于保持清醒的头脑非常有帮助。
这本书似乎不太受欢迎,也许是因为宣传不是很好,或者是因为能够同时理解和关心这三种语言的读者相对较少。
在我看来,由于这些语言的深层机制,这本书包含了很多关于对象和类型的理论。
输入C++并批评它。
读这本书的另一个好处是,它教你如何逻辑地捍卫你的对手~:)推荐。
《大C++编程》:这本书我手里已经有很长一段时间了,但一直没有仔细读过。
总的来说,书中很多东西都是别人写的读者似乎很少能接触到它们。
不管亚马逊上的评论是否意味着这本书已经过时,至少它宣传的很多东西是我不知道和不明白的。
我仍然推荐它。
《STL与泛型编程》:一篇难得的关于泛型编程概念的文章,也被当作手册和学习文章,网上70%的STL文档与这本书类似,但这本书还是可以看一下的。
推荐。
《C++编程思想,第二版》:是的,这是我对大多数人认为的杰作的回顾,否则你不会相信我在说什么。
是故意的,买了就知道了。
总而言之。
《C++精要中文版》:总感觉这本书的布局不是很清晰,因为开头包含了很多适合初学者的名字。
对于进阶的人来说,内容没什么新鲜的,对于C++高手来说,没必要看那么小的书,也许是LIPPMAN+JJHOU的名声,但这次是一本好书:)总体来说。
《STL源代码分析》:是侯SIR在大陆发行的两本书之一,但是在我看来质量没有很多人说的那么好《C++STL中文版》相对于同类来说内容有点单薄。
作品。
,看了三章,感觉好像堆了很多东西,而且太大了,一些令人惊奇的材料来自《STL与通用编程》这本书。
这些照片尤其是侯SIR独有的,但总体来说有点光鲜亮丽的感觉。
总而言之。
下面列出两本不推荐的书,具体原因不分析。
《高清编程指南——C++/C语言》、《C++编码标准》另外两本常见的C++书籍:
相关文章

Java与Python中的String类...
2024-12-29 07:50:46
C语言printf函数输出两个变量的技巧...
2025-03-08 03:54:59
C语言转义字符详解及用法攻略
2025-03-02 08:21:44
C语言绝对值函数使用方法及自定义实现教程
2025-02-28 20:41:38
C语言文件读取教程:fopen&...
2025-01-10 06:43:38
C语言strcpy函数详解与使用指南
2025-03-06 22:25:32
Java实现:二维数组随机填充0-100...
2024-12-18 01:43:29
C语言运算符优先级详解:从基础到高级用法
2025-03-04 11:45:44
C语言字符串输入输出全攻略:get()和...
2024-12-14 18:40:01