Missed HA instructions for Icinga 2.12rc

IcingaDB documentation https://icinga.com/docs/icingadb/latest/doc/03-Configuration/ doesn’t describe Hight Availability setup & configuration.

Could please someone provide me details of how data flows for the following components of Icinga 2.12rc:

  • Icinga2 core: feature icingadb
    Does it have enable_ha feature? I didn’t found any mention for this option in https://icinga.com/docs/icinga2/latest/doc/09-object-types/#icingadb
    What data flow we have for both masters? does both of them pushing data to redis at the same time or they have master/slave mechanisms to pause active writes?

  • Icinga-redis:
    Is that possible for multiple Icinga2 instances pushing in a single redis?
    Is it possible to connect redis-sentinel in front of redis-server for HA reasons?

  • IcingaDB:
    Is it possible for 2 instances writing in same MySQL database?
    IcingaDB looks like a standalone daemon, does it have any synchronisation mechanisms with secondary IcingaDB instance?

Hey @theFeu, congratulations with the new role :partying_face:
Could you please help me to find answers for the following questions?

With best regards,
Dmitriy.

Hello there :slight_smile:

We’re still working on the documentation, so thanks for pointing it out!

Looking into it right now and pushing it to the right channels :slight_smile:

Best wishes,
Feu

2 Likes

Thanks for the update, will be waiting for it :slight_smile:
Once i get HA configured i’ll start making stress tests for 2.12rc and publish some test results after it

With best regards,
Dmitriy.

2 Likes

Hi @Solkren,

setting up Icinga DB in HA mode is actually quite simple. Both masters need to have their own Redis and Icinga DB instances with both Icinga DB instances writing into the same MySQL instance. Both Icinga DB instances communicate their state via MySQL.

I hope that short explanation helps to get you started. Thank you for testing!

Cheers,
Noah

2 Likes

Hello @nhilverling thanks a lot for the clarification, i have additional question regarding the data flows in HA mode.

If we have HA masters, lets emulate situation when clients get connected with the following way:
master1 have: client1,client2,client3 clients connected
master2 have: client4,client5,client6 clients connected

master2 is secondary and it gets json-rpc messages with check results from client4,client5,client6:

  • will it push this data to local redis?
  • will it send json-rpc-relay messages e.g. sending check results from those clients directly to master1 through 5665 standard icinga2 port?
  • does icingadb instances sync back all data from the MySQL to the local Redis instances to keep them in sync?

With best regards,
Dmitriy

Hi @Solkren,

  • correct, all data is always pushed to the local Redis
  • yes, important messages, events and data is always synced between both masters
  • Icinga DB doesn’t need to sync that data back to Redis, because both masters have all data synced. They just write the same data into their local Redis.

Cheers,
Noah

2 Likes

Hi @nhilverling,

Thanks again for the clarification, and for the fast reply.

I appreciate all what Icinga team are doing :muscle:

With best regards,
Dmitriy

3 Likes

Hey @theFeu ,
what’s about a HA documentation for icingadbweb? The current docs only describe the HA setup for the icingadb. Making also the web frontend HA is still a tricky part. I am also interested, if it is possible to have a master-master setup, both with icingadb, icingadbweb, mysql installed and master-master replication for the mysql configured, like it was possible with the IDO backend and “enable_ha = true”, where only one endpoint actively writes stuff into the DB.

Cheers,
Marcus

To be honest with you I don’t really have the best overview what state this part of the docs is in: improving on that sounds like a good idea to me!

I’ll forward this to our dev team so they can evaluate! :slight_smile:

Have a lovely weekend!
Feu

1 Like