Re: [RFC] quorum module configuration bits

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/10/2012 03:08 AM, Fabio M. Di Nitto wrote:
> Hi all,
> 
> in some recent discussions, it come up the issue on how to configure
> quorum module. As I don´t really have a complete solution yet, I need to
> seek advice in the community :)
> 
> Problem:
> 
> it would be very nice if corosync.conf could be simply scp´ed/copied
> between nodes and everything works as expected on all nodes.
> Issue being that some quorum bits are, at this point in time, node
> specific. It means that to alter some values, it is necessary to edit
> corosync.conf on the specific node.
> On top of that, it would be nice if expected_votes could be
> automatically calculated based on votes: values.
> 
> The current quorum configuration (based on topic-quorum patches):
> 
> quorum {
>     provider: corosync_votequorum
>     expected_votes: 8
>     votes: 1
>     two_node: 0
>     wait_for_all: 0
>     last_man_standing: 0
>     auto_tie_breaker: 0
> }
> 
> totem {
>     nodeid: xxx
> }
> 
> The 2 values that cannot be copied around are quorum.votes and totem.nodeid.
> 
> In current votequorum/totem incarnation, votes/expected_votes/nodeid are
> all broadcasted to all nodes. so each node that joins the cluster
> becomes aware of the other peers values.
> 
> As a consequence of the current config format, auto_tie_breaker feature,
> requires wait_for_all to work (in order to have the complete list of
> nodeids, see auto_tie_breaker implementation in topic-quorum branch for
> details).
> 
> Honza and I quickly explored options to add those values into the node
> list of udpu, but that´s limiting because it doesn´t work well in
> multicast and/or broadcast and it has integration issues with RRP.
> 
> Also adding lists to quorum {} involves a certain level of duplicated
> information.
> 
> For example:
> 
> quorum {
>    nodeid_list: x y z...
>    node.x.votes: ..
>    node.y.votes: ..
> }
> 
> that IMHO is all but nice to look at.
> 
> So the question of changing the config format also raise the following
> questions:
> 
> 1) do we really need to support an auto_tie_breaker feature without
> wait_for_all? if NO, then we don´t need the list of nodeids upfront.
> 
> 2) do we really care about votes other than 1? If NO, then votes: can
> simply be dropped from corosync.conf defaults, and in case an override
> is necessary, it can be done specific to the node. This solution poses
> the problem that expected_votes need to be set in corosync.conf (one
> liner in the config file vs different liners) but it might be slightly
> more tricky to calculate if votes are not balanced.
> 
> Please let me know your opinions and we need to come down to an
> agreement rather soon, since this might be a blocker for corosync 2.0
> release.
> 

My suggestion is detailed and has detailed requirements, so please read
through and see if this meets the interested parties needs.

nodelist {
	node X {
		ring0_interface: 192.168.1.1
		ring1_interface: 192.168.2.1
		nodeid: 1
		quorum_votes: 1
	}
	node Y {
		ring0_interface: 192.168.1.2
		ring1_interface: 192.168.2.2
		nodeid: 2
		quorum_votes: 2
	}
}

+ nodelist is optional (mandatory when using quorum or UDPU
+ X is just a name which doesn't use the resolver but could be the DNS
name of the machine
+ nodeid is the node identifier of the containing node.
+ nodeid is mandatory for IPV6 networks, optional for IPV4 networks
+ nodeid will be autogenerated from the ip address if not specified
+ quorum_votes is mandatory if a quorum stanza is defined, otherwise ignored

quorum {
     provider: corosync_votequorum
     two_node: 0
     wait_for_all: 0
     last_man_standing: 0
     auto_tie_breaker: 0
}

+ expected_votes is removed and instead auto-calculated based upon
quorum_votes in the node list
+ votes is moved to the individual node list

totem {
}


node id being set with node list defined prints a warning that node id
in totem stanza is deprecated and ignored.
if transport: udpu is specified without the node list stanza, the
configuration is rejected printing a warning that the node list must be
specified to operate in udpu mode
if the udpu member stanzas are specified, the configuration is printing
a warning that the udpu member stanza has changed

logging {
}
remains unchanged

remove service section entirely
if service section is parsed, print warning that service section is
deprecated and ignored

What we get:
+ full ability to copy 1 configuration file to all nodes assuming they
are in the same subnet with the same interface netmasks
+ node list specified in one place
+ If expected votes is needed, it can be calculated from the node list
rather then hard specified
+ old configuration files will work as they always have (with exception
of transport: udpu), but not well with quorum.  This isn't a problem
because likely people are not using quorum already.
+ When totem determines its IP address via binding, it can then lookup
the node id in the node list (if its defined, or autogenerate)

What we lose:
Configurations with the UDPU stanza will need to be modified before
upgrading the software

Assuming folks agree on the general principles, We can slip the current
schedule 1 week up to RC4.  RC5 would be removed from the schedule and
the end release date (3/13) remains the same assuming no problems during
the RC process.

Regards
-steve


> Thanks
> Fabio
> _______________________________________________
> discuss mailing list
> discuss@xxxxxxxxxxxx
> http://lists.corosync.org/mailman/listinfo/discuss

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss



[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux