Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengesanan degupan jantung masa nyata menggunakan PHP dan Keepalive

Pengesanan degupan jantung masa nyata menggunakan PHP dan Keepalive

WBOY
WBOYasal
2023-06-28 08:30:261963semak imbas

Dengan perkembangan teknologi Internet, sistem komputer perlu sentiasa dioptimumkan dan diperbaiki untuk memastikan ketersediaan sistem yang tinggi. Antaranya, pengesanan degupan jantung adalah fungsi yang sangat penting, digunakan untuk mengesan sama ada pelayan dalam talian dan sama ada rangkaian itu normal. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan pengesanan degupan jantung masa nyata menggunakan PHP dan Keepalive.

1. Pengenalan kepada Keepalive

Sebelum memperkenalkan Keepalive, mari kita fahami proses jabat tangan tiga hala TCP. Penubuhan sambungan TCP memerlukan jabat tangan tiga hala, iaitu, klien menghantar paket SYN ke pelayan, pelayan menghantar paket SYN+ACK selepas menerimanya, dan akhirnya klien menghantar paket ACK, supaya sambungan berjaya diwujudkan.

Apabila pelanggan menghantar permintaan, jika pelayan tidak bertindak balas, pelanggan akan menganggap bahawa sambungan telah terputus. Walau bagaimanapun, kadangkala pelayan tidak dapat bertindak balas kerana turun naik rangkaian atau pelayan sibuk Pada masa ini, pemutusan sambungan akan menjejaskan pengalaman pengguna Oleh itu, satu mekanisme diperlukan untuk memastikan sambungan tetap hidup.

Keepalive ialah protokol rangkaian yang dibina di atas TCP yang mengesan sama ada sambungan masih hidup. Apabila sambungan melahu untuk tempoh masa, Keepalive akan menghantar paket pengesanan kepada pelayan Jika pelayan masih tidak bertindak balas, ia akan menentukan bahawa sambungan telah diputuskan.

2. Gunakan PHP untuk melaksanakan pengesanan degupan jantung

Untuk melaksanakan pengesanan degupan jantung, anda memerlukan dua skrip, satu ialah skrip klien (Client.php), yang digunakan untuk menghantar permintaan degupan jantung ke pelayan dengan kerap, dan satu lagi ialah skrip skrip pelayan (Server.php) Digunakan untuk menerima permintaan degupan jantung dan bertindak balas dengan respons yang sesuai. Mari kita lihat pelaksanaan khusus.

Skrip pelanggan (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 秒发送一次心跳请求
}
?>

Dalam kod di atas, curl digunakan untuk menghantar permintaan HTTP, menghantar permintaan degupan jantung secara kerap ke pelayan dan fungsi sleep() digunakan untuk melaksanakan penghantaran berjadual.

Skrip pelayan (Server.php)

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

Dalam kod di atas, skrip pelayan bertindak balas dengan mesej kejayaan mudah selepas menerima permintaan yang dihantar oleh pelanggan.

Untuk memastikan pelayan berjalan, anda boleh menggunakan perisian pelayan yang serupa dengan Nginx atau Apache sebagai persekitaran berjalan untuk skrip pelayan.

3. Gunakan Keepalive untuk melaksanakan pengesanan degupan jantung

Menggunakan Keepalive untuk melaksanakan pengesanan degupan jantung memerlukan pemasangan perisian Keepalive dan konfigurasi yang berkaitan. Di bawah sistem CentOS, Keepalive boleh dipasang melalui arahan berikut:

sudo yum install ipvsadm keepalived -y

Berikut ialah contoh fail konfigurasi 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
    }
  }
}

Fail konfigurasi di atas mentakrifkan Contoh VRRP (VI_1), statusnya ialah MASTER; tentukan alamat IP maya (192.168.10.10), dan tetapkan skrip penjejakan (chk_http_port) sebagai skrip pengesanan degupan jantung akhirnya menentukan pelayan maya (alamat IP ialah 192.168.10.10, port ialah 80), dan tentukan Dibuat pelayan sebenar (alamat IP 192.168.10.11, port 80).

Berikut ialah contoh skrip penjejakan (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

Skrip di atas digunakan untuk mengesan sama ada pelayan masih hidup, dan jika pelayan tidak dapat bertindak balas atau membalas dengan ralat, ia akan menghentikan Keepalive .

4. Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan PHP dan Keepalive untuk melaksanakan pengesanan degupan jantung masa nyata. PHP boleh menghantar permintaan HTTP melalui curl untuk mensimulasikan permintaan degupan jantung, manakala Keepalive boleh melaksanakan pengesanan degupan jantung melalui VRRP dan IPVS. Kaedah ini boleh meningkatkan ketersediaan tinggi aplikasi rangkaian dan memantau status pelayan dalam masa nyata Ia adalah alat rangkaian yang sangat berguna.

Atas ialah kandungan terperinci Pengesanan degupan jantung masa nyata menggunakan PHP dan Keepalive. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn