Icinga HA with seperated Web, Director and Database

Hello all,

another Question from me :slight_smile:
I build a new Icinga 2 Setup, with two Masters, a seperated Icingaweb2 Installation (with Director) and a seperated MySQL-Database. ThereĀ“s also one Satellite at the Moment, connected to both Masters.
The Config Master is Master-1, which receives the Deployments from the Director.

Now my Problem: If i stop the icinga service on the Master-1, i canĀ“t reschedule Checks.
Error: icinga2: Failed to connect to icinga2-primary port 5665: Connection refused.
ThatĀ“s fine so far, but shouldnĀ“t run icinga the checks on the secondary node? The Failover is working, the Active Endpoint is the Master-2 Node. Also the checks are automatically executed after 5 min e.gā€¦ But the rescheduling is not working.

If you need more information, please just let me know.
Thanks for the help in advance.

System: Debian11
Icinga Version: Version: r2.13.3-1
Enabled Features (Master-1 and 2): api checker ido-mysql mainlog notification

icinga2 object list --type Zone looks the Same on Master-1 (Primary) and Master-2 (Secondary):
root@icinga2-primary:/usr/lib/nagios/plugins# icinga2 object list --type Zone

Object 'director-global' of type 'Zone':
  % declared in '/etc/icinga2/zones.conf', lines 20:1-20:29
  * __name = "director-global"
  * endpoints = null
  * global = true
    % = modified in '/etc/icinga2/zones.conf', lines 21:2-21:14
  * name = "director-global"
  * package = "_etc"
  * parent = ""
  * source_location
    * first_column = 1
    * first_line = 20
    * last_column = 29
    * last_line = 20
    * path = "/etc/icinga2/zones.conf"
  * templates = [ "director-global" ]
    % = modified in '/etc/icinga2/zones.conf', lines 20:1-20:29
  * type = "Zone"
  * zone = ""

Object 'master' of type 'Zone':
  % declared in '/etc/icinga2/zones.conf', lines 12:1-12:20
  * __name = "master"
  * endpoints = [ "icinga2-primary.*.de", "icinga2-secondary.*.de" ]
    % = modified in '/etc/icinga2/zones.conf', lines 13:2-13:87
  * global = false
  * name = "master"
  * package = "_etc"
  * parent = ""
  * source_location
    * first_column = 1
    * first_line = 12
    * last_column = 20
    * last_line = 12
    * path = "/etc/icinga2/zones.conf"
  * templates = [ "master" ]
    % = modified in '/etc/icinga2/zones.conf', lines 12:1-12:20
  * type = "Zone"
  * zone = ""

Object 'global-templates' of type 'Zone':
  % declared in '/etc/icinga2/zones.conf', lines 16:1-16:30
  * __name = "global-templates"
  * endpoints = null
  * global = true
    % = modified in '/etc/icinga2/zones.conf', lines 17:2-17:14
  * name = "global-templates"
  * package = "_etc"
  * parent = ""
  * source_location
    * first_column = 1
    * first_line = 16
    * last_column = 30
    * last_line = 16
    * path = "/etc/icinga2/zones.conf"
  * templates = [ "global-templates" ]
    % = modified in '/etc/icinga2/zones.conf', lines 16:1-16:30
  * type = "Zone"
  * zone = ""

Object 'satellite.*.de' of type 'Zone':
  % declared in '/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_zones.conf', lines 1:0-1:38
  * __name = "satellite.*.de"
  * endpoints = [ "satellite.*.de" ]
    % = modified in '/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_zones.conf', lines 3:5-3:47
  * global = false
  * name = "satellite.*.de"
  * package = "director"
  * parent = "master"
    % = modified in '/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_zones.conf', lines 2:5-2:21
  * source_location
    * first_column = 0
    * first_line = 1
    * last_column = 38
    * last_line = 1
    * path = "/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_zones.conf"
  * templates = [ "satellite.*.de" ]
    % = modified in '/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_zones.conf', lines 1:0-1:38
  * type = "Zone"
  * zone = "master"

root@icinga2-primary:/usr/lib/nagios/plugins# icinga2 object list --type Endpoint

Object 'icinga2-secondary.*.de' of type 'Endpoint':
  % declared in '/etc/icinga2/zones.conf', lines 9:1-9:51
  * __name = "icinga2-secondary.*.de"
  * host = "192.168.179.13"
    % = modified in '/etc/icinga2/zones.conf', lines 10:2-10:24
  * log_duration = 86400
  * name = "icinga2-secondary.*.de"
  * package = "_etc"
  * port = "5665"
  * source_location
    * first_column = 1
    * first_line = 9
    * last_column = 51
    * last_line = 9
    * path = "/etc/icinga2/zones.conf"
  * templates = [ "icinga2-secondary.*.de" ]
    % = modified in '/etc/icinga2/zones.conf', lines 9:1-9:51
  * type = "Endpoint"
  * zone = ""

Object 'satellite.*.de' of type 'Endpoint':
  % declared in '/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_endpoints.conf', lines 1:0-1:42
  * __name = "satellite.*.de"
  * host = "192.168.179.16"
    % = modified in '/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_endpoints.conf', lines 2:5-2:27
  * log_duration = 0
    % = modified in '/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_endpoints.conf', lines 3:5-3:21
  * name = "satellite.*.de"
  * package = "director"
  * port = "5665"
  * source_location
    * first_column = 0
    * first_line = 1
    * last_column = 42
    * last_line = 1
    * path = "/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_endpoints.conf"
  * templates = [ "satellite.*.de" ]
    % = modified in '/var/lib/icinga2/api/packages/director/0ea8d93c-811d-4612-ad3f-e4f0c99f3728/zones.d/master/agent_endpoints.conf', lines 1:0-1:42
  * type = "Endpoint"
  * zone = "master"

Object 'icinga2-primary.*.de' of type 'Endpoint':
  % declared in '/etc/icinga2/zones.conf', lines 6:1-6:49
  * __name = "icinga2-primary.*.de"
  * host = ""
  * log_duration = 86400
  * name = "icinga2-primary.*.de"
  * package = "_etc"
  * port = "5665"
  * source_location
    * first_column = 1
    * first_line = 6
    * last_column = 49
    * last_line = 6
    * path = "/etc/icinga2/zones.conf"
  * templates = [ "icinga2-primary.*.de" ]
    % = modified in '/etc/icinga2/zones.conf', lines 6:1-6:49
  * type = "Endpoint"
  * zone = ""

Very likely you only configured our first master as command transport in Icinga Web 2. You can add the second one at ā€œConfiguration > Modules > monitoringā€ on the tab Backends. With both being configured it will try the first one and if not getting a proper status back will failover to the second one.

1 Like

Exactly what iĀ“m looking for.
Thank you again. :slight_smile: