답변:
지정된 원격 서비스가 살아 있는지 확인하는 가장 좋은 방법은 요청이 의도 한 방식으로 서비스를 요청하도록 요청하는 것입니다. 실제로 무언가가 제대로 작동하고 있는지 진정으로 알 수있는 유일한 방법입니다.
예를 들어 항상로드 밸런서가 웹 서버에서 실제 '헤드'응답을 얻도록하려면 원하는 경우 또는 실제 서버가 제공하는 모든 것을 DB 상자에서 선택하면 동일하게 수행 할 수 있습니다. 팁으로 웹 서버에서 'online.txt'(또는 원하는 이름)를 만들 수 있으며 LB가 해당 파일을 가져 오도록하고 실패하면 VIP에서 서버를 제거합니다. 단일 파일의 이름을 바꾸어 VIP에서 개별 서버를 수동으로 가져 오는 좋은 방법입니다.
Ping은 핑에 응답 할 수있는 기능 만 테스트하므로 기본 OS, IP 스택의 일부 및 물리적 링크입니다. 그게 전부입니다.
나는 이것이 아래에 언급되어 있음을 알고 있지만 반복해서 반복합니다.
ICMP 에코 요청 (일명 "Pings") (일명 ICMP 유형 8)은 IP 스택 사양을 기반으로하지만 구현하거나 사용할 필요는 없습니다. 사실, 많은 인터넷 제공 업체가 네트워크 공격 (pingflood)의 형태이므로 요청을 전달하고 거부하는 요청을 자동으로 거부합니다.
위에서 언급했듯이 이것은 OS에 의해 (특히 네트워크 스택 수준에서) 처리되므로 OS 구성에 따라 OS 구성에 따라 달라집니다. 이 기능이 꺼져 있으면 (보안 예방 조치?) 다른 쪽 끝에서 ping 응답을받는 방법에 대한 작업을 수행 할 수 없습니다. 이것이 신뢰할 수없는 이유입니다.
많은 경우에 ICMP 트래픽이 필터링되어 신뢰할 수없는 것은 사실입니다 ...
더 나은 방법은 관심있는 서비스 포트에서 서버를 텔넷으로 연결하는 것입니다.
즉 텔넷 127.0.0.1 8080
찾고있는 서비스를 테스트하십시오. 서버를 핑한다고해서 서비스가 작동하고있는 것은 아닙니다.
예를 들면 다음과 같습니다.
수십 개의 웹 사이트가있는 웹 서버를 상상 한 다음 웹 사이트가 작동하는지 알아야합니다. 저는 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 서비스를 시작하기 전에 PreCheck를 할 수 있습니다. 이로 인해 systemctl start
명령이 즉시 실패하고 journalctl 정글에서 길을 잃지 않고 즉시 실패 하므로 디버깅 시간이 절약 됩니다.
핑은 TCP와 같은 의미에서 "신뢰할 수있는"것이 아닙니다. 연결 상태가 좋지 않거나 (혹은 네트워크 스택, 인텔 mpss 감사 ) 패킷이 삭제되는 경우 단일 패킷 핑이 실패 할 수 있습니다. 반면에 TCP 연결은 손실 된 패킷에 대해 안정적입니다. 아이러니하게도, ssh 연결은 단일 실패 직후에 작동 할 수 있습니다 . 따라서 핑을 사용하여 상태 확인을 수행하는 경우 약간의 실패를 허용해야합니다.ping
단지 내 두 센트 : 우리는이 방법을 사용하는 레거시 응용 프로그램을 가지고 있으며 핑이 서비스 가용성을 결정하기에 충분 하지 않기 때문에 서비스를 제공해야했습니다 .
Ping은 단순히 서버가 청취 할 수 있음을 보여 주지만 우리의 경우 사람의 개입없이 서비스를 시작할 수 없었습니다.
결과적으로 서버를 사용할 수 있다고 가정 한 단위는 연결 및 시간 초과를 시도했습니다. "서버를 사용할 수 없습니다"메시지를 표시하는 대신
-
XMLHTTPRequests를 통해 웹 서버와 통신하는 현재 응용 프로그램은 서버가 상태 코드로 응답 할 형식화 된 메시지를 보냅니다. 상태 코드는 다양한 하위 시스템이 온라인 상태인지 확인하기 위해 서버에서 여러 검사를 수행하여 계산됩니다 (DB, 필요한 디렉토리 쓰기 가능 등).
정상적인 상황에서 서버가 핑에 응답하는 경우 1 분 간격으로 핑하여 응답하는지 확인하는 것이 좋습니다. 이것은 물론 해당 IP 주소에 서버가 있고 핑 소스에서 대상까지의 네트워크 경로가 있음을 알려줍니다. 응답 시간에 대한 임계 값을 설정하면 네트워크 상태도 모니터링 할 수 있습니다. 인터넷에서 서버를 핑 (ping)하는 경우 네트워크를 수정하기 위해 할 수있는 일은 거의 없지만 고객이 전화를 걸어 불평하면 이미 문제를 알고있을 것입니다. google.com을 핑하는 것도 유용합니다. 귀하와 Google이 모두 다운되면 문제가 발생한 것입니다.
다른 사람들이 언급했듯이 제공하는 서비스가 응답하고 있으며 성능이 양호 함을 모니터링하는 것이 중요합니다. 즉, 보통 1 초 안에 응답하는 웹 에이지가 10 초 동안 응답하는 이유를 확인할 수 있습니다.
따라서 서비스가 응답하지 않고 핑이 실패한다는 것을 아는 것은 단 하나의 접근 방식보다 훨씬 많은 정보를 제공합니다. 또한 핑이 응답한다는 것을 알고 프로세스를 모니터링하는 경우 서비스가 응답하지 않으며 웹 서버에 올바른 수의 프로세스가 없으므로 먼저 찾을 위치를 알려줍니다.
모니터링에 열중 할 수 있으므로 나쁜 일이 발생하거나 위험에 처했을 때이를 충분히 알 수 있도록 모니터링하십시오. 즉, 너무 많은 스와핑,> 90 % 디스크 사용량, 높은 디스크 IO, 100 % CPU 기간 동안 모니터링은 모니터링이 매우 느리게 수행되는 서비스 거부 공격이라는 것을 기억하십시오.
스크립트에서 사용하는 가장 좋은 방법은
#rsh servername.com "date"
Mon Sep 19 04:42:20 PDT 2011
remsh와 같은 rsh 대안 대신 사용할 수 있습니다. 이를 통해 원격 시스템이 완전히 부팅되고 명령을 실행할 수 있습니다. 네트워크 서비스가 시작될 때 부팅 중에 시스템이 핑에 응답하기 때문에 간단한 핑으로는 충분하지 않습니다.
rsh
? 정말? 왜 ssh
대신 사용 하지 않습니까?
rsh
대 ssh
제외하고, 실행할 수 수행되는 방법 date
요청을 처리 할 수 실행하고 이것 저것 웹 서버, SMTP 서버, DNS 서버, 로컬 데이터베이스 서버 여부에 대해 아무 말도 (시작, 당신은 가정)? 가용성을 확인하려는 특정 서비스를 실제로 요청하는 것이 좋습니다 (원격 셸 일 수도 있지만 반드시 그런 것은 아닙니다).
Windows 서버를 재부팅하면 명령 프롬프트 상자가 열리고 입력하십시오.
ping <box> -t
먼저 사용할 수 있음을 제안합니다. 즉, 상자가 내려갑니다. 그런 다음 많은 "요청 시간이 초과되었습니다." 답장을 시작하면 상자가 켜집니다.