-
Notifications
You must be signed in to change notification settings - Fork 586
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[dev.icinga.com #13255] Deprecate cluster/client mode "bottom up" w/ repository.d and node update-config #4798
Comments
Updated by mfriedrich on 2016-11-18 17:10:40 +00:00
|
Updated by mfriedrich on 2016-11-18 17:10:45 +00:00
|
Updated by mfriedrich on 2016-11-18 17:10:54 +00:00
|
Updated by mfriedrich on 2016-11-18 17:11:01 +00:00
|
Updated by mfriedrich on 2016-11-18 17:11:07 +00:00
|
Updated by mfriedrich on 2016-11-18 17:11:12 +00:00
|
Updated by mfriedrich on 2016-11-18 17:11:18 +00:00
|
Updated by mfriedrich on 2016-11-18 17:11:24 +00:00
|
Updated by mfriedrich on 2016-11-18 17:11:41 +00:00
|
Updated by mfriedrich on 2016-11-18 17:11:50 +00:00
|
Updated by mfriedrich on 2016-11-23 14:34:38 +00:00
|
Updated by mfriedrich on 2016-11-23 14:35:03 +00:00
Applied in changeset dc29924. |
Updated by mfriedrich on 2016-11-23 14:53:04 +00:00
|
Updated by mfriedrich on 2016-11-23 15:19:09 +00:00
|
Updated by mfriedrich on 2016-12-10 15:17:21 +00:00
|
Updated by gbeutner on 2016-12-13 07:28:19 +00:00
|
Updated by mfriedrich on 2017-01-14 13:06:42 +00:00
|
Updated by mfriedrich on 2017-01-14 13:08:09 +00:00
|
Updated by mfriedrich on 2017-01-14 13:08:47 +00:00
|
Updated by mfriedrich on 2017-01-14 13:09:02 +00:00
|
The link to the documentation in the Migration section seems dead. |
Yes, I found it without problems. I just thought that since this issue is the first hit on a Google search for "icinga2 migrate bottom up top down", someone might want to update the link in the description itself to actually point somewhere. |
The link is dead again. |
Upgrading docs holds the real correct URL, and should be used as the only source for that. |
I can't find this on https://www.icinga.com/docs/icinga2/latest/doc/06-distributed-monitoring/ actually. Even google only find this issues when searching for "icinga2 migrate bottom up top down". |
Inside the upgrade documentation to v2.8 you can find the link: https://www.icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/#removed-bottom-up-client-mode Bottom Up Migration to Top Down: |
@waja it has been there within the deprecation period since 2.6. 2.7 still had it, but 2.8 entirely removed it. I don't see any reason to document features in a chapter if it does not exist. "upgrading Icinga 2" is the only source which helps you with upgrades. |
@dnsmichi That's true. But for people being late (like I'm) and not upgrading every release (don't ask why) and not following closely your development, this is a challenge. |
Edited the 1st post. |
Upgrade and Migration
Inside the upgrade documentation to v2.8 you can find the link: https://www.icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/#removed-bottom-up-client-mode
Bottom Up Migration to Top Down:
https://github.com/Icinga/icinga2/blob/v2.7.0/doc/06-distributed-monitoring.md#bottom-up-migration-to-top-down-
#4798 (comment)
Original Issue
This issue has been migrated from Redmine: https://dev.icinga.com/issues/13255
Created by mfriedrich on 2016-11-18 17:08:40 +00:00
Assignee: mfriedrich
Status: Resolved (closed on 2016-11-23 14:35:03 +00:00)
Target Version: 2.6.0
Last Update: 2016-12-13 07:28:19 +00:00 (in Redmine)
This isn't a short term decision but has been discussed for many months now. This issue is a working task to
Deprecation and removal
v2.6 will add a deprecation warning.
After that we are planning to support the feature for at least one year, or two major versions in 2017. This early announcement and the final EOL should provide enough time for anyone taking care of possible changes.
Note: Removing the bottom-up synchronisation will not disable the cluster communication between client and master nodes. Client nodes will still attempt to send new check results to master nodes, and they accept such if the config objects exist (generated with node update-config before). Removal of node update-config and the repository just disables the built-in bottom up object sync.
That way Icinga 2 will continue to run and monitor your environment. You are still advised to migrate to one of the "top down" modes.
A short summary of why and what
Things in Icinga 2 should be simple to start with. You don't need configuration tricks, there should be just one way to make it right.
When we designed and implemented the first client setup more than two years ago, the bottom up method sounded reasonable. You'll install the icinga2 package on the client, have the example configuration in conf.d/ already. The user is able to extend that information. Syncing that information to the parent node was more or less syncing a list of objects available on the client to the master.
Community and team members agreed on this mode during design and implementation in early 2014. The months were approaching the v2.2 release. It hasn't been easy filling all the requirements whilst putting a lot of workhours into actually being able to release at that fixed date in late 2014. We were trying to get v2.2 into Debian Jessie stable but that didn't work out.
At some point the bottom up approach wasn't enough. In the late stages of preparing the v2.2 package a simple "execute a check command at another endpoint" was demanded. That was the time when an unplanned feature called "command endpoint" was designed in a short amount of time and also getting integrated into the v2.2 release.
Looking back the design for an agent/client did not work out well. We have 2 different modes, and in addition to that the cluster config sync can be used too. So actually there are 3 different methods (config sync, command endpoint, node update-config). You can even combine config sync and command endpoint, to get the best out of it. The latter is common best practice from customer setups and community environments. We learned that while supporting our colleagues and fellow community members.
One problem which also came up - the documentation was targeting the "bottom up" approach in the first place. It described the client setup using cli commands. In addition to that we had the entire "cluster" chapter which described the cluster config sync, HA capabilities and even more. All in all, the documentation was a confusing mess. Users who started with the icinga 2 client just read the first chapter ("bottom up") and then ran into many of the current unresolved issues.
It just wasn't clear that you can use a different mode. Putting that into a documentation chapter isn't easy after all. For v2.5 we decided to entirely purge the existing documentation on the client and cluster setup and configuration and rewrote them from scratch. Changing the preferred mode priority, and also adding more details including pictures. The scenarios which are described in the documentation are coming from actual production environments and have proven themselves.
Though fixing the documentation again made it clear - it is overly complicated to understand the configuration modes, apart from some other configuration tasks (zones, endpoints, and such).
Common problems with "bottom up"
Another problem is the asynchronous repository sync bottom up - after the Puppet agent deployed the configuration, it cannot trigger a "node update-config" run on the master immediately (it must wait a while). Turns out, our managed service team tried to implement it that way and finally gave up on that. Lessons learned the hard way. And even though - others kept adding a cronjob in addition to config management to sort of automate the config updates pulled from the client.
Generally speaking it causes more problems and bugs whilst not fitting into the Icinga stack with a central master with Icinga Web 2, Icinga 2 API and Icinga Director. From a future maintainer perspective we're focussing on one solution.
Migration
Hint: More details are updated in the documentation: https://docs.icinga.com/icinga2/snapshot/doc/module/icinga2/toc\#!/icinga2/snapshot/doc/module/icinga2/chapter/distributed-monitoring#distributed-monitoring-bottom-up-migration-top-down
The bottom up mode generates configuration on the master. This import depends on user interaction, so unless you are changing something on the client, the configuration files in "repository.d" remain untouched.
"repository.d" is organised as a tree of object types, which you can easily extract.
A best practice strategy:
Command Endpoint Execution
Once done, you also need to define the command_endpoint. The easiest way is using the existing naming schema generated from repository.d
Note: If you are using your own local custom commands you need to manually copy them to the master node. Therefore create a global zone and put the commands.conf underneath zones.d/. Ensure that all clients have the global zone configured - and "conf.d" is disabled in the icinga2.conf file.
Configuration Sync
This is a bit more tricky as you need to exclude "conf.d" from all your clients icinga2.conf config file and then restart them. This will "flush" the client objects and allow the master to synchronise the same configuration objects.
Note: Use this mode only if you are planning to use your clients as satellites with local check execution and replay log on connection loss. For simple migration, you should prefer the command execution mode.
On the client:
Then proceed:
If you prefer to identify common service objects, leave them out and a) configure a global template zone b) put all service apply rules into this global template zone. Note: The client must have the global zone configured.
Changesets
2016-11-23 14:33:28 +00:00 by mfriedrich dc29924
Relations:
The text was updated successfully, but these errors were encountered: