I'm trying to figure out a way to assign weights to a group of servers (a galera cluster of database servers), and I want to always be able to compute a quorum, meaning no set of weights should ever be allowed to add up to exactly 50% (a quorum in this case means over 50%).
Is there a mathematical formula to generate a set of (probably unique) numbers so that you can never sum any subset of those numbers to equal any subset of the remaining numbers? Additionally, no individual number should be double or more than double of any other number.
For example, with [3, 4, 5], there is no way to take any set of 1, 2, or 3 of those to add up to be equal to any subset of remaining numbers. There will always be an inequality, so a quorum can be computed (or it can be determined that no quorum is available, in the case where too many servers are disconnected from each other).
I understand this is a problem relating to server administration, but it seems to be of a mathematical nature.
What I'd like to be able to do is assign individual weights to a initial pool of servers, but ideally be able to generate another weight if another server gets added to the pool in the future.
The practical application is that all servers know their own weight, and they know the total weight of all servers. If a server suddenly dies, or connectivity fails between a few of them, the servers try to determine if they have a quorum. Each server that can still communicate with another will add up their weights, and if the total of their weights is more than exactly 50% of the initial set's total, then there is a quorum, and those servers will declare themselves to be the new canonical group. If they fail to get over 50%, they don't have a quorum and will declare themselves to be offline or otherwise unable to continue service.