我有清漆安装与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; }