在Varnish 3中是否有可能configuration后端有多个探测器?
我有多个清漆服务器和运行Drupal的多个后端服务器。 我已经configuration了一个基本的1秒间隔健康检查PHP文件来validation应用服务器的健康状况,但是我也想为Drupal堆栈使用一个健康检查,但是这个检查需要比基本的健康检查less一些。 例如:每5秒钟可以检查Drupal堆栈。
在这种情况下,是否可以在单个后端上使用2个独立的探针?
理论configuration:
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}
快速回答:不。
较长的回答:您可以指定多个后端到一个实际的后端服务器,每个后端服务器都可以拥有自己的探测器。 然后,您可以根据需要将stream量路由到他们。
您也可以通过调用调用,在应用程序服务器上调用类似“探测检查”的脚本,这可以进行自己的状态检查。 你只是调用一个php / python / etc脚本,所以它可以是你创build的脚本。
还有更多(不完全相关): https : //www.varnish-cache.org/lists/pipermail/varnish-misc/2011-October/021298.html
探针只是检查返回的标题。 因此,你可以有一个脚本/probe.php ,它首先发送一个请求到/healthcheck.php ,然后/healthcheck.php index.php发送一个请求。
在/probe.php里面可以使用$headers = get_headers($url,1); 并分析每个url上的40X或50X返回码。
最后:
if($atleastOneOfTheUrlsReturnedSomeThingBad){ header('HTTP/1.0 404 Not Found'); } else{ header( "HTTP/1.1 200 OK" ); } exit();