-
Notifications
You must be signed in to change notification settings - Fork 807
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
Allow disabling of ring heartbeats by setting relevant options to zero. #4344
Allow disabling of ring heartbeats by setting relevant options to zero. #4344
Conversation
ec7bb89
to
2b238af
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The solution you've picked should work.
Initially, I thought that we should not set Timestamp when the instance is registered in the ring and we should not update it when an InstanceDesc is updated, but then I've realised memberlist actually requires that Timestamp change each time we do update InstanceDesc so we have to keep all that logic and just disabled the hearbeating part.
However, I would update the ring web page to clearly state when heartbeating is disabled.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM;
+1 to Marco's suggestion on including the heartbeat value / disabled on the ring info page.
Not related to this change, but why is there so much duplication of ring config now?
I had the same worry that memberlist relies on the Timestamp to resolve conflicts but it looks that the Timestamp is updated whenever the ring state is updated (example). This makes sense as in my testing with very long heartbeats, I didn't encounter any issues. Will update the status page |
It doesn't seem trivial to add the heartbeat period to the status page, as the configuration actually exists in the lifecycler :/ Any suggestions? |
The easiest (but probably) hackiest one is to add the heartbeat period to |
Can't speak to the history but I agree there is a lot of duplication? |
I'm the guilty one. Long time ago (when we built the blocks storage) we duplicated (once) the ring config to slim it down. The |
Signed-off-by: Steve Simpson <steve.simpson@grafana.com>
Signed-off-by: Steve Simpson <steve.simpson@grafana.com>
380233c
to
010ff2f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The improvement to the HTTP ring page can be done in a follow up PR.
I'd love to learn more about the motivation behind this PR (and #4342). I couldn't find much docs on this feature. Does this improve availability by ignoring heartbeat failures? |
Updating a KV store every few seconds is difficult to scale past 100-200 ingesters. Some of the story is here: https://grafana.com/blog/2020/02/11/how-were-abusing-hashicorps-consul-at-grafana-labs/ |
…o. (cortexproject#4344) * Allow disabling of ring heartbeats by setting relevant options to zero. Signed-off-by: Steve Simpson <steve.simpson@grafana.com> * Review comments. Signed-off-by: Steve Simpson <steve.simpson@grafana.com> Signed-off-by: Alvin Lin <alvinlin@amazon.com>
What this PR does:
Allow disabling of ring heartbeats by setting relevant options to zero.
Depends on #4342
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]