清漆忽略后端

我有清漆安装与2个后端服务器与循环主任。

2个后端显示在varnishstat和varnishadm健康。

varnishadm输出:

Backend name Admin Probe boot.app1 probe Healthy 5/5 boot.app2 probe Healthy 5/5 

VCLconfiguration:

 probe ping { .interval = 5s; .timeout = 1s; .threshold = 3; .window = 5; .url = "/ping"; } backend app1 { .host = "app-1.example.com"; .port = "80"; .probe = ping; } backend app2 { .host = "app-2.example.com"; .port = "80"; .probe = ping; } new application_servers = directors.round_robin(); application_servers.add_backend(app1); application_servers.add_backend(app2); set req.backend_hint = application_servers; 

varnishstat输出:

 VBE.boot.app1.happy ffffffffff VVVVVVVVVVVVVVVVVVVVVVVV VBE.boot.app1.bereq_hdrbytes 66.17K 0.00 91.00 0.00 0.00 0.00 VBE.boot.app1.beresp_hdrbytes 76.72K 0.00 106.00 0.00 0.00 0.00 VBE.boot.app1.beresp_bodybytes 11.91M 0.00 16.50K 0.00 0.00 0.00 VBE.boot.app1.conn 251 0.00 . 251.00 251.00 251.00 VBE.boot.app1.req 251 0.00 . 0.00 0.00 0.00 VBE.boot.app2.happy ffffffffff VVVVVVVVVVVVVVVVVVVVVVVV 

您可以从varnishstat命令中看到,stream量似乎只能在循环configuration中发送到第一台服务器。 除了.happy以外,没有其他的app2服务器

有什么想法导致导演每次select第一台服务器?

你需要把你的VCL文件改成这样的

 probe ping { .interval = 5s; .timeout = 1s; .threshold = 3; .window = 5; .url = "/ping"; } backend app1 { .host = "app-1.example.com"; .port = "80"; .probe = ping; } backend app2 { .host = "app-2.example.com"; .port = "80"; .probe = ping; } sub vcl_init { new application_servers = directors.round_robin(); application_servers.add_backend(app1); application_servers.add_backend(app2); } sub vcl_recv{ set req.backend_hint = application_servers; }