资讯专栏INFORMATION COLUMN

关于XenServer的高可用,这篇都说清楚了

thekingisalwaysluc / 1946人阅读

摘要:旨在发生单点故障后,消除单点故障的影像,尽可能在剩余资源池上运行业务。首先需要找出属于最大全连接组以下简称的,用选择一个,重启丢失连接的。是通过在每个主机中进行配置,高可用集群中,每个主机上该配置文件都必须保持一致,如果不一致将导致不可用。

概述

随着云计算市场的快速发展,用户对服务的实时性需求越来越高,系统的稳定性和可用性显得尤为重要。高可用性HA(High Availability)可以做到尽量缩短日常计划维护的操作和突发的系统崩溃所导致的停机时间,以提高系统和应用的可用性。所以HA是目前云计算中防止核心计算机系统因故障停机最有效的手段。那么在本文中我们一起探讨一下,高可用性在XenServer中是如何应用的。

前文回顾:还记得三大虚拟化技术之一的XenServer吗

高可用集群(HA):

高可用集群在指发生单点故障时,可以从其他正常工作的节点中选出一个节点替换故障节点,继续提供服务,即将有故障节点上的资源和服务转移到工作正常的节点上。保证服务不中断,一直在线,用户对底层的资源切换无任何感知。

XenServer的HA尽量保持VM一直处于运行状态,即使当管理员不在时,发生资源池中的硬件损坏。下图中展示了包含HA的资源池,两个主机之间网络连接出现问题前后的变化。

XenServer在启用HA时,资源池中所有的主机,通过网络定期交换心跳信息,并将心跳信息发送到共享存储设备,不断尝试获取共享存储的“master lock”权限。

XenServer HA旨在发生单点故障后,消除单点故障的影像,尽可能在剩余资源池上运行业务。首先需要找出属于最大全连接组(以下简称“liveset”)的VM,用“master lock”选择一个Master,重启丢失连接的VM。

XenServer HA实现的主要组件有xapi、xen、xhad。

Xapi用于配置HA策略,即哪些网络存储用于心跳,发生故障之后哪些VM需要重启。配置和管理xhad心跳守护进程。Xapi在本地数据库主要存储了两个设置:1.ha_disable_failover_actions通常设置为false,表示节点可以恢复VMs,在HA禁用过程中设为true,防止仅部分启用HA发生脑裂 2. ha_armed设为true表示xapi在host启动加入liveset时启动xhad

Xen主要应用于主机被集群部分或完全隔离时,xen的监控程序保证主机的隔离。

Xhad是集群成员守护进程,通过网络和存储心跳维护集群中的主机。Xhad是通过在每个主机/etc/xensource/xhad.conf中进行配置,高可用集群中,每个主机上该配置文件都必须保持一致,如果不一致将导致HA不可用。Xhad.conf是用XML编写的,包含了资源池范围配置和本地主机配置。资源池范围配置包括集群所有活动的主机及全局超时信息。本地主机配置记录了本地主机的信息及用于本地网络接口和块存储的心跳设备。以下是xhad.conf文件示例:

<?xml version="1.0" encoding="utf-8"?>

<xhad-config version="1.0">

<!--pool-wide configuration-->

<common-config>

<GenerationUUID>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</GenerationUUID>

<UDPport>694</UDPport>

<!--for each host, specify host UUID, and IP address-->

<host>

<HostID>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</HostID>

<IPaddress>xxx.xxx.xxx.xx1</IPaddress>

</host>

<host>

<HostID>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</HostID>

<IPaddress>xxx.xxx.xxx.xx2</IPaddress>

</host>

<host>

<HostID>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</HostID>

<IPaddress>xxx.xxx.xxx.xx3</IPaddress>

</host>

<!--optional parameters [sec] -->

<parameters>

<HeartbeatInterval>4</HeartbeatInterval>

<HeartbeatTimeout>30</HeartbeatTimeout>

<StateFileInterval>4</StateFileInterval>

<StateFileTimeout>30</StateFileTimeout>

<HeartbeatWatchdogTimeout>30</HeartbeatWatchdogTimeout>

<StateFileWatchdogTimeout>45</StateFileWatchdogTimeout>

<BootJoinTimeout>90</BootJoinTimeout>

<EnableJoinTimeout>90</EnableJoinTimeout>

<XapiHealthCheckInterval>60</XapiHealthCheckInterval>

<XapiHealthCheckTimeout>10</XapiHealthCheckTimeout>

<XapiRestartAttempts>1</XapiRestartAttempts>

<XapiRestartTimeout>30</XapiRestartTimeout>

<XapiLicenseCheckTimeout>30</XapiLicenseCheckTimeout>

</parameters>

</common-config>

<!--local host configuration-->

<local-config>

<localhost>

<HostID>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2</HostID>

<HeartbeatInterface> xapi1</HeartbeatInterface>

<HeartbeatPhysicalInterface>bond0</HeartbeatPhysicalInterface>

<StateFile>/dev/statefiledevicename</StateFile>

</localhost>

</local-config>

</xhad-config>

参数说明:

GenerationUUID:每次重新配置HA时生成的一个UUID。这个参数可以让Xhad做到通知故障节点,已将它从配置中移走,HA系统重置,UUID已经发生变化。

UDPort:用于心跳的端口号。需要确保所有的主机上该端口号未被其他进程占用,并且没有被防火墙屏蔽。

HostID:标识资源池中主机的UUID。

IPaddress: 远程主机的IP地址,通常配置xapi的管理网。

HeartbeatTimeout: 设定心跳包接收的超时时间。如果超过这个时间没有收到心跳包,xhad认为心跳失败。用“T”来表示, T必须大于10,通常使用60秒。

StateFileTimeout:如果在设定的时间内没有得到主机存储的更新,那个xhad认为存储心跳连接异常。一般设置和HeartbeatTimeout相同的时长T。

HeartbeatInterval: 心跳包发送时长间隔。通常使用2<=t<=6,根据HeartbeatTimeout 的值通过公式t=(T+10)/10计算得出。

StateFileInterval:存储更新间隔时长,通常跟HeartbeatInterval设置为一样的值。

HeartbeatWatchdogTimeout:如果主机在设置的时间内没有发送心跳,则主机监视程序开始防护,通常设置为T。

StateFileWatchdogTimeout:如果主机在设置时间内没有更新文件状态,则主机监视程序开始防护,通常设置为T+15

BootJoinTimeout:当主机启动并加入集群时,如果超过设置的值,将视为加入失败,通常将该值设置为T+60

EnableJoinTimeout:当主机首次启动HA时,如果超过该设置时长,则认为加入失败。通常将该值设置为T+60

XapiHealthCheckInterval:“运行状况检查”的间隔时长,通过运行脚本检查xapi是否响应

XapiHealthCheckTimeout: 假设xapi死锁之前等待时长

XapiRestartAttempts:停止未响应的xapi之前,尝试重启xapi的最大次数

XapiRestartTimeout:重启xapi等待时长

XapiLicenseCheckTimeout: xhad终止之前等待xapi 许可证检查时长

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/5378.html

相关文章

  • Nginx+Keepalived实现站点高可用

    摘要:在协议实现里,虚拟路由器使用作为虚拟地址,就是唯一的,这个地址同一时间只有一个物理路由器占用。在虚拟路由器里面的物理路由器组里面通过多播地址来定时发送通告消息。负责健康检查,包括常见的各种检查方式。 公司内部 OA 系统要做线上高可用,避免单点故障,所以计划使用2台虚拟机通过 Keepalived 工具来实现 nginx 的高可用(High Avaiability),达到一台nginx...

    Songlcy 评论0 收藏0
  • 「负载均衡」就可以随便加机器吗?这三招来帮你!

    摘要:因为我们认为正常情况下用户的不会在短时间内发生变化,所以当我们选择使用策略进行负载均衡时,意味着期望同一个用户能够一直访问到同一台服务器上,就像下图这样。但是,我们还需要明白一个事实严格来说保持本质上是破坏了做负载均衡的初衷。 本文长度为3056字,预计读完需1.1MB流量,建议阅读8分钟。 这篇是《分布式关注点系列》中「负载均衡」相关的内容最后一发了,后续也会继续讲「高可用」相关的其...

    沈建明 评论0 收藏0
  • 混合云:云部署的先驱

    摘要:凭借公司和其他一些大厂商近期声明的推动,混合云已经越来越吸引公众的眼球了。混合云具备很多引人注目的优势,而且我们认为这最终会使各种组织的云部署策略的游戏结束。       凭借VMware公司和其他一些大厂商近期声明的推动,混合云已经越来越吸引公众的眼球了。混合云把公共的外部云和内部私有云(其实目前就相当于传统的内部IT环境)整合成更具功能性的解决方案。而混合云的秘诀就是处于中间的连接技术。...

    lscho 评论0 收藏0
  • 还记得三大虚拟化技术之一的XenServer吗?

    摘要:的首次公开发行是在年。年,得到了广泛的采用,和都将添加进他们的虚拟化解决方案。收购之后将其产品整合,统一更名为。奠定了在服务器虚拟化市场的地位。年月日,项目被宣布作为一个合作项目移至基金会下。前言XenServer是一个由Citrix发起和管理的开源项目和社区。该项目开发的开源软件实现了虚拟化的多种功能,允许在硬件设备上安全地运行多个操作系统和应用程序,完成硬件整合和自动化;将静态、复杂的I...

    Jochen 评论0 收藏0

发表评论

0条评论

thekingisalwaysluc

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<