Skip to content

2 + 1 Cluster Example

This TeskaLabs LogMan.io layout uses two full-sized core nodes plus one Arbiter node. You need two production-class machines and a smaller host for the Arbiter. That is often a compact VM on your existing virtualization platform, or an installation colocated with a hardware collector.

Each node follows a different install path: you are forming a three-member cluster, not three isolated installs.

Install and stabilize the first node using the same steps as for a single-node deployment. Then join the second node to that cluster. After bootstrap, the second member is in the cluster but still minimal; you assign core cluster services and remaining LogMan.io services through model.yaml.

After the second node is in place, model.yaml should look like this:

model.yaml after installation of the second node
define:
  type: rc/model

services:
  zoonavigator:
    instances: {1: {node: "node1"}}
  mongo:
    - node1
    - node2
  influxdb:
    - node1
  grafana:
    - node1
  telegraf:
    - node1
    - node2
  kafka:
    - node1
    - node2
  kafdrop:
    - node1
  kibana:
    - node1
  elasticsearch:
    instances:
      master-1:
        node: node1
      hot-1:
        node: node1
      warm-1:
        node: node1
      cold-1:
        node: node1
      master-2:
        node: node2
      hot-2:
        node: node2
      warm-2:
        node: node2
      cold-2:
        node: node2
  nginx:
    - node1
    - node2
  seacat-auth:
    - node1
    - node2
  asab-pyppeteer:
    - node1
  bs-query:
    - node1
  asab-iris:
    - node1
    - node2
  lmio-installer:
    - node1
  lmio-receiver:
    - node1
    - node2
  lmio-depositor:
    - node1
    - node2
  lmio-elman:
    - node1
  lmio-alerts:
    - node1
  lmio-lookupbuilder:
    - node1
    - node2
  lmio-ipaddrproc:
    - node1
    - node2
  lmio-watcher:
    - node1
  lmio-correlator-builder:
    - node1
  lmio-collector-system:
    - node1
    - node2
  lmio-feeds:
    - node1
  asab-discovery:
    - node1
  lmio-franz:
    - node1
  lmio-trex:
    - node1
  lmio-parser-builder:
    - node1
  lmio-chart:
    - node1
    - node2

params:
  PUBLIC_URL: https://node1  # change this default to custom domain

applications:
  - name: "ASAB Maestro"
    version: v25.47.09
  - name: "LogMan.io"
    version: v25.47.09

webapps:
  /: LogMan.io WebUI
  /auth: SeaCat Auth WebUI

Do not leave the cluster in a two-node configuration for long; that risks split-brain. Plan to add the Arbiter (third node) soon after the second node joins.

The third member is the Arbiter. Install it per the Arbiter section of the installation guide. After bootstrap, attach it to the cluster and declare the consensus and monitoring services in the model.

The finished model.yaml for a 2+1 cluster should look like this:

model.yaml of 2+1 cluster

define:
  type: rc/model

services:
  zoonavigator:
    instances: {1: {node: "node1"}}
  mongo:
    - node1
    - node2
    - node3
  influxdb:
    - node1
  grafana:
    - node1
  telegraf:
    - node1
    - node2
    - node3
  kafka:
    - node1
    - node2
  kafdrop:
    - node1
  kibana:
    - node1
  elasticsearch:
    instances:
      master-1:
        node: node1
      hot-1:
        node: node1
      warm-1:
        node: node1
      cold-1:
        node: node1
      master-2:
        node: node2
      hot-2:
        node: node2
      warm-2:
        node: node2
      cold-2:
        node: node2
      master-3:
        node: node3
  nginx:
    - node1
    - node2
  seacat-auth:
    - node1
    - node2
  asab-pyppeteer:
    - node1
  bs-query:
    - node1
  asab-iris:
    - node1
    - node2
  lmio-installer:
    - node1
  lmio-receiver:
    - node1
    - node2
  lmio-depositor:
    - node1
    - node2
  lmio-elman:
    - node1
  lmio-alerts:
    - node1
  lmio-lookupbuilder:
    - node1
    - node2
  lmio-ipaddrproc:
    - node1
    - node2
  lmio-watcher:
    - node1
  lmio-correlator-builder:
    - node1
  lmio-collector-system:
    - node1
    - node2
    - node3
  lmio-feeds:
    - node1
  asab-discovery:
    - node1
  lmio-franz:
    - node1
  lmio-trex:
    - node1
  lmio-parser-builder:
    - node1
  lmio-chart:
    - node1
    - node2

params:
  PUBLIC_URL: https://node1  # change this default to custom domain

applications:
  - name: "ASAB Maestro"
    version: v25.47.09
  - name: "LogMan.io"
    version: v25.47.09

webapps:
  /: LogMan.io WebUI
  /auth: SeaCat Auth WebUI