[ClusterLabs] Antw: Re: Antw: About globally unique resource instances distribution per node

Ulrich Windl Ulrich.Windl at rz.uni-regensburg.de
Mon Jan 11 02:44:46 EST 2016


>>> Daniel Hernández <danyboy1104 at gmail.com> schrieb am 30.12.2015 um 19:43 in
Nachricht
<CAMhkz_DVOvO=SOrCDKTqERFDwoVfAWDd6=WfHvggXLKCkksUwQ at mail.gmail.com>:
> On 12/30/15, Ulrich Windl <Ulrich.Windl at rz.uni-regensburg.de> wrote:
>> Hi!
>>
>> I would expect if you set the cpu utilization per primitive (used in
clone)
>> to
>> one and set the cpu capacity per node to the correct number that no node
has
>> more primitives than the cpu number allows and that primitives are
>> distributed
>> among all available nodes. Isn't that true in your case?
>>
>> What exactly does not work in your opinion?
>>
>> Regards,
>> Ulrich
>>
>>>>> Daniel Hernández <danyboy1104 at gmail.com> schrieb am 29.12.2015 um 16:21
>> in
>> Nachricht
>> <CAMhkz_BUEjidSkeJ7uJrTJ1v-vkA+s2YWR69PF6=gOwrOSFwUg at mail.gmail.com>:
>>> Good day, I work at Datys Soluciones Tecnológicas, we use Corosync and
>>> Pacemaker in production to run a service infrastructure since 3 years
>>> ago. Versions
>>> used are Centos 6.3, corosync 1.4.1 and pacemaker 1.1.7. We have a web
>>> server, gearman
>>> job manager, and globally unique resource clones as gearman workers to
>>> balance the load distributed by gearman. My question is if there exist
>>> a way or a workaround to configure globally unique resource clone
>>> number of instances to start per node. As example: Say have 3 nodes:
>>> node1, node2 and node3, and a globally unique resource clone of 6
>>> instances with name clone_example and want to start 1 instance on
>>> node1, 2 instances on node2 and 3 instances on node3, as the following
>>> example shows.
>>>
>>> Clone Set: clone_example [example] (unique)
>>>          example:0 (ocf:heartbeat:example): Started nodo3
>>>          example:1 (ocf:heartbeat:example): Started nodo2
>>>          example:2 (ocf:heartbeat:example): Started nodo2
>>>          example:3 (ocf:heartbeat:example): Started nodo1
>>>          example:4 (ocf:heartbeat:example): Started nodo3
>>>          example:5 (ocf:heartbeat:example): Started nodo3
>>>
>>> The reason we want to configure the resource this way is because one
>>> resource clone instance consume one node cpu, and the nodes have
>>> different number of cpu:
>>> node1 = 1cpu, node2 = 2cpu, node3 = 3cpu in the example.
>>>
>>> I read Pacemaker Cluster from Scratch and Cluster Configuration
>>> Explained to find a way and see Chapter 11. Utilization and Placement
>>> Strategy. I make a test with clones and resources but the clones where
>>> not distributed as I expected and some instances were not started, I
>>> used the 3 placement-strategies and similar behaviour. I know the
>>> cluster use a
>>> best effort algorithm to distribute the resources when this option is
>>> used, and maybe that's the reason, so I am searching for a way to do
>>> it. I browse the mailing list archives to see if there exist a similar
>>> post on this topic and couldn't find it, maybe I miss it. Any response
>>> will be appreciated.
>>> Thanks for your time
>>>
>>> _______________________________________________
>>> Users mailing list: Users at clusterlabs.org 
>>> http://clusterlabs.org/mailman/listinfo/users 
>>>
>>> Project Home: http://www.clusterlabs.org 
>>> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf 
>>> Bugs: http://bugs.clusterlabs.org 
>>
>>
>>
>>
>> _______________________________________________
>> Users mailing list: Users at clusterlabs.org 
>> http://clusterlabs.org/mailman/listinfo/users 
>>
>> Project Home: http://www.clusterlabs.org 
>> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf 
>> Bugs: http://bugs.clusterlabs.org 
>>
> 
> Hi Ulrich, thanks for your response. I take your sugestion and test my 
> example.
> I create a 3 node cluster with one dummy resource, use the following 
> commands.
> 
> crm configure primitive example1 ocf:heartbeat:Dummy \
> op monitor interval=30s
> 
> crm configure clone clone_example1 example1 \
> 	meta globally-unique="true" clone-max="6" clone-node-max="6"
> 
> 
> crm node utilization node1 set cpu 1
> crm node utilization node2 set cpu 2
> crm node utilization node3 set cpu 3
> crm resource utilization example1 set cpu 1
> crm configure property placement-strategy="balanced"
> 
> Online: [ node1 node2 node3 ]
> 
>  Clone Set: clone_example1 [example] (unique)
>      example1:0	(ocf::heartbeat:Dummy):	Started node1
>      example1:1	(ocf::heartbeat:Dummy):	Started node2
>      example1:2	(ocf::heartbeat:Dummy):	Started node3
>      example1:3	(ocf::heartbeat:Dummy):	Started node3
>      example1:4	(ocf::heartbeat:Dummy):	Started node2
>      example1:5	(ocf::heartbeat:Dummy):	Started node3
> 
> That work and was no expected by me, it work different on another
> scenario and is really why my question arrived.
> I tested an scenario in which I want to run 4 instances of resource
> example1 on node1, 3 instances on node2, 5 instances on node 3. The
> cpu capacity per node is, on node1 6, on node2 9, on node3 8, that
> because I will have other resources besides example1.
> 
> With the following cluster configuration:
> 
> crm node utilization node1 set cpu 6
> crm node utilization node2 set cpu 9
> crm node utilization node3 set cpu 8
> 
> crm resource meta clone_example1 set clone-max 12
> crm resource meta clone_example1 set clone-node-max 12
> 
> The result in the cluster is:
> Online: [ node1 node2 node3 ]
> 
>  Clone Set: clone_example1 [example1] (unique)
>      example1:0	(ocf::heartbeat:Dummy):	Started node3
>      example1:1	(ocf::heartbeat:Dummy):	Started node2
>      example1:2	(ocf::heartbeat:Dummy):	Started node3
>      example1:3	(ocf::heartbeat:Dummy):	Started node1
>      example1:4	(ocf::heartbeat:Dummy):	Started node2
>      example1:5	(ocf::heartbeat:Dummy):	Started node3
>      example1:6	(ocf::heartbeat:Dummy):	Started node2
>      example1:7	(ocf::heartbeat:Dummy):	Started node2
>      example1:8	(ocf::heartbeat:Dummy):	Started node1
>      example1:9	(ocf::heartbeat:Dummy):	Started node3
>      example1:10	(ocf::heartbeat:Dummy):	Started node2
>      example1:11	(ocf::heartbeat:Dummy):	Started node1
> 
> The cluster start 3 instances of example1 on node1 and not 4 as I
> want. That happen when I have more than 1 resource to allocate. I also
> notice that I am not setting the cluster to start 3 instances of
> example1 on node1, Is there any way to do it ?

Hi!

Sorry for the late reply, but if you want to prefer a node to get more
primitives that another, you could try to add a location constraint for those
nodes with most cpus. I haven't tried that, but that should work.

Regards,
Ulrich

> 
> _______________________________________________
> Users mailing list: Users at clusterlabs.org 
> http://clusterlabs.org/mailman/listinfo/users 
> 
> Project Home: http://www.clusterlabs.org 
> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf 
> Bugs: http://bugs.clusterlabs.org 







More information about the Users mailing list