BBlack has submitted this change and it was merged.

Change subject: role::cache::instances: create and use for maps
......................................................................


role::cache::instances: create and use for maps

Bug: T127481
Change-Id: Ic2d55a333c0f1334c63e99e09ba80204051928d6
---
A modules/role/manifests/cache/instances.pp
M modules/role/manifests/cache/maps.pp
2 files changed, 134 insertions(+), 101 deletions(-)

Approvals:
  BBlack: Verified; Looks good to me, approved



diff --git a/modules/role/manifests/cache/instances.pp 
b/modules/role/manifests/cache/instances.pp
new file mode 100644
index 0000000..8a1ba17
--- /dev/null
+++ b/modules/role/manifests/cache/instances.pp
@@ -0,0 +1,92 @@
+# This defines the pair of varnish::instance for a 2layer/2tier cache cluster
+define role::cache::instances (
+    $fe_mem_gb,
+    $runtime_params,
+    $app_directors,
+    $app_be_opts,
+    $fe_vcl_config,
+    $be_vcl_config,
+    $fe_extra_vcl,
+    $be_extra_vcl,
+    $fe_def_beopts,
+    $be_def_beopts,
+    $be_storage,
+    $cluster_nodes
+) {
+
+    if ($::site_tier == 'one') {
+        $be_directors = $app_directors
+    } else {
+        $be_directors = {
+            'cache_eqiad' => {
+                'dynamic'  => 'yes',
+                'type'     => 'chash',
+                'dc'       => 'eqiad',
+                'service'  => 'varnish-be',
+                'backends' => $cluster_nodes['eqiad'],
+            },
+            'cache_eqiad_random' => {
+                'dynamic'  => 'yes',
+                'type'     => 'random',
+                'dc'       => 'eqiad',
+                'service'  => 'varnish-be-rand',
+                'backends' => $cluster_nodes['eqiad'],
+            },
+        }
+    }
+
+    varnish::instance { "${title}-backend":
+        name               => '',
+        layer              => 'backend',
+        vcl                => "${title}-backend",
+        extra_vcl          => $be_extra_vcl,
+        ports              => [ 3128 ],
+        admin_port         => 6083,
+        runtime_parameters => $runtime_params,
+        storage            => $be_storage,
+        vcl_config         => $be_vcl_config,
+        directors          => $be_directors,
+        backend_options    => array_concat(
+            $::role::cache::2layer::backend_scaled_weights,
+            $app_be_opts,
+            {
+                'backend_match' => '^cp[0-9]+\.',
+                'port'          => 3128,
+                'probe'         => 'varnish',
+            },
+            $be_def_beopts
+        ),
+    }
+
+    varnish::instance { "${title}-frontend":
+        name               => 'frontend',
+        layer              => 'frontend',
+        vcl                => "${title}-frontend",
+        extra_vcl          => $fe_extra_vcl,
+        ports              => [ 80 ],
+        admin_port         => 6082,
+        runtime_parameters => $runtime_params,
+        storage            => "-s malloc,${fe_mem_gb}G",
+        directors          => {
+            'cache_local' => {
+                'dynamic'  => 'yes',
+                'type'     => 'chash',
+                'dc'       => $::site,
+                'service'  => 'varnish-be',
+                'backends' => $cluster_nodes[$::site],
+            },
+            'cache_local_random' => {
+                'dynamic'  => 'yes',
+                'type'     => 'random',
+                'dc'       => $::site,
+                'service'  => 'varnish-be-rand',
+                'backends' => $cluster_nodes[$::site],
+            },
+        },
+        vcl_config         => $fe_vcl_config,
+        backend_options    => array_concat(
+            $::role::cache::2layer::backend_scaled_weights,
+            $fe_def_beopts
+        ),
+    }
+}
diff --git a/modules/role/manifests/cache/maps.pp 
b/modules/role/manifests/cache/maps.pp
index 72cc353..6865cdb 100644
--- a/modules/role/manifests/cache/maps.pp
+++ b/modules/role/manifests/cache/maps.pp
@@ -3,67 +3,48 @@
         description => 'maps Varnish cache server',
     }
 
+    include role::cache::2layer
+    include role::cache::ssl::unified
+    if $::role::cache::configuration::has_ganglia {
+        include varnish::monitoring::ganglia::vhtcpd
+    }
+
     class { 'varnish::htcppurger':
         mc_addrs => [ '239.128.0.114' ],
     }
-
-    include role::cache::2layer
 
     class { 'lvs::realserver':
         realserver_ips => $lvs::configuration::service_ips['maps'][$::site],
     }
 
-    $cluster_nodes = hiera('cache::maps::nodes')
-    $site_cluster_nodes = $cluster_nodes[$::site]
-
-    $memory_storage_size = 12
-
-    include role::cache::ssl::unified
-
-    $varnish_be_directors = {
-        'one' => {
-            'kartotherian'   => {
-                'dynamic'  => 'no',
-                'type'     => 'random',
-                # XXX note explicit abnormal hack: service only exists in 
codfw, but eqiad is Tier-1 in general
-                # XXX this means traffic is moving x-dc without crypto!
-                # XXX this also means users mapped to codfw frontends bounce 
traffic [codfw->eqiad->codfw] on their way in!
-                'backends' => 
$role::cache::configuration::backends[$::realm]['kartotherian']['codfw'],
-            },
+    $app_directors = {
+        'kartotherian'   => {
+            'dynamic'  => 'no',
+            'type'     => 'random',
+            # XXX note explicit abnormal hack: service only exists in codfw, 
but eqiad is Tier-1 in general
+            # XXX this means traffic is moving x-dc without crypto!
+            # XXX this also means users mapped to codfw frontends bounce 
traffic [codfw->eqiad->codfw] on their way in!
+            'backends' => 
$role::cache::configuration::backends[$::realm]['kartotherian']['codfw'],
         },
-        'two' => {
-            'cache_eqiad' => {
-                'dynamic'  => 'yes',
-                'type'     => 'chash',
-                'dc'       => 'eqiad',
-                'service'  => 'varnish-be',
-                'backends' => $cluster_nodes['eqiad'],
-            },
-            'cache_eqiad_random' => {
-                'dynamic'  => 'yes',
-                'type'     => 'random',
-                'dc'       => 'eqiad',
-                'service'  => 'varnish-be-rand',
-                'backends' => $cluster_nodes['eqiad'],
-            },
-        }
     }
 
-    if $::role::cache::configuration::has_ganglia {
-        include varnish::monitoring::ganglia::vhtcpd
+    $fe_def_beopts = {
+        'port'                  => 3128,
+        'connect_timeout'       => '5s',
+        'first_byte_timeout'    => '35s',
+        'between_bytes_timeout' => '2s',
+        'max_connections'       => 100000,
+        'probe'                 => 'varnish',
     }
 
-    $fe_be_opts = array_concat(
-        $::role::cache::2layer::backend_scaled_weights,
-        [{
-            'port'                  => 3128,
-            'connect_timeout'       => '5s',
-            'first_byte_timeout'    => '35s',
-            'between_bytes_timeout' => '2s',
-            'max_connections'       => 100000,
-            'probe'                 => 'varnish',
-        }]
-    )
+    $be_def_beopts = {
+        'port'                  => 6533,
+        'connect_timeout'       => '5s',
+        'first_byte_timeout'    => '35s',
+        'between_bytes_timeout' => '4s',
+        'max_connections'       => 1000,
+        'probe'                 => 'maps',
+    }
 
     $common_vcl_config = {
         'cache4xx'         => '1m',
@@ -79,59 +60,19 @@
         'https_redirects'  => true,
     })
 
-    varnish::instance { 'maps-backend':
-        name               => '',
-        layer              => 'backend',
-        vcl                => 'maps-backend',
-        ports              => [ 3128 ],
-        admin_port         => 6083,
-        runtime_parameters => ['default_ttl=86400'],
-        storage            => $::role::cache::2layer::persistent_storage_args,
-        directors          => $varnish_be_directors[$::site_tier],
-        vcl_config         => $be_vcl_config,
-        backend_options    => 
array_concat($::role::cache::2layer::backend_scaled_weights, [
-            {
-                'backend_match' => '^cp[0-9]+\.eqiad.wmnet$',
-                'port'          => 3128,
-                'probe'         => 'varnish',
-            },
-            {
-                'port'                  => 6533,
-                'connect_timeout'       => '5s',
-                'first_byte_timeout'    => '35s',
-                'between_bytes_timeout' => '4s',
-                'max_connections'       => 1000,
-                'probe'                 => 'maps',
-            },
-        ]),
-    }
-
-    varnish::instance { 'maps-frontend':
-        name               => 'frontend',
-        layer              => 'frontend',
-        vcl                => 'maps-frontend',
-        ports              => [ 80 ],
-        admin_port         => 6082,
-        runtime_parameters => ['default_ttl=86400'],
-        storage            => "-s malloc,${memory_storage_size}G",
-        directors          => {
-            'cache_local' => {
-                'dynamic'  => 'yes',
-                'type'     => 'chash',
-                'dc'       => $::site,
-                'service'  => 'varnish-be',
-                'backends' => $site_cluster_nodes,
-            },
-            'cache_local_random' => {
-                'dynamic'  => 'yes',
-                'type'     => 'random',
-                'dc'       => $::site,
-                'service'  => 'varnish-be-rand',
-                'backends' => $site_cluster_nodes,
-            },
-        },
-        vcl_config         => $fe_vcl_config,
-        backend_options    => $fe_be_opts,
+    role::cache::instances { 'maps':
+        fe_mem_gb      => 12,
+        runtime_params => ['default_ttl=86400'],
+        app_directors  => $app_directors,
+        app_be_opts    => [],
+        fe_vcl_config  => $fe_vcl_config,
+        be_vcl_config  => $be_vcl_config,
+        fe_extra_vcl   => [],
+        be_extra_vcl   => [],
+        be_storage     => $::role::cache::2layer::persistent_storage_args,
+        fe_def_beopts  => $fe_def_beopts,
+        be_def_beopts  => $be_def_beopts,
+        cluster_nodes  => hiera('cache::maps::nodes'),
     }
 
     # Install a varnishkafka producer to send

-- 
To view, visit https://gerrit.wikimedia.org/r/274596
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic2d55a333c0f1334c63e99e09ba80204051928d6
Gerrit-PatchSet: 7
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: BBlack <bbl...@wikimedia.org>
Gerrit-Reviewer: BBlack <bbl...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to