Ottomata has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/384586 )

Change subject: Set up Kafka MirrorMaker from main -> jumbo in eqiad
......................................................................

Set up Kafka MirrorMaker from main -> jumbo in eqiad

This includes a new profile::kafka::mirror class.  This
class can be used to set up a single Kafka MirrorMaker instance,
and as such, cannot be used to set up multiple MirrorMaker
instances running on a single node.  For now, this should
be fine, as we don't have this use case.

TODO:
- Prometheus monitoring
- TLS configuration

Bug: T177216
Change-Id: I020a9c1a5cb1e3c18a33f18c2ad91ea915a74ed7
---
M hieradata/role/common/kafka/jumbo/broker.yaml
M modules/confluent/manifests/kafka/mirror/instance.pp
M modules/confluent/templates/kafka/mirror/consumer.properties.erb
M modules/role/manifests/kafka/jumbo/broker.pp
A modules/role/manifests/kafka/simple/mirror.pp
5 files changed, 39 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/86/384586/1

diff --git a/hieradata/role/common/kafka/jumbo/broker.yaml 
b/hieradata/role/common/kafka/jumbo/broker.yaml
index cb776b3..3f58fed 100644
--- a/hieradata/role/common/kafka/jumbo/broker.yaml
+++ b/hieradata/role/common/kafka/jumbo/broker.yaml
@@ -34,3 +34,10 @@
 
 profile::kafka::broker::monitoring::replica_maxlag_warning: 1000000
 profile::kafka::broker::monitoring::replica_maxlag_critical: 5000000
+
+# Mirror all topics from main to jumbo.
+profile::kafka::mirror::source_cluster_name: main
+profile::kafka::mirror::destination_cluster_name: jumbo
+profile::kafka::mirror::properties:
+  num_streams: 2
+  offset_commit_interval_ms: 5000
diff --git a/modules/confluent/manifests/kafka/mirror/instance.pp 
b/modules/confluent/manifests/kafka/mirror/instance.pp
index f77e36a..64eaa00 100644
--- a/modules/confluent/manifests/kafka/mirror/instance.pp
+++ b/modules/confluent/manifests/kafka/mirror/instance.pp
@@ -8,7 +8,13 @@
 # [*source_zookeeper_url*]
 #   The URL that the source Kafka cluster users for coordination.
 #   The MirrorMaker consumer users this to look up source cluster
-#   metadata and start consuming.
+#   metadata and start consuming. NOTE: This parameter is deprecated.
+#   0.11 does not require zookeeper for consumer.  Use $source_brokers instead.
+#   TODO: Remove this parameter once all clusters are upgraded and using newer 
mirror maker.
+#
+# [*source_brokers*]
+#   Array of Kafka broker hosts in your source cluster.  These brokers
+#   will be used for bootstrapping the consumer configs and metadata.
 #
 # [*destination_brokers*]
 #   Array of Kafka brokers hosts in your destination cluster.  These brokers
@@ -81,10 +87,12 @@
 #   }
 #
 define confluent::kafka::mirror::instance(
-    # Consumer Settings
-    $source_zookeeper_url,
     $destination_brokers,
     $jmx_port,
+
+    # TODO: make source_brokers required when we remove $source_zookeeper_url 
after upgrading mirror maker
+    $source_brokers               = undef,
+    $source_zookeeper_url         = undef,
 
     $consumer_properties          = {},
 
@@ -109,6 +117,7 @@
     $producer_properties_template = 
'confluent/kafka/mirror/producer.properties.erb',
     $default_template             = 
'confluent/kafka/mirror/kafka-mirror.default.erb',
     $log4j_properties_template    = 
'confluent/kafka/mirror/log4j.properties.erb',
+
 )
 {
     require ::confluent::kafka::client
diff --git a/modules/confluent/templates/kafka/mirror/consumer.properties.erb 
b/modules/confluent/templates/kafka/mirror/consumer.properties.erb
index 80bd9b9..313f259 100644
--- a/modules/confluent/templates/kafka/mirror/consumer.properties.erb
+++ b/modules/confluent/templates/kafka/mirror/consumer.properties.erb
@@ -9,10 +9,16 @@
 # Kafka Consumer group id
 group.id=kafka-mirror-<%= @mirror_name %>
 
+<% if @source_zookeeper_url -%>
 # Zookeeper connection string
 # comma separated host:port pairs, each corresponding to a zk
 # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
 zookeeper.connect=<%= @source_zookeeper_url %>
+<% else -%>
+# list of brokers used for bootstrapping
+# format: host1:port1,host2:port2 ...
+bootstrap.servers=<%= Array(@source_brokers).join(',') %>
+<% end -%>
 
 ########################## Additional Propeties ##########################
 
diff --git a/modules/role/manifests/kafka/jumbo/broker.pp 
b/modules/role/manifests/kafka/jumbo/broker.pp
index c9875be..f84b461 100644
--- a/modules/role/manifests/kafka/jumbo/broker.pp
+++ b/modules/role/manifests/kafka/jumbo/broker.pp
@@ -12,4 +12,7 @@
     }
     include base::firewall
     include profile::kafka::broker
+
+    # Mirror from other Kafka cluster to jumbo.
+    include profile::kafka::mirror
 }
diff --git a/modules/role/manifests/kafka/simple/mirror.pp 
b/modules/role/manifests/kafka/simple/mirror.pp
new file mode 100644
index 0000000..2a67857
--- /dev/null
+++ b/modules/role/manifests/kafka/simple/mirror.pp
@@ -0,0 +1,11 @@
+# == Class role::kafka::simple::mirror
+# This is useful for testing Kafka MirrorMaker in labs.
+#
+class role::kafka::simple::mirror {
+    system::role { 'role::kafka::simple::mirror':
+        description => "Kafka simple MirrorMaker instance"
+    }
+
+    # include profile::kafka::mirrors
+    include profile::kafka::mirror
+}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I020a9c1a5cb1e3c18a33f18c2ad91ea915a74ed7
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ottomata <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to