From e93852a313daefc1171f254f612891ecdcc6dcd6 Mon Sep 17 00:00:00 2001 From: Filip Pytloun Date: Wed, 3 Aug 2016 16:42:42 +0200 Subject: [PATCH] Add support for clustering --- README.rst | 22 ++++++++++++++++++++++ influxdb/files/default | 11 +++++++++++ influxdb/files/influxdb.conf | 14 ++++++++++++++ influxdb/map.jinja | 4 ++++ influxdb/server.sls | 9 +++++++++ metadata/service/server/cluster.yml | 20 ++++++++++++++++++++ tests/pillar/cluster.sls | 17 +++++++++++++++++ tests/pillar/{server.sls => single.sls} | 0 8 files changed, 97 insertions(+) create mode 100644 influxdb/files/default create mode 100644 metadata/service/server/cluster.yml create mode 100644 tests/pillar/cluster.sls rename tests/pillar/{server.sls => single.sls} (100%) diff --git a/README.rst b/README.rst index c2f5587..0105444 100644 --- a/README.rst +++ b/README.rst @@ -64,6 +64,28 @@ InfluxDB relay: idb02: location: idb02.local:9096 +InfluxDB cluster: + +.. code-block:: yaml + + influxdb: + server: + enabled: true + meta: + bind: + address: 0.0.0.0 + port: 8088 + http_address: 0.0.0.0 + http_port: 8091 + cluster: + members: + - host: idb01.local + port: 8091 + - host: idb02.local + port: 8091 + - host: idb03.local + port: 8091 + Deploy influxdb apt repository (using linux formula): .. code-block:: yaml diff --git a/influxdb/files/default b/influxdb/files/default new file mode 100644 index 0000000..20d854e --- /dev/null +++ b/influxdb/files/default @@ -0,0 +1,11 @@ +{%- from "influxdb/map.jinja" import server with context -%} +{%- if server.cluster is defined %} +{%- for member in server.cluster.members %} +{%- if member.host != grains.fqdn %} +INFLUXD_OPTS="-join {{ member.host }}:{{ member.port }}" +{%- endif %} +{%- endfor %} +{%- endif %} +{#- +vim: syntax=jinja +-#} diff --git a/influxdb/files/influxdb.conf b/influxdb/files/influxdb.conf index 605ed62..76c9633 100644 --- a/influxdb/files/influxdb.conf +++ b/influxdb/files/influxdb.conf @@ -21,6 +21,7 @@ reporting-disabled = false ### about the InfluxDB cluster. ### +{%- if server.meta.enabled %} [meta] # Where the metadata/raft database is stored dir = "/var/lib/influxdb/meta" @@ -33,6 +34,14 @@ reporting-disabled = false # The default duration for leases. lease-duration = "1m0s" +{%- else %} +[meta] + enabled = false +{%- endif %} + {%- if server.get('meta', {}).bind is defined %} + bind-address = "{{ server.meta.bind.address }}:{{ server.admin.bind.port }}" + http-bind-address = "{{ server.meta.bind.http_address }}:{{ server.admin.bind.http_port }}" + {%- endif %} ### ### [data] @@ -43,6 +52,7 @@ reporting-disabled = false ### defaults should work for most systems. ### +{%- if server.data.enabled %} [data] # Controls if this node holds time series data shards in the cluster enabled = true @@ -86,6 +96,10 @@ reporting-disabled = false # block in a TSM file. Larger numbers may yield better compression # but could incur a performance penalty when querying # max-points-per-block = 1000 +{%- else %} +[data] + enabled = false +{%- endif %} ### ### [cluster] diff --git a/influxdb/map.jinja b/influxdb/map.jinja index 3c63303..a71c157 100644 --- a/influxdb/map.jinja +++ b/influxdb/map.jinja @@ -20,6 +20,10 @@ default: bind: address: 0.0.0.0 port: 8083 + data: + enabled: true + meta: + enabled: true {%- endload %} {%- set server = salt['grains.filter_by'](base_defaults, merge=salt['pillar.get']('influxdb:server')) %} diff --git a/influxdb/server.sls b/influxdb/server.sls index 0c310f7..06643b5 100644 --- a/influxdb/server.sls +++ b/influxdb/server.sls @@ -13,11 +13,20 @@ influxdb_config: - require: - pkg: influxdb_packages +influxdb_default: + file.managed: + - name: /etc/default/influxdb + - source: salt://influxdb/files/default + - template: jinja + - require: + - pkg: influxdb_packages + influxdb_service: service.running: - enable: true - name: {{ server.service }} - watch: - file: influxdb_config + - file: influxdb_default {%- endif %} diff --git a/metadata/service/server/cluster.yml b/metadata/service/server/cluster.yml new file mode 100644 index 0000000..4c330c4 --- /dev/null +++ b/metadata/service/server/cluster.yml @@ -0,0 +1,20 @@ +applications: +- influxdb +classes: +- service.influxdb.support +parameters: + influxdb: + server: + enabled: true + admin: + bind: + address: 0.0.0.0 + http: + bind: + address: 0.0.0.0 + meta: + bind: + address: 0.0.0.0 + port: 8088 + http_address: 0.0.0.0 + port: 8091 diff --git a/tests/pillar/cluster.sls b/tests/pillar/cluster.sls new file mode 100644 index 0000000..19911cb --- /dev/null +++ b/tests/pillar/cluster.sls @@ -0,0 +1,17 @@ +influxdb: + server: + enabled: true + meta: + bind: + address: 0.0.0.0 + port: 8088 + http_address: 0.0.0.0 + http_port: 8091 + cluster: + members: + - host: idb01.local + port: 8091 + - host: idb02.local + port: 8091 + - host: idb03.local + port: 8091 diff --git a/tests/pillar/server.sls b/tests/pillar/single.sls similarity index 100% rename from tests/pillar/server.sls rename to tests/pillar/single.sls -- 2.32.7