Giuseppe Lavagetto has uploaded a new change for review.
https://gerrit.wikimedia.org/r/220492
Change subject: varnish: allow picking which director is dynamic
......................................................................
varnish: allow picking which director is dynamic
Adding a "dyn_director" to varnish::instance allows us to:
* avoid including role::cache::base
* be generic enough to support the parsoid special-case
* be more clear and generic in building the template.
Change-Id: Iff2c3881ab1a83ad927f96834507855e7bba9876
---
M modules/role/manifests/cache/mobile.pp
M modules/role/manifests/cache/parsoid.pp
M modules/role/manifests/cache/text.pp
M modules/role/manifests/cache/upload.pp
M modules/varnish/manifests/instance.pp
M modules/varnish/templates/vcl/directors.vcl.tpl.erb
M modules/varnish/templates/vcl/wikimedia.vcl.erb
7 files changed, 31 insertions(+), 7 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/92/220492/1
diff --git a/modules/role/manifests/cache/mobile.pp
b/modules/role/manifests/cache/mobile.pp
index 39d482c..187f827 100644
--- a/modules/role/manifests/cache/mobile.pp
+++ b/modules/role/manifests/cache/mobile.pp
@@ -62,6 +62,11 @@
default => 'chash',
}
+ $be_dyn_director = $::role::cache::base::cluster_tier ? {
+ 'two' => 'eqiad',
+ default => undef,
+ }
+
varnish::instance { 'mobile-backend':
name => '',
vcl => 'mobile-backend',
@@ -70,6 +75,7 @@
storage => $::role::cache::2layer::persistent_storage_args,
runtime_parameters => $runtime_param,
directors =>
$varnish_be_directors[$::role::cache::base::cluster_tier],
+ dyn_directors => $be_dyn_director,
director_type => $director_type_cluster,
vcl_config => {
'default_backend' => $::role::cache::base::default_backend,
@@ -110,6 +116,7 @@
directors => {
'backend' => $site_mobile_nodes,
},
+ dyn_director => 'backend',
director_type => 'chash',
vcl_config => {
'retry503' => 1,
diff --git a/modules/role/manifests/cache/parsoid.pp
b/modules/role/manifests/cache/parsoid.pp
index 26b38d8..030d06c 100644
--- a/modules/role/manifests/cache/parsoid.pp
+++ b/modules/role/manifests/cache/parsoid.pp
@@ -75,6 +75,7 @@
'graphoid_backend' =>
$::role::cache::configuration::backends[$::realm]['graphoid'][$::mw_primary],
'restbase_backend' =>
$::role::cache::configuration::backends[$::realm]['restbase'][$::mw_primary],
},
+ dyn_director => 'backend',
director_type => 'chash',
vcl_config => {
'retry5xx' => 0,
diff --git a/modules/role/manifests/cache/text.pp
b/modules/role/manifests/cache/text.pp
index 234ee10..ec969fd 100644
--- a/modules/role/manifests/cache/text.pp
+++ b/modules/role/manifests/cache/text.pp
@@ -51,6 +51,11 @@
default => 'chash',
}
+ $be_dyn_director = $::role::cache::base::cluster_tier ? {
+ 'two' => 'eqiad',
+ default => undef,
+ }
+
varnish::instance { 'text-backend':
name => '',
vcl => 'text-backend',
@@ -60,6 +65,7 @@
runtime_parameters => $runtime_params,
storage => $::role::cache::2layer::persistent_storage_args,
directors =>
$varnish_be_directors[$::role::cache::base::cluster_tier],
+ dyn_directors => $be_dyn_director,
director_type => $director_type_cluster,
vcl_config => {
'cache4xx' => '1m',
@@ -106,6 +112,7 @@
'backend' => $site_text_nodes,
},
director_type => 'chash',
+ dyn_director => 'backend',
vcl_config => {
'retry503' => 1,
'cache4xx' => '1m',
diff --git a/modules/role/manifests/cache/upload.pp
b/modules/role/manifests/cache/upload.pp
index c3e39a4..2a7a494 100644
--- a/modules/role/manifests/cache/upload.pp
+++ b/modules/role/manifests/cache/upload.pp
@@ -64,6 +64,11 @@
default => 'chash',
}
+ $be_dyn_director = $::role::cache::base::cluster_tier ? {
+ 'two' => 'eqiad',
+ default => undef,
+ }
+
varnish::instance { 'upload-backend':
name => '',
vcl => 'upload-backend',
@@ -72,6 +77,7 @@
runtime_parameters => $runtime_params,
storage => $upload_storage_args,
directors =>
$varnish_be_directors[$::role::cache::base::cluster_tier],
+ dyn_directors => $be_dyn_director,
director_type => $director_type_cluster,
vcl_config => {
'default_backend' => $::role::cache::base::default_backend,
@@ -108,6 +114,7 @@
directors => {
'backend' => $site_upload_nodes,
},
+ dyn_directors => 'backend',
director_type => 'chash',
vcl_config => {
'retry503' => 1,
diff --git a/modules/varnish/manifests/instance.pp
b/modules/varnish/manifests/instance.pp
index ce01e4c..50e179d 100644
--- a/modules/varnish/manifests/instance.pp
+++ b/modules/varnish/manifests/instance.pp
@@ -14,7 +14,8 @@
$extra_vcl = [],
$cluster_options={},
$wikimedia_networks=[],
- $xff_sources=[]
+ $xff_sources=[],
+ $dyn_director=undef,
) {
include varnish::common
@@ -50,14 +51,13 @@
# Write the dynamic directors configuration, if we need it
if $dynamic_directors {
- require role::cache::base
if $name == '' {
$inst = 'backend'
} else {
$inst = $name
}
$use_dynamic_directors = ( !defined(Class['Role::Cache::1layer'])
- and !($inst == 'backend' and $::role::cache::base::cluster_tier ==
'one'))
+ and $dyn_directors != undef)
if $use_dynamic_directors {
varnish::common::directors { $vcl:
instance => $inst,
@@ -71,6 +71,8 @@
],
}
}
+ } else {
+ $use_dynamic_directors = false
}
file { "/etc/varnish/wikimedia_${vcl}.vcl":
diff --git a/modules/varnish/templates/vcl/directors.vcl.tpl.erb
b/modules/varnish/templates/vcl/directors.vcl.tpl.erb
index 1fd647c..332fa01 100644
--- a/modules/varnish/templates/vcl/directors.vcl.tpl.erb
+++ b/modules/varnish/templates/vcl/directors.vcl.tpl.erb
@@ -11,8 +11,7 @@
return ((Math.log10(100 - p) - 2) / (Math.log10(n - 1) -
Math.log10(n))).ceil
end
-# this is a one-element hash atm
-director = @directors.keys[0]
+director = @dyn_director
-%>
director <%= director %> <%= @director_type %> {
diff --git a/modules/varnish/templates/vcl/wikimedia.vcl.erb
b/modules/varnish/templates/vcl/wikimedia.vcl.erb
index c2a8bfb..098e41f 100644
--- a/modules/varnish/templates/vcl/wikimedia.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia.vcl.erb
@@ -144,10 +144,11 @@
# Directors
# Expected format: { "director name" => [ "backend1", "backend2" ] }
-<% if @use_dynamic_directors %>
+<% @varnish_directors.keys.sort.each do |director| -%>
+<% if @use_dynamic_directors and @dyn_director == director %>
+// We include director <%= director %> which is managed via confd
include "directors.<%= @inst %>.vcl";
<% else -%>
-<% @varnish_directors.keys.sort.each do |director| -%>
director <%= director %> <%= @director_type %> {
<% @director_options.each_pair do |option,value| -%>
.<%= option %> = <%= value %>;
--
To view, visit https://gerrit.wikimedia.org/r/220492
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iff2c3881ab1a83ad927f96834507855e7bba9876
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Giuseppe Lavagetto <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits