分支主题2
<div>3.1 总体架构</div><div>HA英文全称High Availability,即高可用性,通常指采用主、备两个相同的模块以热备份的方式完成指定功能,在主用模块故障时,备用模块会自动接替主用模块执行系统功能。IT产品线应用组件的HA实现了资源监控、主备仲裁倒换和文件同步等功能,并应用在系统的管理中,以提高系统可靠性。</div><div><br></div><div>HA系统由两部分组成:HA组件和产品适配。HA组件是一个框架,提供了通用的机制,产品适配是具体实现,提供实际的资源操作,定制HA的运行策略和运行环境,两者都与HA密切相关。</div><div><br></div><div><br></div><div><br></div><div>HA总体架构图</div><div><br></div><div>上图为HA组件的总体架构图,包括了HA的主要功能。HA主要实现的功能有仲裁倒换、文件同步和资源管理以及提供的API接口。</div><div><br></div><div> </div><div><br></div><div><br></div><div><br></div><div>HA内部模块划分</div><div><br></div><div>上图为HA内部模块划分及模块间关系,与功能对应分为如下几个模块。</div><div><br></div><div>HACOM:HA公共模块,实现HA的RPC接口、提供HA安装包以及HA的RPC开发包。</div><div><br></div><div>HAARB:HA仲裁模块,实现HA的心跳、仲裁和倒换。依赖HASYNC和HARM。</div><div><br></div><div>HASYNC:HA文件同步模块,实现HA主备文件的同步。</div><div><br></div><div>HARM:HA资源管理模块,实现对资源的启动、监控、停止等功能。</div><div><br></div><div>HAMON:HA监控模块,实现对HA进程的监控</div><div><br></div><div>C-FRAMEWORK:C开发框架,HA基于此框架开发。</div><div><br></div><div>其中HACOM、HAARB、HASYNC、HARM这几个模块在同一个进程(ha.bin),HAMON单独一个进程(ha_monitor)。</div><div><br></div><div>查询ha.bin进程是否存在</div><div><br></div><div>sles136:/opt/omm/oms/ha/module # ps -ef |grep ha.bin</div><div><br></div><div>root 5148 1 0 Jul23 ? 00:08:02 /opt/omm/oms/ha/module/hacom/bin/ha.bin --logsyslog=0 --loglevel=INFO --logpath=/var/log/ha/runlog --logarchive=7200 --bboxpath=/var/log/ha/core --module=HA</div><div><br></div><div>root 19864 2022 0 10:23 pts/1 00:00:00 grep ha.bin</div><div><br></div><div> </div><div><br></div><div>查询ha_monitor进程是否存在</div><div><br></div><div>sles136:/opt/omm/oms/ha/module # ps -ef |grep ha_monitor</div><div><br></div><div>root 19886 2022 0 10:23 pts/1 00:00:00 grep ha_monitor</div><div><br></div><div>root 30840 1 0 Jul23 ? 00:00:01 /opt/omm/oms/ha/module/hamon/bin/ha_monitor</div><div><br></div><div>sles136:/opt/omm/oms/ha/module #</div><div> </div><div><br></div>
子主题
子主题
分支主题3
子主题
<div>3.2 系统约束</div><div>1、目前只支持linux操作系统。</div><div><br></div><div>2、目前只支持X86架构。</div><div><br></div><div>3、主备节点环境要保持一致,因为HA支持文件同步功能,默认会将ha.bin和ha_monitor文件做同步,并且文件的属主UID和GID值要一致,不一致会造成同步完成的所有者不是预期的结果。如果一端为suse环境,另一端为redhat环境,有可能会出现进程需要的lib库版本不配套的问题。如果确实有主备环境不一致的情况,可以修改HA文件同步配置,取消指定文件的同步功能。</div><div><br></div><div>4、不支持动态修改HA的配置和动态增加、删除、修改HA的资源插件XML。修改HA的配置或HA的资源插件XML发生变化后需要重启HA。</div><div><br></div><div>5、不支持多节点HA,只支持一主一备,但可以在同一台设备上部署多个HA,要求安装目录和通信端口不能冲突。</div><div><br></div><div>6、资源管理插件需要主备保持一致,因此在两台服务器上安装的资源插件和对资源插件的配置要一致。</div><div><br></div><div>7、不支持监控的资源单独做主备倒换,只支持主备节点的资源随着HA角色变化整体倒换,对外可以通过浮动ip访问主节点上的资源。</div><div><br></div><div>8、HA对资源的监控是通过定时检测的方式,所以HA状态查询中的资源状态是非实时的资源状态。</div><div><br></div><div>9、HA文件同步只支持普通目录、文件和软链接的同步,不支持其他格式。</div><div><br></div><div>10、HA文件同步不支持增量式同步,即不能单独同步修改的内容。只要文件发生变化就会把整个文件内容重新做同步。</div><div><br></div><div>11、HA文件同步为了提高性能和效率,判断主备文件是否一致是比较文件大小和修改时间来决定的,并没有计算文件内容是否有变化,所以生成文件的时候不要出现主备文件大小和修改时间一致的情况。</div><div><br></div><div>12、HA主备通过心跳链路通信,在心跳链路中断的情况下可能出现HA双主,HA双主后两个节点可能都在提供业务,两个节点上的数据可能会不同,双主仲裁后主节点的数据会同步到备节点上,备节点上与主节点不同的数据可能会丢失。为了降低出现双主的可能性,HA增加了浮动ip的配置,在主备断链后备机升主前,备机会尝试ping浮动ip,如果能够ping通浮动ip则说明主还存在,备机不会自动升主。</div><div><br></div><div>13、是否进行第三方仲裁(利用网关进行HA主备仲裁)是由业务配置的,如果业务引入了第三方仲裁,那么主HA所在服务器宕机后,备HA在升主前会通过ping网关来确定是否可以升主,如果ping不通则不升主,这时将没有可提供服务的节点,为了避免这种情况,业务在引入第三方仲裁时需要保证网关正常运行和网络连通。</div><div><br></div><div> </div><div><br></div>
分支主题4
子主题
<h2><a name="_Toc1000"><span lang="EN-US">3.1<span style="font-variant-numeric: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: "Times New Roman";"> </span></span><span style="FONT-FAMILY: 黑体">总体架构</span></a></h2>
<h2></h2>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">英文全称</span><span lang="EN-US">High
Availability</span><span style="FONT-FAMILY: 宋体">,即高可用性,通常指采用主、备两个相同的模块以热备份的方式完成指定功能,在主用模块故障时,备用模块会自动接替主用模块执行系统功能。</span><span lang="EN-US">IT</span><span style="FONT-FAMILY: 宋体">产品线应用组件的</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">实现了资源监控、主备仲裁倒换和文件同步等功能,并应用在系统的管理中,以提高系统可靠性。</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">系统由两部分组成:</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">组件和产品适配。</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">组件是一个框架,提供了通用的机制,产品适配是具体实现,提供实际的资源操作,定制</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">的运行策略和运行环境,两者都与</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">密切相关。</span></p>
<p class="MsoNormal" style="TEXT-ALIGN: center" align="center"><span lang="EN-US"><img src="" width="688" height="542"></span></p>
<p class="MsoNormal" style="TEXT-ALIGN: center" align="center"><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">总体架构图</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体">上图为</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">组件的总体架构图,包括了</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">的主要功能。</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">主要实现的功能有仲裁倒换、文件同步和资源管理以及提供的</span><span lang="EN-US">API</span><span style="FONT-FAMILY: 宋体">接口。</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="TEXT-ALIGN: center" align="center"><span lang="EN-US"><img src="" width="470" height="193"></span></p>
<p class="MsoNormal" style="TEXT-ALIGN: center" align="center"><a name="_Toc338266660"><span lang="EN-US">HA</span></a><span style="FONT-FAMILY: 宋体">内部模块划分</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体">上图为</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">内部模块划分及模块间关系,与功能对应分为如下几个模块。</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US">HACOM</span><span style="FONT-FAMILY: 宋体">:</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">公共模块,实现</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">RPC</span><span style="FONT-FAMILY: 宋体">接口、提供</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">安装包以及</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">RPC</span><span style="FONT-FAMILY: 宋体">开发包。</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US">HAARB</span><span style="FONT-FAMILY: 宋体">:</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">仲裁模块,实现</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">的心跳、仲裁和倒换。依赖</span><span lang="EN-US">HASYNC</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">HARM</span><span style="FONT-FAMILY: 宋体">。</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US">HASYNC</span><span style="FONT-FAMILY: 宋体">:</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">文件同步模块,实现</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">主备文件的同步。</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US">HARM</span><span style="FONT-FAMILY: 宋体">:</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">资源管理模块,实现对资源的启动、监控、停止等功能。</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US">HAMON</span><span style="FONT-FAMILY: 宋体">:</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">监控模块,实现对</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">进程的监控</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span lang="EN-US">C-FRAMEWORK</span><span style="FONT-FAMILY: 宋体">:</span><span lang="EN-US">C</span><span style="FONT-FAMILY: 宋体">开发框架,</span><span lang="EN-US">HA</span><span style="FONT-FAMILY: 宋体">基于此框架开发。</span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体">其中</span><span lang="EN-US">HACOM</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">HAARB</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">HASYNC</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">HARM</span><span style="FONT-FAMILY: 宋体">这几个模块在同一个进程(</span><span lang="EN-US">ha.bin</span><span style="FONT-FAMILY: 宋体">),</span><span lang="EN-US">HAMON</span><span style="FONT-FAMILY: 宋体">单独一个进程(</span><span lang="EN-US">ha_monitor</span><span style="FONT-FAMILY: 宋体">)。</span></p>
<table class="MsoNormalTable" style="BORDER-TOP: medium none; BORDER-RIGHT: medium none; WIDTH: 17cm; BACKGROUND: #d9d9d9; BORDER-COLLAPSE: collapse; BORDER-BOTTOM: medium none; MARGIN-LEFT: 26.7pt; BORDER-LEFT: medium none" cellspacing="0" cellpadding="0" width="643" border="1">
<tbody>
<tr>
<td style="BORDER-TOP: windowtext 1pt solid; HEIGHT: 37.65pt; BORDER-RIGHT: windowtext 1pt solid; WIDTH: 17cm; BORDER-BOTTOM: windowtext 1pt solid; PADDING-BOTTOM: 0cm; PADDING-TOP: 0cm; PADDING-LEFT: 5.4pt; BORDER-LEFT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt" valign="top" width="643">
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span style="FONT-FAMILY: 宋体">查询</span><span lang="EN-US">ha.bin</span><span style="FONT-FAMILY: 宋体">进程是否存在</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span lang="EN-US">sles136:/opt/omm/oms/ha/module # ps -ef |grep ha.bin</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span lang="EN-US">root 5148
1 0 Jul23 ? 00:08:02 /opt/omm/oms/ha/module/hacom/bin/ha.bin
--logsyslog=0 --loglevel=INFO --logpath=/var/log/ha/runlog --logarchive=7200
--bboxpath=/var/log/ha/core --module=HA</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span lang="EN-US">root 19864
2022 0 10:23 pts/1 00:00:00 grep ha.bin</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span style="FONT-FAMILY: 宋体">查询</span><span lang="EN-US">ha_monitor</span><span style="FONT-FAMILY: 宋体">进程是否存在</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span lang="EN-US">sles136:/opt/omm/oms/ha/module # ps -ef |grep ha_monitor</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span lang="EN-US">root 19886
2022 0 10:23 pts/1 00:00:00 grep ha_monitor</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span lang="EN-US">root 30840
1 0 Jul23 ? 00:00:01
/opt/omm/oms/ha/module/hamon/bin/ha_monitor</span></p>
<p class="MsoNormal" style="LINE-HEIGHT: 25%"><span lang="EN-US">sles136:/opt/omm/oms/ha/module #</span></p></td></tr></tbody></table>
子主题