Answers:
判断给定远程服务是否存在的最佳方法是要求它按其应有的方式为请求提供服务-实际上,这是真正知道某项工作正常的唯一方法。
举例来说,我总是让负载均衡器从Web服务器获得实际的“正面”响应,如果需要,您可以对数据库框中的一小部分内容进行选择,或者使用实际的服务器服务。作为提示,您可以在Web服务器上创建一个“ online.txt”(或您想要给它提供的任何名称),让LB尝试获取该文件,如果失败,则将其从VIP中删除,这是仅通过重命名单个文件的一种手动将单个服务器从VIP中取出的好方法。
Ping仅测试对ping作出响应的能力,因此这是基础操作系统,IP堆栈的一部分以及物理链接-但这就是所有其他情况都可能发生的故障,您不知道。
我知道下面会提到这一点,但是它需要一次又一次地重复。
ICMP回显请求(也称为“ Pings”)(也称为ICMP类型8)是建立在IP堆栈规范上的,是的,但不需要实现或使用。实际上,由于它们是一种网络攻击形式(称为pingflood),因此有大量的Internet提供商拒绝转发这些请求并以静默方式丢弃这些请求。
如上所述,这是由OS处理的(特别是在网络堆栈级别),因此要由OS配置来响应或不响应。如果将其关闭(是否出于安全预防措施?),那么您将无法接收来自另一端的ping回复。这就是为什么它不可靠的原因。
确实,在很多情况下,ICMP流量都会被过滤掉,因此可能不可靠...
更好的方法可能是在您感兴趣的服务端口上远程登录服务器。
即telnet 127.0.0.1 8080
测试您要寻找的服务,仅对服务器执行ping操作并不意味着这些服务正在运行。
例如:
想象一下一个有十几个网站的网络服务器,然后我需要知道这些网站是否已启动,我用php做了一个小脚本,每10分钟运行一次。
该脚本执行以下操作->
<?php
$website1 = "http://www.mywebsite.com/";
$myWebsite = file_get_contents($website1);
$message = 'My website' . $website1 . ' is DOWN at the moment.';
if (empty($myWebsite)) mail('mail@server.com', 'Website is DOWN', $message);
?>
我们用ping
做预检,该主机上电和到达,启动,试图一个ssh连接到它我们systemd服务之前。这样可以节省一些调试时间,因为该systemctl start
命令将立即失败,而不是无提示地失败并在journalctl丛林中迷路。
请注意,在与TCP相同的意义上,ping不“可靠”。如果您的连接不良(或糟糕的网络堆栈,谢谢Intel mpss)并且数据包被丢弃,则单个数据包ping可能会失败。另一方面,TCP连接对于丢失的数据包是可靠的。因此,具有讽刺意味的是,一次失败后,ssh连接可能立即起作用。因此,如果您使用ping进行完整性检查,请确保允许某些故障。ping
如果在正常情况下,您的服务器对ping作出响应,则每隔一分钟对ping一次以检查其是否响应非常有用。当然,这只会告诉您在该IP地址上有一台服务器,并且存在从ping的源到目标的网络路径。设置响应时间阈值还可以使您监视网络状态。如果您要ping Internet上的服务器,则可能无法修复网络,但是如果客户打电话投诉,您将已经意识到问题所在。另外ping google.com也很有用。如果您和Google都倒闭,则说明正在发生某些情况。
正如其他人提到的那样,监视提供的服务是否正在响应以及其性能是否正常非常重要。也就是说,您可能想检查为什么通常在一秒钟内响应的网络时代现在响应我只有10秒钟。
因此,知道一种服务没有响应并且正在ping失败将为您提供更多信息,而不仅仅是一种方法。另外,如果您也监视进程,知道ping响应,则服务不会响应,并且Web服务器的进程数不正确,这将告诉您首先要查找的位置。
您可能会因监视而发疯,因此只需监视足以告诉您什么时候发生了坏事或正在变得危险。也就是说,交换过多,磁盘使用率超过90%,磁盘io占用过多,CPU长时间处于100%状态,请记住,监视只是对服务进行的拒绝攻击,执行速度非常慢。
我在脚本中使用的最好方法是
#rsh servername.com "date"
Mon Sep 19 04:42:20 PDT 2011
可以使用诸如remsh之类的rsh替代方法。这样可以确保远程系统完全启动,并且可以在其上运行命令。简单的ping是不够的,因为在启动过程中启动网络服务时,系统开始响应ping。
rsh
?真?为什么不使用它ssh
呢?
rsh
与ssh
暂且不谈,如何执行date
(假设您是这样),是关于Web服务器,SMTP服务器,DNS服务器,本地数据库服务器或诸如此类的东西正在运行并能够处理请求的事情?最好是实际询问您要验证其可用性的特定服务(它可能是远程外壳,但不一定一定要提供)。
当我重新启动Windows Server时,我打开命令提示符框并输入
ping <box> -t
首先,它将提示它可用-那就是盒子了。然后,您将获得很多“请求超时”。当您开始收到答复时,该框就会显示出来。