Bug 970657
Summary: | Failover and/or relocation of qpidd-primary service should be limited to ready brokers only | ||
---|---|---|---|
Product: | Red Hat Enterprise MRG | Reporter: | Pavel Moravec <pmoravec> |
Component: | qpid-cpp | Assignee: | messaging-bugs <messaging-bugs> |
Status: | NEW --- | QA Contact: | Messaging QE <messaging-qe-bugs> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | Development | CC: | jross |
Target Milestone: | --- | Keywords: | Improvement |
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Enhancement | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | Type: | Bug | |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Pavel Moravec
2013-06-04 14:00:53 UTC
Background for non-qpid people: active-passive clustering in qpid uses clusterHA as follows: - Having (usually 3node) cluster with no shared disks, running 3 identical copies of qpid broker one on each node (i.e. in restricted failover domains of one node each). This service is "base service". - Having "primary service" that optionally keeps VIP and promotes the broker on the node where it runs as "primary", i.e. the active. Other qpid brokers are passive. - When a new "base service" / qpid broker is starting, it needs some time to catchup / align with the primary broker. Within this time, it can't be promoted as primary (such promotion fails). - Primary service has failover domain over the whole cluster - any node can run it, but there can be just one primary broker at any time. - Without primary service running (resp. without a broker successfully promoted as primary), co client can connect to whole qpid cluster. So losing primary serrvice forever is a big pain. Brokers in catchup or joining will refuse promotion, the idea is that rgmanager will try to promote all the brokers till it finds the ready one. The problem with an ordered domain appears to be that rgmanager tries to relocate qpidd-primary as soon as the top-priority node comes online, in two steps: 1. stop the current primary qpidd. 2. start and promote qpidd on top priority host. Now 2. will almost certainly fail because qpidd wont have time to get to a ready state before the attempt to promote. As a result of 1. we've also killed a potential backup and reset it to joining, so if there's any problem with the third broker it is game over. A workaround would be to set nofailback on the ordered domain: https://fedorahosted.org/cluster/wiki/FailoverDomains. We should document that as a requirement for now that we only support ordered domains with nofailback. We can improve things a bit by allow primary brokers to be "demoted". If we deliberately stop the primary, not due to a failure (like rgmanager trying to relocate a service) then that broker should switch into a backup role but keeping all its queues and messages intact. That still won't solve the failback problem though. To do that we need a way to delay relocating the primary from a lower-priority node until the broker on the higher-priorty node has completed its and us ready to take over. I'm not aware of a way to do this in rgmanager. > A workaround would be to set nofailback on the ordered domain: > https://fedorahosted.org/cluster/wiki/FailoverDomains. > We should document that as a requirement for now that we only support > ordered domains with nofailback. bz971368 created for documentation changes that must be in Vienna release. As I found another configuration gotcha not covered here (primary service having recovery="restart"). |