demo use of shard params

parent 3b2c1f7e
import std; import std;
import directors; import directors;
import blob; import blob;
...@@ -40,7 +39,9 @@ acl vk8s_cluster_acl { ...@@ -40,7 +39,9 @@ acl vk8s_cluster_acl {
} }
sub vcl_init { sub vcl_init {
new vk8s_cluster_param = directors.shard_param();
new vk8s_cluster = directors.shard(); new vk8s_cluster = directors.shard();
vk8s_cluster.associate(vk8s_cluster_param.use());
vk8s_cluster.add_backend(vk8s_default_varnish-8445d4f7f-z2b9p_80); vk8s_cluster.add_backend(vk8s_default_varnish-8445d4f7f-z2b9p_80);
vk8s_cluster.add_backend(vk8s_viking-service_172_17_0_13_80); vk8s_cluster.add_backend(vk8s_viking-service_172_17_0_13_80);
vk8s_cluster.add_backend(vk8s_default_varnish-8445d4f7f-ldljf_80); vk8s_cluster.add_backend(vk8s_default_varnish-8445d4f7f-ldljf_80);
...@@ -85,11 +86,12 @@ sub vcl_backend_fetch { ...@@ -85,11 +86,12 @@ sub vcl_backend_fetch {
if (bereq.http.VK8S-Shard-Primary-Only) { if (bereq.http.VK8S-Shard-Primary-Only) {
return (fetch); return (fetch);
} }
vk8s_cluster_param.set(by=KEY, key=vk8s_cluster.key(bereq.http.Host));
if (bereq.retries == 0 if (bereq.retries == 0
&& !bereq.uncacheable && !bereq.uncacheable
&& remote.ip !~ vk8s_cluster_acl && remote.ip !~ vk8s_cluster_acl
&& "" + vk8s_cluster.backend(resolve=NOW, by=KEY, key=vk8s_cluster.key(bereq.http.Host)) != server.identity) { && "" + vk8s_cluster.backend(resolve=NOW) != server.identity) {
set bereq.backend = vk8s_cluster.backend(resolve=LAZY, by=KEY, key=vk8s_cluster.key(bereq.http.Host)); set bereq.backend = vk8s_cluster.backend(resolve=LAZY);
set bereq.http.VK8S-Is-Bgfetch = bereq.is_bgfetch; set bereq.http.VK8S-Is-Bgfetch = bereq.is_bgfetch;
return (fetch); return (fetch);
} }
...@@ -99,7 +101,7 @@ sub vcl_backend_response { ...@@ -99,7 +101,7 @@ sub vcl_backend_response {
if (bereq.http.VK8S-Shard-Primary-Only) { if (bereq.http.VK8S-Shard-Primary-Only) {
return (deliver); return (deliver);
} }
if (bereq.backend == vk8s_cluster.backend(resolve=LAZY, by=KEY, key=vk8s_cluster.key(bereq.http.Host))) { if (bereq.backend == vk8s_cluster.backend(resolve=LAZY)) {
if (beresp.http.VK8S-Cluster-TTL) { if (beresp.http.VK8S-Cluster-TTL) {
set beresp.ttl = std.duration( set beresp.ttl = std.duration(
beresp.http.VK8S-Cluster-TTL + "s", 1s); beresp.http.VK8S-Cluster-TTL + "s", 1s);
...@@ -116,7 +118,7 @@ sub vcl_backend_response { ...@@ -116,7 +118,7 @@ sub vcl_backend_response {
} }
sub vcl_backend_error { sub vcl_backend_error {
if (bereq.backend == vk8s_cluster.backend(resolve=LAZY, by=KEY, key=vk8s_cluster.key(bereq.http.Host))) { if (bereq.backend == vk8s_cluster.backend(resolve=LAZY)) {
return (deliver); return (deliver);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment