A8DOG

A8DOG

随便写写,记录折腾过程!
telegram

PHPファイル+Cloudflareを使用した障害切り替えの実現!

サーバーは以前、不可抗力のために障害が発生しました。

時間は不確定ですが、私は寝ているかもしれませんし、オンラインで即座に処理できるかもしれません。

そこで、私はこのような簡単なツールを作りましたが、前提として、ドメインが cloudflare にホストされている必要があります。

ファイル:ここをクリックしてダウンロード

具体的な手順:#

1. まず、cloudflare にログインし、ドメインをクリックします。エリア ID を見つけて PHP ファイルにコピーします。

//エリアID
$id = '';

2. エリア ID の下にはAPI トークンを取得という項目があります。それをクリックします。

トークンを作成し、エリア DNS を編集というテンプレートを使用します。

エリアリソースの行でドメインを選択し、クライアントの IP アドレスフィルタリングでホワイトリストを追加できます。

作成したら、PHP ファイルにコピーします。

//APIを作成した後に取得するトークンをBearerの後に書く
$Authorization = 'Authorization: Bearer ';

注:Bearer とトークンの間にはスペースがあります。

3.2 つの情報を追加したら、25 行目に移動します。

//DNSレコードIDリストを取得する場合、trueに変更するとPHPのアドレスにアクセスするとJSON形式のDNSレコードリストが表示されます。
$get_dnsid = false;

falsetrueに変更し、サーバーにアップロードしてアクセスします。

いくつかの JSON が表示され、現在フェイルオーバーを行う必要がある解析の ID を選択します。

次に、次のように入力します:

//変更するDNSレコードID、$get_dnsid = trueでレコードリストを取得し、dnsidを設定した後、$get_dnsidをfalseに設定します
$dnsid = '';

そして、**$get_dnsid = true;$get_dnsid = false;** に変更します。

4. その他のパラメータを変更する

//pingチェックのIP
$pingip='baidu.com';

これを ping したいアドレスに変更します。

$dnstype = 'A';
//名前
$dnsname = '';
//変更後のIP
$dnscontent = '';
//プロキシ
(bool)$dnsproxied = true;
//ttl
$dnsttl = 3600;

上記は障害発生後に解析 IP を変更するためのパラメータです。最初のデフォルトは a 解析です。

2 番目は解析の内容、3 番目はバックアップサーバーの IP、4 番目は cf の cdn 機能を無効にするために false に変更します。

デフォルトでは有効になっています。5 番目は ttl 時間で、デフォルトは 1 時間ですが、自動に変更する場合は値を 1 に変更できます。

5.ping アドレスのポート

if (pingDomain($pingip, 80) === -1) {

43 行目からのもので、ここではデフォルトで 80 ポートになっていますが、他のポートに変更できます。

上記のすべてを設定したら、監視アクセス URL を設定するだけです。

注意:このファイルの ping 方法は、コンピュータのターミナルでの ping 方法とは異なります。

この方法は、ポートスキャンに似ています。ポートを 80 または 443 に設定すると、Web を監視できます。

ポートを 3306 に設定すると、mysql を監視できますが、ポートは PHP ファイルをデプロイした IP で開放する必要があります。

たとえば、宝塔でポート 7777 を開放している場合、このポートはプロセスに使用されていない場合でも障害と見なされます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。