web-dev-qa-db-ja.com

ワニスは、複数のプローブを持つようにバックエンドを構成しますか?

Varnish 3で、複数のプローブを持つようにバックエンドを構成することは可能ですか?

Drupalを実行している複数のワニスサーバーと複数のバックエンドサーバーがあります。アプリケーションサーバーの状態を確認するために、基本的な1秒間隔のヘルスチェックPHPファイルを構成しましたが、Drupal =スタック。ただし、このチェックは基本的なヘルスチェックよりも実行頻度が低くなります。例:5秒ごとにDrupalスタックをチェックできます。

このような場合、1つのバックエンドで2つの別々のプローブを使用することは可能ですか?

理論的構成:

probe healthcheck {
    .url = "/healthcheck.php";
    .interval = 1s;
    .timeout = 100 ms;
    .window = 5;
    .threshold = 5;
}

probe drupalcheck {
    .url = "/index.php";
    .interval = 5s;
    .timeout = 5s;
    .window = 5;
    .threshold = 5;
}

backend Apache_1 {.Host = "server01"; .port = "8080"; .probe = healthcheck; .probe = drupalcheck}
backend Apache_2 {.Host = "server02"; .port = "8080"; .probe = healthcheck; .probe = drupalcheck}
backend Apache_3 {.Host = "server03"; .port = "8080"; .probe = healthcheck; .probe = drupalcheck}
3
Highway of Life

クイックアンサー:いいえ。

長い答え:1つの実際のバックエンドサーバーにいくつでもバックエンドを指定でき、それぞれに独自のプローブを設定できます。その後、必要に応じてトラフィックをそれらにルーティングできます。

また、プローブ呼び出しを介してアプリケーションサーバーで「プローブチェック」スクリプトのようなものを呼び出すこともできます。これにより、独自のステータスチェックを実行できます。とにかくphp/python/etcスクリプトを呼び出しているだけなので、作成したスクリプトにすることができます。

ここにはもっと(完全に関連しているわけではありません)があります: https://www.varnish-cache.org/lists/pipermail/varnish-misc/2011-October/021298.html

1
Kirrus

プローブは、返されたヘッダーをチェックするだけです。したがって、最初に_/probe.php_に要求を送信し、その後_/healthcheck.php_に別の要求を送信するohneスクリプト_index.php_を使用できます。

_/probe.php_内では、$headers = get_headers($url,1);を使用して、各URLの40倍または50倍の戻りコードを分析できます。

最後に:

_if($atleastOneOfTheUrlsReturnedSomeThingBad){
  header('HTTP/1.0 404 Not Found');
}
else{
  header( "HTTP/1.1 200 OK" );
}
exit();
_
1
Hafenkranich