[ClusterLabs] manner in which cluster migrates VirtualDomain - ?
lejeczek
peljasz at yahoo.co.uk
Wed Apr 19 13:32:35 EDT 2023
On 19/04/2023 16:16, Ken Gaillot wrote:
> On Wed, 2023-04-19 at 08:00 +0200, lejeczek via Users wrote:
>> On 18/04/2023 21:02, Ken Gaillot wrote:
>>> On Tue, 2023-04-18 at 19:36 +0200, lejeczek via Users wrote:
>>>> On 18/04/2023 18:22, Ken Gaillot wrote:
>>>>> On Tue, 2023-04-18 at 14:58 +0200, lejeczek via Users wrote:
>>>>>> Hi guys.
>>>>>>
>>>>>> When it's done by the cluster itself, eg. a node goes
>>>>>> 'standby' -
>>>>>> how
>>>>>> do clusters migrate VirtualDomain resources?
>>>>> 1. Call resource agent migrate_to action on original node
>>>>> 2. Call resource agent migrate_from action on new node
>>>>> 3. Call resource agent stop action on original node
>>>>>
>>>>>> Do users have any control over it and if so then how?
>>>>> The allow-migrate resource meta-attribute (true/false)
>>>>>
>>>>>> I'd imagine there must be some docs - I failed to find
>>>>> It's sort of scattered throughout Pacemaker Explained -- the
>>>>> main
>>>>> one
>>>>> is:
>>>>>
>>>>> https://clusterlabs.org/pacemaker/doc/2.1/Pacemaker_Explained/html/advanced-options.html#migrating-resources
>>>>>
>>>>>> Especially in large deployments one obvious question would be
>>>>>> -
>>>>>> I'm
>>>>>> guessing as my setup is rather SOHO - can VMs migrate in
>>>>>> sequence
>>>>>> or
>>>>>> it is(always?) a kind of 'swarm' migration?
>>>>> The migration-limit cluster property specifies how many live
>>>>> migrations
>>>>> may be initiated at once (the default of -1 means unlimited).
>>>> But if this is cluster property - unless I got it wrong,
>>>> hopefully - then this govern any/all resources.
>>>> If so, can such a limit be rounded down to RA type or
>>>> perhaps group of resources?
>>>>
>>>> many thanks, L.
>>> No, it's global
>> To me it feels so intuitive, so natural & obvious that I
>> will ask - nobody yet suggested that such feature be
>> available to smaller divisions of cluster independently of
>> global rule?
>> In the vastness of resource types many are polar opposites
>> and to treat them all the same?
>> Would be great to have some way to tell cluster to run
>> different migration/relocation limits on for eg.
>> compute-heavy resources VS light-weight ones - where to
>> "file" such a enhancement suggestion, Bugzilla?
>>
>> many thanks, L.
> Looking at the code, I see it's a little different than I originally
> thought.
>
> First, I overlooked that it's correctly documented as a per-node limit
> rather than a cluster-wide limit.
>
> That highlights the complexity of allowing different values for
> different resources; if rscA has a migration limit of 2, and rscB has a
> migration limit of 5, do we allow up to 2 rscA migrations and 5 rscB
> migrations simultaneously, or do we weight them relative to each other
> so the total capacity is still constrained (for example limiting it to
> 1 rscA migration and 2 rscB migrations together)?
My first thoughts were - I cannot comment on the code, only
inasmuch as an admin would care - perhaps to introduce, if
would not require business logic total overhaul, "migration
groups"(while not being another resource type) whose such
groups then a resource could be member.
Or perhaps marry 'migration-limit' to 'resource group' which
would take priority over global/node-wide rule.
One way or another, simple to end-users - then user/admin
sets N-limit of resources which in such group can be
live-migrated at one time, say...
in this-given-group only 2 resources can cluster attempt to
live-migrate simultaneously, then wait for success or
failure but wait for result and only then proceed to next & ...
>
> We would almost need something like the node utilization feature, being
> able to define a node's total migration capacity and then how much of
> that capacity is taken up by the migration of a specific resource. That
> seems overcomplicated to me, especially since there aren't that many
> resource types that support live migration.
Those types which do support live migration and are
compute-heavy, then I really wonder how large consumers do
VirtualDomain migration, as one good example.
Say a Virtual/Cloud provides - there a chunky host node
might host hundreds VMs - there, but anywhere else timeouts,
all/any, must be some real, fixed number.
As of right now, how intuitive is what cluster does when it
swarms - say equally - those hundreds of VMs to
remaining-available nodes...
... even with fast inner-node connectivity many - without
migration-limit - live-migrations will timeout.
Is cluster capable of some very clever heuristics so humans
could leave it to the machine to ensure that such
mass-migration will not fail simply due to overall
bottleneck of the underlying infrastructure?
... and could the cluster alone do that? Would not
VirtualDomain agent have to gather comprehensive metric data
on each VM in the first place, to feed it to the cluster
internal logic..?
I would see some way similar to these which I mentioned
above, as relatively effective and surely down-to-earth,
practical aid to alleviate cases such as VMs "mass-migration".
>
> Second, any actions on a Pacemaker Remote node count toward the
> throttling limit of its connection host, and aren't checked for
> migration-limit at all. That's an interesting design choice, and it's
> not clear what the ideal would be. For a VM or container, it kind of
> makes sense to count against the host's throttling. For a remote node,
> not so much. And I'm guessing not checking migration-limit in this case
> is an oversight.
More information about the Users
mailing list