我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么检测一台机器是否宕机

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么检测一台机器是否宕机

这篇文章主要介绍了怎么检测一台机器是否宕机,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

检测一台机器是否宕机的应用场景如下:

1, 工作机器宕机,总控节点需要能够检测到并且将原有服务迁移到集群中的其它节点。

2, 总控节点宕机,总控节点的备份节点(一般称为Slave)需要能够检测到并替换成主节点继续对外服务。

检测一台机器是否宕机必须是可靠的。在大规模集群中,机器可能出现各种异常,比如停电,磁盘故障,过于繁忙导致假死等。对于机器假死,如果总控节点认为机器宕机并将服务迁移到其它节点,假死的机器又认为自己还可以提供服务,则会出现多个节点服务同一份数据而导致数据不一致的情况。

首先必须明确,理论上检测另外一台机器是否宕机是无法做到的,有兴趣的同学可以参考Fischer的论文。可以简单理解如下:A机器往B机器发送心跳包,如果B机器不发送响应,A无法确定B机器是宕机了还是过于繁忙,由于A和B两台机器的时钟可能不同步,B机器也无法确定多久没有收到A机器的心跳包可以认为必须停止服务。因此,A机器没有办法确定B机器已经宕机或者采取措施强制B机器停止服务。

当然,工程实践中,由于机器之间会进行时钟同步,我们总是假设A和B两台机器的本地时钟相差不大,比如相差不超过0.5秒。这样,我们可以通过Lease机制进行宕机检测。Lease机制就是带有超时时间的一种授权。假设总控节点需要检测工作节点是否宕机,总控节点可以给工作节点发放Lease授权,工作节点持有有效期内的Lease才允许提供服务,否则主动下线停止服务。工作节点的Lease快要到期的时候向总控节点重新申请Lease(一般称为renewLease),总控节点定时检测所有工作机的Lease授权是否合法,如果发现某台工作机Lease失效,可以将工作机上的服务迁移到集群中的其它机器,这时因为工作机发现自己Lease失效会主动停止服务。当然,这里需要注意,由于总控节点和工作机的时钟可能不一致且有网络延迟,总控节点上的Lease超时时间要长,也就是说,如果工作节点的Lease超时时间是12秒,总控节点可能需要13秒后才能确认工作节点已经停止了服务,从而避免数据不一致问题。

同构节点之间的选主也有一个宕机检测问题。比如总控节点宕机,备份节点需要能够检测并升级为主节点继续对外服务。Mysql数据库经常采用Heartbeat + DRBD (Distributed Replicated Block Device) + Mysql的高可用性方案,据说能够达到3个9的高可用性,主节点和备节点维持Heartbeat心跳,当提供服务的主节点出现故障时,备节点的Heartbeat检测到主节点没有心跳(例如,Ping不通主节点),备节点自动接管虚拟IP,升级为主节点提供Mysql读写服务。由于Heartbeat检测机器主节点宕机不可靠,这个方案存在众所周知的脑裂问题,即集群中可能同时存在多个主节点同时提供服务。解决这个问题本质上还是需要引入仲裁节点,比如Heartbeat + DRBD方案中引入Fence节点使出现问题的节点从集群中脱离,或者引入分布式锁服务,比如Chubby的开源实现Zookeeper服务。分布式锁服务实现主节点选举大致如下:主节点和备节点到Chubby中抢锁,抢到锁的节点在锁的有效期(Lease期)内提供服务,当主节点锁的Lease快要到期时,主节点申请延长锁的超时时间,正常情况下分布式锁服务总是优先满足主节点的请求,当主节点出现故障时,备节点能够抢到锁切换为主节点提供服务。

***还有一个问题,假设总控节点通过Lease机制检测工作节点是否宕机,这种方案是可靠的,不过当总控节点宕机时,如果不采取任何措施,集群中的所有工作节点都将因为无法重新申请Lease而停止服务,这就是带有总控节点的设计固有的脆弱性,某个设计或者编码的错误都有可能造成严重的影响。解决这个问题一般会有一个叫做Grace Period的机制,工作节点Lease超时时将停止服务,但是工作节点并不一开始就重启或者下线,而是处于一种危险状态(称为Jeopardy),这种状态持续一个Grace Period,比如45秒。如果在Grace Period 内总控节点重启,工作节点和总控节点重新联系上从而可以切换为正常状态继续提供服务。

如果需要较好地理解宕机及选举相关的问题,可以阅读并思考Paxos相关的论文,比如Paxos made simple, The Part-time Parliament, Paxos made live, Paxos made practical, Chubby等。有任何问题,欢迎讨论。

感谢你能够认真阅读完这篇文章,希望小编分享的“怎么检测一台机器是否宕机”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么检测一台机器是否宕机

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么检测一台机器是否宕机

这篇文章主要介绍了怎么检测一台机器是否宕机,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。检测一台机器是否宕机的应用场景如下:1, 工作机器宕机,总控节点需要能够检测到并且将原
2023-06-16

Linux中怎么快速检测网站是否宕机

在Linux中可以使用以下几种方法快速检测网站是否宕机:使用ping命令:在终端中输入ping ,如果能够成功接收到响应,说明网站正常运行。如果出现超时或无法连接等错误信息,则说明网站可能宕机了。使用curl命令:在终端中输入curl -I
2023-10-21

在Linux终端如何快速检测网站是否宕机

这篇文章主要为大家展示了“在Linux终端如何快速检测网站是否宕机”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Linux终端如何快速检测网站是否宕机”这篇文章吧。方法 1:使用 fping
2023-06-16

linux怎么检测远程主机端口是否开启

在Linux系统中,可以使用以下方法来检测远程主机端口是否开启:使用telnet命令:telnet是一个常用的网络工具,可以用来测试远程主机的端口是否开启。例如,要测试远程主机IP地址为192.168.1.1的端口80是否开启,可以使用以下
linux怎么检测远程主机端口是否开启
2024-03-12

怎么检测是否是cn2美国服务器

要检测一个服务器是位于中国还是美国,可以通过以下方法:使用Ping命令测试服务器的延迟时间。如果服务器位于中国,则ping的延迟时间通常比较短;如果是美国服务器,则延迟时间会较长。使用Traceroute命令跟踪服务器的路由路径。通过查看
怎么检测是否是cn2美国服务器
2024-04-09

openstack怎么检查虚拟机ip是否能ping通

要检查OpenStack中的虚拟机IP是否能够ping通,可以按照以下步骤进行操作:1. 使用ssh登录到OpenStack控制节点上的计算节点或网络节点上。2. 使用以下命令列出所有虚拟机的IP地址:```openstack server
2023-10-11

PHP中怎么检测一个类是否可以被foreach遍历

这篇文章将为大家详细讲解有关PHP中怎么检测一个类是否可以被foreach遍历,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在PHP中检测一个类是否可以被foreach遍历在PHP中,我们可以非常简单的判
2023-06-15

云服务器密码机检测规范是什么

首先需要在云服务器上安装密码机检测软件,软件会自动扫描云服务器中的密码机,以确保所有的密码都被正确检测到。当检测到密码机存在异常时,软件会自动记录该异常,并发送异常报告给云服务器管理员。云服务器管理员需要查看异常报告,以了解密码机的情况。异常包括密码长度不足、密码不完整、密码重复等。如果密码机正常,那么可以进行进一步的
云服务器密码机检测规范是什么
2023-10-28

计算机中什么命令用于检测网络连接是否正常

这篇文章主要介绍了计算机中什么命令用于检测网络连接是否正常,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。用于检测网络连接是否正常的命令是“ping”命令,只需要在命令窗口执行
2023-06-14

阿里云服务器出现宕机是怎么回事

阿里云服务器出现宕机可能会导致数据丢失、系统崩溃、服务中断等问题。以下是导致阿里云服务器宕机的常见原因:服务故障:服务器无法提供正常的服务,例如服务无法启动、响应速度变慢、系统崩溃等。网络连接问题:服务器出现宕机可能会导致与其他服务器的通信中断,从而影响其他服务的正常运行。数据库故障:服务器出现宕机可能会导致数据库无法访问或无法使用,从而导致数据丢失或数据泄露等情况。操作系统故障:服务器出现宕机可能会导致...
2023-10-27

阿里云服务器出现宕机是怎么回事啊

首先,这次宕机事件提醒我们,在云服务器租用和托管中,需要格外注意云服务器的可靠性和稳定性。这不仅是保障云服务器租用服务的必要条件,也是保障用户使用体验的基本要求。如果云服务器的稳定性和可靠性不够,用户的业务可能会受到影响,甚至无法正常运行。其次,这次宕机事件再次提醒我们,云服务器租用和托管服务需要具备强大的监控和管理功
2023-10-27

redis怎么传数据到另一台机器

要将数据从一台Redis服务器传输到另一台Redis服务器,可以使用Redis的主从复制机制或Redis的集群模式。下面分别介绍这两种方式的操作步骤。1. 主从复制:- 在源Redis服务器上,编辑配置文件redis.conf,设置`sla
2023-09-11

阿里云服务器宕机是什么意思啊怎么解决

首先,要了解服务器宕机的原因。一些可能的原因包括软件问题、硬件故障、网络故障、配置错误等。当阿里云服务器宕机时,需要及时采取措施来确保服务器正常运行,例如检查硬件是否正常运行、检查网络连接是否正常等。如果发现服务器硬件或网络连接出现问题,需要立即采取措施进行修复,以避免影响服务器的正常使用。其次,需要检查系统日志以确定
阿里云服务器宕机是什么意思啊怎么解决
2023-10-28

云服务器挖矿怎么不被检测到呢手机

首先,我们需要了解什么是云服务器挖矿。云服务器挖矿是指使用虚拟机来运行计算密集型的程序,这些计算密集型程序可以通过云服务器提供商的服务器进行托管和运行。当用户购买云服务器时,他们将虚拟机上的加密货币奖励转移到云服务器上,这些奖励可以被用于购买云服务器上的虚拟机。然而,这种行为可能会被监测到。在许多国家和地区,政府和监管
云服务器挖矿怎么不被检测到呢手机
2023-10-28

两台云服务器集群成一台主机怎么办

如果您想将两台云服务器组成集群,可以按照以下步骤操作:将服务器连接到集群中的主服务器上:在主服务器上启动两台服务器,将其连接在一起,然后将其配置为双机热备或双机互备。启动集群:将所有主服务器连接在一起,并启动两台服务器,以便在需要时自动切换。管理并设置集群:使用集群管理器来管理集群。您可以创建一个集群来存储数据、运行服务、部署应用程序等等。监控集群:使用监控工具来监控并分析集群的性能和
2023-10-26

两台云服务器集群成一台主机怎么设置

如果您只有一台主机,并且希望在同一台云服务器上运行多个应用程序和服务,您可以采取以下步骤:将数据从同一台主机转移到其他主机上:您可以将所有应用程序和数据从同一台主机上转移到另一个云服务器上。这可以通过在云服务器上创建虚拟私有数据中心,将数据存储到数据中心中以及使用多个主机来实现。设置共享存储和网络连接:您可以使用相同的共享存储和网络连接来管理多个应用程序和服务。这些资源可以共享给其他服务,
2023-10-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录