Re: [Pacemaker] Unique clone instance is stopped too early on move

2015-04-13 Thread Andrew Beekhof

 On 22 Jan 2015, at 12:04 am, Vladislav Bogdanov bub...@hoster-ok.com wrote:
 
 20.01.2015 02:44, Andrew Beekhof wrote:
 
 On 16 Jan 2015, at 3:59 pm, Vladislav Bogdanov bub...@hoster-ok.com wrote:
 
 16.01.2015 07:44, Andrew Beekhof wrote:
 
 On 15 Jan 2015, at 3:11 pm, Vladislav Bogdanov bub...@hoster-ok.com 
 wrote:
 
 13.01.2015 11:32, Andrei Borzenkov wrote:
 On Tue, Jan 13, 2015 at 10:20 AM, Vladislav Bogdanov
 bub...@hoster-ok.com wrote:
 Hi Andrew, David, all.
 
 I found a little bit strange operation ordering during transition 
 execution.
 
 Could you please look at the following partial configuration (crmsh 
 syntax)?
 
 ===
 ...
 clone cl-broker broker \
 meta interleave=true target-role=Started
 clone cl-broker-vips broker-vips \
 meta clone-node-max=2 globally-unique=true interleave=true 
 resource-stickiness=0 target-role=Started
 clone cl-ctdb ctdb \
 meta interleave=true target-role=Started
 colocation broker-vips-with-broker inf: cl-broker-vips cl-broker
 colocation broker-with-ctdb inf: cl-broker cl-ctdb
 order broker-after-ctdb inf: cl-ctdb cl-broker
 order broker-vips-after-broker 0: cl-broker cl-broker-vips
 ...
 ===
 
 After I put one node to standby and then back to online, I see the 
 following transition (relevant excerpt):
 
 ===
  * Pseudo action:   cl-broker-vips_stop_0
  * Resource action: broker-vips:1   stop on c-pa-0
  * Pseudo action:   cl-broker-vips_stopped_0
  * Pseudo action:   cl-ctdb_start_0
  * Resource action: ctdbstart on c-pa-1
  * Pseudo action:   cl-ctdb_running_0
  * Pseudo action:   cl-broker_start_0
  * Resource action: ctdbmonitor=1 on c-pa-1
  * Resource action: broker  start on c-pa-1
  * Pseudo action:   cl-broker_running_0
  * Pseudo action:   cl-broker-vips_start_0
  * Resource action: broker  monitor=1 on c-pa-1
  * Resource action: broker-vips:1   start on c-pa-1
  * Pseudo action:   cl-broker-vips_running_0
  * Resource action: broker-vips:1   monitor=3 on c-pa-1
 ===
 
 What could be a reason to stop unique clone instance so early for move?
 
 
 Do not take it as definitive answer, but cl-broker-vips cannot run
 unless both other resources are started. So if you compute closure of
 all required transitions it looks rather logical. Having
 cl-broker-vips started while broker is still stopped would violate
 constraint.
 
 Problem is that broker-vips:1 is stopped on one (source) node 
 unnecessarily early.
 
 It looks to be moving from c-pa-0 to c-pa-1
 It might be unnecessarily early, but it is what you asked for... we have 
 to unwind the resource stack before we can build it up.
 
 Yes, I understand that it is valid, but could its stop be delayed until 
 cluster is in the state when all dependencies are satisfied to start it on 
 another node (like migration?)?
 
 No, because we have to unwind the resource stack before we can build it up.
 Doing anything else would be one of those things that is trivial for a human 
 to identify but rather complex for a computer.
 
 I believe there is also an issue with migration of clone instances.
 
 I modified pe-input to allow migration of cl-broker-vips (and also set inf 
 score for broker-vips-after-broker
 and make cl-broker-vips interleaved).
 Relevant part is:
 clone cl-broker broker \
meta interleave=true target-role=Started
 clone cl-broker-vips broker-vips \
meta clone-node-max=2 globally-unique=true interleave=true 
 allow-migrate=true resource-stickiness=0 target-role=Started
 clone cl-ctdb ctdb \
meta interleave=true target-role=Started
 colocation broker-vips-with-broker inf: cl-broker-vips cl-broker
 colocation broker-with-ctdb inf: cl-broker cl-ctdb
 order broker-after-ctdb inf: cl-ctdb cl-broker
 order broker-vips-after-broker inf: cl-broker cl-broker-vips
 
 After that (part of) transition is:
 
 * Resource action: broker-vips:1   migrate_to on c-pa-0
 * Pseudo action:   cl-broker-vips_stop_0
 * Resource action: broker-vips:1   migrate_from on c-pa-1
 * Resource action: broker-vips:1   stop on c-pa-0
 * Pseudo action:   cl-broker-vips_stopped_0
 * Pseudo action:   all_stopped
 * Pseudo action:   cl-ctdb_start_0
 * Resource action: ctdbstart on c-pa-1
 * Pseudo action:   cl-ctdb_running_0
 * Pseudo action:   cl-broker_start_0
 * Resource action: ctdbmonitor=1 on c-pa-1
 * Resource action: broker  start on c-pa-1
 * Pseudo action:   cl-broker_running_0
 * Pseudo action:   cl-broker-vips_start_0
 * Resource action: broker  monitor=1 on c-pa-1
 * Pseudo action:   broker-vips:1_start_0
 * Pseudo action:   cl-broker-vips_running_0
 * Resource action: broker-vips:1   monitor=3 on c-pa-1

Have you got the PE file for this?
I feel like we fixed something like this recently but I’d like to check it with 
your input.

 
 But, I would say that at least from a human logic PoV the above breaks 
 ordering rule broker-vips-after-broker
 (cl-broker-vips 

Re: [Pacemaker] Question about multiple instance_attributes

2015-04-13 Thread Andrei Borzenkov
On Mon, Apr 13, 2015 at 12:32 PM, Kazunori INOUE
kazunori.ino...@gmail.com wrote:
 2015-04-10 15:09 GMT+09:00 Andrei Borzenkov arvidj...@gmail.com:
 On Fri, Apr 10, 2015 at 8:22 AM, Kazunori INOUE
 kazunori.ino...@gmail.com wrote:
 Hi,

 I defined multiple instance_attributes [*].
  * 
 http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html/Pacemaker_Explained/_using_rules_to_control_resource_options.html
 Although it expected that start_opt=-p 5441 ... would be used on vm1
 and vm2, it wasn't so.

 # pacemakerd -F
 Pacemaker 1.1.12 (Build: 3e93bc1)

 # cibadmin -Q
 primitive id=prmPostgreSQLDB class=ocf provider=heartbeat
 type=pgsql
   instance_attributes id=prmPostgreSQLDB-instance_attributes
 rule score=3 boolean-op=or
 id=prmPostgreSQLDB-instance_attributes-rule
   expression attribute=#uname operation=eq value=vm1
 id=prmPostgreSQLDB-instance_attributes-rule-expression/
   expression attribute=#uname operation=eq value=vm2
 id=prmPostgreSQLDB-instance_attributes-rule-expression-0/
 /rule
 nvpair name=start_opt value=-p 5441 -h 192.168.201.140
 id=prmPostgreSQLDB-instance_attributes-start_opt/
 nvpair name=pgport value=5441
 id=prmPostgreSQLDB-instance_attributes-pgport/
   /instance_attributes
   instance_attributes id=prmPostgreSQLDB-instance_attributes-0
 nvpair name=start_opt value=-p 5449 -h 192.168.201.140
 id=prmPostgreSQLDB-instance_attributes-0-start_opt/
 nvpair name=pgport value=5449
 id=prmPostgreSQLDB-instance_attributes-0-pgport/
   (snip)

 # hostname
 vm1
 # ps -ax | grep postgres
 28591 ?S0:00 /usr/pgsql-9.4/bin/postgres (snip) -p 5449 -h
 192.168.201.140

 Is it a design that boolean-op of rule doesn't function?


 I suspect that your second rule is simply unconditionally applied
 because it does not have any rules to evaluate.

 That is, is 'boolean-op=or' invalid?


That's not what I said. Your second rule does not have any expressions
(sorry, I meant that) so it is always applied unconditionally.

___
Pacemaker mailing list: Pacemaker@oss.clusterlabs.org
http://oss.clusterlabs.org/mailman/listinfo/pacemaker

Project Home: http://www.clusterlabs.org
Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
Bugs: http://bugs.clusterlabs.org


Re: [Pacemaker] Question about multiple instance_attributes

2015-04-13 Thread Kazunori INOUE
2015-04-10 15:09 GMT+09:00 Andrei Borzenkov arvidj...@gmail.com:
 On Fri, Apr 10, 2015 at 8:22 AM, Kazunori INOUE
 kazunori.ino...@gmail.com wrote:
 Hi,

 I defined multiple instance_attributes [*].
  * 
 http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html/Pacemaker_Explained/_using_rules_to_control_resource_options.html
 Although it expected that start_opt=-p 5441 ... would be used on vm1
 and vm2, it wasn't so.

 # pacemakerd -F
 Pacemaker 1.1.12 (Build: 3e93bc1)

 # cibadmin -Q
 primitive id=prmPostgreSQLDB class=ocf provider=heartbeat
 type=pgsql
   instance_attributes id=prmPostgreSQLDB-instance_attributes
 rule score=3 boolean-op=or
 id=prmPostgreSQLDB-instance_attributes-rule
   expression attribute=#uname operation=eq value=vm1
 id=prmPostgreSQLDB-instance_attributes-rule-expression/
   expression attribute=#uname operation=eq value=vm2
 id=prmPostgreSQLDB-instance_attributes-rule-expression-0/
 /rule
 nvpair name=start_opt value=-p 5441 -h 192.168.201.140
 id=prmPostgreSQLDB-instance_attributes-start_opt/
 nvpair name=pgport value=5441
 id=prmPostgreSQLDB-instance_attributes-pgport/
   /instance_attributes
   instance_attributes id=prmPostgreSQLDB-instance_attributes-0
 nvpair name=start_opt value=-p 5449 -h 192.168.201.140
 id=prmPostgreSQLDB-instance_attributes-0-start_opt/
 nvpair name=pgport value=5449
 id=prmPostgreSQLDB-instance_attributes-0-pgport/
   (snip)

 # hostname
 vm1
 # ps -ax | grep postgres
 28591 ?S0:00 /usr/pgsql-9.4/bin/postgres (snip) -p 5449 -h
 192.168.201.140

 Is it a design that boolean-op of rule doesn't function?


 I suspect that your second rule is simply unconditionally applied
 because it does not have any rules to evaluate.

That is, is 'boolean-op=or' invalid?

 ___
 Pacemaker mailing list: Pacemaker@oss.clusterlabs.org
 http://oss.clusterlabs.org/mailman/listinfo/pacemaker

 Project Home: http://www.clusterlabs.org
 Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
 Bugs: http://bugs.clusterlabs.org

___
Pacemaker mailing list: Pacemaker@oss.clusterlabs.org
http://oss.clusterlabs.org/mailman/listinfo/pacemaker

Project Home: http://www.clusterlabs.org
Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
Bugs: http://bugs.clusterlabs.org