>  기사  >  백엔드 개발  >  PHP 및 Keepalive를 사용한 실시간 심장박동 감지

PHP 및 Keepalive를 사용한 실시간 심장박동 감지

WBOY
WBOY원래의
2023-06-28 08:30:261873검색

인터넷 기술의 발전과 함께 컴퓨터 시스템은 높은 시스템 가용성을 보장하기 위해 지속적으로 최적화되고 개선되어야 합니다. 그 중 하트비트 감지는 서버가 온라인인지, 네트워크가 정상인지 감지하는 데 사용되는 매우 중요한 기능입니다. 이 기사에서는 PHP와 Keepalive를 사용하여 실시간 심장박동 감지를 구현하는 방법을 소개합니다.

1. Keepalive 소개

Keepalive를 소개하기 전에 먼저 TCP의 3방향 핸드셰이크 프로세스를 살펴보겠습니다. TCP 연결을 설정하려면 클라이언트가 서버에 SYN 패킷을 보내고, 서버가 이를 수신한 후 SYN+ACK 패킷을 보내고, 마지막으로 클라이언트가 ACK 패킷을 보내는 3방향 핸드셰이크가 필요합니다. 연결이 성공적으로 설정되었습니다.

클라이언트가 요청을 보낼 때 서버가 응답하지 않으면 클라이언트는 연결이 끊어진 것으로 생각합니다. 그러나 네트워크 변동이나 서버 사용량으로 인해 서버가 응답하지 못하는 경우가 있습니다. 이때 연결이 끊어지면 사용자 경험에 영향을 미치게 되므로 연결을 유지하는 메커니즘이 필요합니다.

Keepalive는 연결이 아직 살아 있는지 감지하는 TCP 위에 구축된 네트워크 프로토콜입니다. 연결이 일정 시간 동안 유휴 상태일 때 Keepalive는 서버에 감지 패킷을 보냅니다. 서버가 여전히 응답하지 않으면 연결이 끊어진 것으로 판단합니다.

2. PHP를 사용하여 하트비트 감지 구현

하트비트 감지를 구현하려면 두 개의 스크립트가 필요합니다. 하나는 정기적으로 서버에 하트비트 요청을 보내는 데 사용되는 클라이언트 스크립트(Client.php)이고, 다른 하나는 서버 스크립트(Server.php). 하트비트 요청을 수신하고 적절한 응답으로 응답하는 데 사용됩니다. 구체적인 구현을 살펴보겠습니다.

클라이언트 스크립트(Client.php)

<?php
while(true) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'http://localhost:8000/');//服务器地址
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_exec($ch);
  curl_close($ch);
  sleep(5);//每 5 秒发送一次心跳请求
}
?>

위 코드에서는 컬을 사용하여 HTTP 요청을 보내고, 하트비트 요청을 정기적으로 서버에 보내고, sleep() 함수를 사용하여 예약된 전송을 구현합니다.

서버 스크립트 (Server.php)

<?php
header('Content-Type: text/plain');
echo "OK
";//响应成功信息
?>

위 코드에서 서버 스크립트는 클라이언트가 보낸 요청을 받은 후 간단한 성공 메시지로 응답합니다.

서버를 계속 실행하려면 Nginx 또는 Apache와 유사한 서버 소프트웨어를 서버 스크립트의 실행 환경으로 사용할 수 있습니다.

3. Keepalive를 사용하여 하트비트 감지 구현

Keepalive를 사용하여 하트비트 감지를 구현하려면 Keepalive 소프트웨어 및 관련 구성을 설치해야 합니다. CentOS 시스템에서는 다음 명령을 통해 Keepalive를 설치할 수 있습니다.

sudo yum install ipvsadm keepalived -y

다음은 Keepalive 구성 파일(keepalived.conf)의 예입니다.

vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 101
  authentication {
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress {
    192.168.10.10
  }
  track_script {
    chk_http_port
  }
}

vrrp_script chk_http_port {
  script "/usr/local/bin/alive.sh"
  interval 5
  weight 2
}

virtual_server 192.168.10.10 80 {
  delay_loop 6
  lb_algo rr
  lb_kind DR
  protocol TCP
  real_server 192.168.10.11 80 {
    weight 1
    TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
    }
  }
}

위 구성 파일은 다음을 정의합니다. VRRP 인스턴스(VI_1), 상태는 MASTER입니다. 가상 IP 주소(192.168.10.10)를 정의하고 추적 스크립트(chk_http_port)를 하트비트 감지 스크립트로 설정합니다. 마지막으로 가상 서버(IP 주소는 192.168.10.10, 포트)를 정의합니다. 80), 실제 서버(IP 주소 192.168.10.11, 포트 80)를 생성했다고 정의합니다.

다음은 추적 스크립트(alive.sh)의 예입니다.

#!/bin/bash
A=`curl -I -s -o /dev/null http://localhost`
if [ "$?" != "0" ] || [ "$A" == "" ]; then
  /etc/init.d/keepalived stop
fi
exit 0

위 스크립트는 서버가 살아 있는지 감지하는 데 사용되며, 서버가 응답할 수 없거나 오류가 있는 경우 Keepalive를 중지합니다. .

4. 요약

이 기사에서는 PHP와 Keepalive를 사용하여 실시간 하트비트 감지를 구현하는 방법을 소개했습니다. PHP는 컬을 통해 HTTP 요청을 보내 하트비트 요청을 시뮬레이션할 수 있으며 Keepalive는 VRRP 및 IPVS를 통해 하트비트 감지를 구현할 수 있습니다. 이 방법은 네트워크 애플리케이션의 고가용성을 향상시키고 서버 상태를 실시간으로 모니터링할 수 있는 매우 유용한 네트워크 도구입니다.

위 내용은 PHP 및 Keepalive를 사용한 실시간 심장박동 감지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.