Re: [Openais] Corosync 1.2.8 totem membership behaviour

2010-10-22 Thread Steven Dake
On 10/21/2010 09:33 PM, Ranjith wrote:
 Hi Steve,

 Any views on the above?


 Rgds,
 Ranjith



 On Wed, Oct 6, 2010 at 10:41 AM, Ranjith ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com wrote:

 Hi Steve,

 Pls check the below (Pls correct me if I am wrong at any point):

 A (block all packets from src C)
 B
 C (block all packets from src A)

 Nodes
 A,B,C
 1) A sends join (multicast)
 2) Only B receives. (C drops it because of ACL)
 3) B sends join (multicast) (with A,B)

 4) A,C receive join
 5) C sends join (with A,B,C) / A also sends join (with A, B, C)
 6) Only B receives the above

 7) B sends join (with A,B,C)
 8) A, C sends join (with A,B,C)
 9) B gets consenus from all,   A waits for consensus from C
 ,   C waits for consensus from A
 10) A has smallest id , it has to generate the commit token
 but it is waiting for consensus from C

 11)  Consensus timeout fires for C at A (taking one
 particular sequence of events)
 12)  A sends join with (A, B, C / failset C)

 There are two cases from this point here:

 Note: There is deviation in Corosync 1.2.8 totem code in
 comparison to standard totem (Totem Paper). (Pls refer to
 memb_join_process())
 In the corosync 1.2.8 totem code, the fail set will be updated
 only if the join message comes from a node which is known to
 this node earlier from a previous ring (my_memb_list).

 Case 1: B knows A earlier and A is there in B 's my_memb_list
 (due to the previous ring)

 13)  B receives the join
 14)  B sends join with (A, B, C/ failset C)
 15)  A, C receives the join
 16)  A gets conensus and creates commit token.Ring gets
 formed btw A and B
 17) When C receives B 's join, C adds B to its failset. C
 sends join with (A, B, C, failset B)
 18) B ignores the above join (protocol)
 19) Consensus timeout for A fires at C. C forms 1 node ring
 20) Now both ring (A, B) and ring (C) goes to operational state
 21) Now in Ring (A, B), a Normal message is multicast.
 22) Now when C receives this message, it treats it a foreign
 message and again send join with (A, B). Again all nodes goes to
 membership
 23) This keeps on happening


 Case 2: B does not know A earlier and A is not there in B 's
 my_memb_list

  In this case, since none of the nodes know each other
 previously, all the nodes form 1 node cluster and goes to
 operational state (My expectation was that a 2-node cluster
 should be formed)


Your analysis of the protocol is correct.  We added the additional logic 
based upon Deb Agarwal's PHD work:

http://www.google.com/url?sa=tsource=webcd=4sqi=2ved=0CCQQFjADurl=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.52.4028%26rep%3Drep1%26type%3Dpdfrct=jq=a%20dissertation%20univesity%20of%20california%20deb%20agawalei=FQjCTPmDMd3NjAfX-b1Ousg=AFQjCNFV0qXbKD_EcaTHhhIzU8bSA7rgmwcad=rja



 Regards,
 Ranjith


 On Tue, Oct 5, 2010 at 11:46 PM, Steven Dake sd...@redhat.com
 mailto:sd...@redhat.com wrote:

 On 10/05/2010 02:29 AM, Ranjith wrote:

 Hi Steve,

 Please comment on the below.


 Regards,
 Ranjith


 On Fri, Oct 1, 2010 at 12:04 AM, Ranjith
 ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com wrote:

 Hi steve,

 Network is like this:
 A (block all packets from src C)
 B
 C (block all packets from src A)



 Nodes
 A,B,C
 A sends join (multicast)
 Only B receives. (C drops it because of ACL)
 B sends join (multicast) (with A,B)

 A,C receive join
 C sends join (with A,B,C)
 Only B receives the above

 B sends join (with A,B,C)
 A, C sends join (with A,B,C)
 B gets consensus but suppose A is the smallest Id

 But A never gets consensus as A cannot get join from C


 This is not exactly how the algorithm works.  I recommend
 reading the totem specification if you want the details.
   After you have read the specification, we can go through
 an 

Re: [Openais] Corosync 1.2.8 totem membership behaviour

2010-09-30 Thread Steven Dake
On 09/30/2010 03:47 AM, Ranjith wrote:
 Hi all,

 Kindly let know whether corosync considers the below network as
 byzantine failure i.e the case where N1 and N3 does not have connectivity?
 I am testing such scenarios as i believe such a behaviour can happen due
 to some misbehaviour in switch (stale arp entries).



What makes the fault byzantine is that only incoming packets are 
blocked.  If you block both incoming and outgoing packets on the nodes, 
the fault is not byzantine and totem will behave properly.

Regards
-steve

 Regards,
 Ranjith

 Untitled.png
 On Sat, Sep 25, 2010 at 9:47 AM, Ranjith ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com wrote:

 Hi Steve,
 Just to make it clear. Do you mean that in the above case If N3 is
 part of the network, it should have connectivity to both N2 and N1
 and if it happens so
 that N3 has connectivity to N2 only, corosync doesnot take care of
 the same.
 Regards,
 Ranjith
 On Sat, Sep 25, 2010 at 9:39 AM, Steven Dake sd...@redhat.com
 mailto:sd...@redhat.com wrote:

 On 09/24/2010 08:20 PM, Ranjith wrote:

 Hi ,
 It is hard to tell what is happening without logs from all 3
 nodes. Does
 this only happen at system start, or can you duplicate 5
 minutes after
 systems have started?

   The cluster is never stabilizing. It keeps on
 switching between the

 membership and operational state.
 Below is the test network which i am using:

 Untitled.png

   N1 and N3 does not reveive any packets from each
 other. Here what i

 expected was that either (N1,N2) or (N2, N3) forms a two
 node cluster
 and stabilizes. But the cluster is never stabilizing even
 though 2 node
 clusters are forming, it is going back to membership [I
 checked the logs
 and it looks like because of the steps i mentioned in the
 previous mail,
 this seems to be happening]



 ..  Where did you say you were testing a byzantine fault in
 your original bug report?  Please be more forthcoming in the
 future. Corosync does not protect against byzantine faults.
   Allowing one way connectivity in network connection = this
 fault scenario.  You can try coro-netctl (the attached script)
 which will atomically block a network ip in the network to test
 split brain scenarios without actually pulling network cables.

 Regards
 -steve


 Regards,
 Ranjith
 On Fri, Sep 24, 2010 at 11:36 PM, Steven Dake
 sd...@redhat.com mailto:sd...@redhat.com
 mailto:sd...@redhat.com mailto:sd...@redhat.com wrote:

 It is hard to tell what is happening without logs from
 all 3 nodes.
 Does this only happen at system start, or can you
 duplicate 5
 minutes after systems have started?

 If it is at system start, you may need to enable fast
 STP on your
 switch.  It looks to me like node 3 gets some messages
 through but
 then is blocked.  STP will do this in it's default state
 on most
 switches.

 Another option if you can't enable STP is to use
 broadcast mode (man
 openais.conf for details).

 Also verify firewalls are properly configured on all
 nodes.  You can
 join us on the irc server freenode on #linux-cluster for
 real-time
 assistance.

 Regards
 -steve


 On 09/22/2010 11:33 PM, Ranjith wrote:

 Hi Steve,
   I am running corosync 1.2.8
   I didn't get what u meant by blackbox. I suppose it is
 logs/debugs.
   I just checked logs/debugs and I am able to
 understand the below:

 1--2--3
 1) Node1 and Node2 are already in a 2node cluster
 2) Now Node3 sends join with ({1} , {} )
 (proc_list/fail_list)
 3) Node2 sends join ({1,2,3} , {}) and Node 1/3
 updates to
 ({1,2,3}, {})
 4) Now Node 2 gets consensus after some messages
 [But 1 is the rep]
 5) Consensus timeout fires at node 1 for node 3,
 node1 sends join as
 ({1,2}, {3})
 6) Node2 updates because of the above message to
 ({1,2}, {3})
 and sends
 out join. This 

Re: [Openais] Corosync 1.2.8 totem membership behaviour

2010-09-30 Thread Steven Dake
On 09/30/2010 10:40 AM, Ranjith wrote:
 Hi Steve,

 I believe you mean to say that the same acl rules should be applied in
 the outgoing side also.
 But since here the nodes are not receiving any packet (both multicast
 and unicast) from the other, i believe it will also not send to the
 otherIs that right?



That assumption is incorrect.  Example:

Nodes
A,B,C
A sends join (multicast)
B,C receive join
B sends join (multicast)
A,C receive join
C sends join (with A,B,C)
now A rejects that message.

As a result, the nodes can never come to consensus.

Regards
-steve

 Regards,
 Ranjith

 On Thu, Sep 30, 2010 at 10:41 PM, Steven Dake sd...@redhat.com
 mailto:sd...@redhat.com wrote:

 On 09/30/2010 03:47 AM, Ranjith wrote:

 Hi all,

 Kindly let know whether corosync considers the below network as
 byzantine failure i.e the case where N1 and N3 does not have
 connectivity?
 I am testing such scenarios as i believe such a behaviour can
 happen due
 to some misbehaviour in switch (stale arp entries).



 What makes the fault byzantine is that only incoming packets are
 blocked.  If you block both incoming and outgoing packets on the
 nodes, the fault is not byzantine and totem will behave properly.

 Regards
 -steve

 Regards,
 Ranjith


 Untitled.png
 On Sat, Sep 25, 2010 at 9:47 AM, Ranjith
 ranjith.nath...@gmail.com mailto:ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com wrote:

 Hi Steve,
 Just to make it clear. Do you mean that in the above case If
 N3 is
 part of the network, it should have connectivity to both N2
 and N1
 and if it happens so
 that N3 has connectivity to N2 only, corosync doesnot take
 care of
 the same.
 Regards,
 Ranjith
 On Sat, Sep 25, 2010 at 9:39 AM, Steven Dake
 sd...@redhat.com mailto:sd...@redhat.com
 mailto:sd...@redhat.com mailto:sd...@redhat.com wrote:

 On 09/24/2010 08:20 PM, Ranjith wrote:

 Hi ,
 It is hard to tell what is happening without logs
 from all 3
 nodes. Does
 this only happen at system start, or can you duplicate 5
 minutes after
 systems have started?

   The cluster is never stabilizing. It keeps on
 switching between the

 membership and operational state.
 Below is the test network which i am using:

 Untitled.png

   N1 and N3 does not reveive any packets from each
 other. Here what i

 expected was that either (N1,N2) or (N2, N3) forms a two
 node cluster
 and stabilizes. But the cluster is never stabilizing
 even
 though 2 node
 clusters are forming, it is going back to membership [I
 checked the logs
 and it looks like because of the steps i mentioned
 in the
 previous mail,
 this seems to be happening]



 ..  Where did you say you were testing a byzantine
 fault in
 your original bug report?  Please be more forthcoming in the
 future. Corosync does not protect against byzantine faults.
   Allowing one way connectivity in network connection = this
 fault scenario.  You can try coro-netctl (the attached
 script)
 which will atomically block a network ip in the network
 to test
 split brain scenarios without actually pulling network
 cables.

 Regards
 -steve


 Regards,
 Ranjith
 On Fri, Sep 24, 2010 at 11:36 PM, Steven Dake
 sd...@redhat.com mailto:sd...@redhat.com
 mailto:sd...@redhat.com mailto:sd...@redhat.com
 mailto:sd...@redhat.com mailto:sd...@redhat.com
 mailto:sd...@redhat.com mailto:sd...@redhat.com wrote:

 It is hard to tell what is happening without
 logs from
 all 3 nodes.
 Does this only happen at system start, or can you
 duplicate 5
 minutes after systems have started?

 If it is at system start, you may need to enable
 fast
 STP on your
 switch.  It looks to me like node 3 gets some
 messages
 through but
 then is blocked.  STP will do this 

Re: [Openais] Corosync 1.2.8 totem membership behaviour

2010-09-26 Thread Ranjith
Hi Steve,

Please comment on the same.

Regards,
Ranjith

On Sat, Sep 25, 2010 at 9:47 AM, Ranjith ranjith.nath...@gmail.com wrote:

 Hi Steve,

 Just to make it clear. Do you mean that in the above case If N3 is part of
 the network, it should have connectivity to both N2 and N1 and if it happens
 so
 that N3 has connectivity to N2 only, corosync doesnot take care of the
 same.

 Regards,
 Ranjith
   On Sat, Sep 25, 2010 at 9:39 AM, Steven Dake sd...@redhat.com wrote:

 On 09/24/2010 08:20 PM, Ranjith wrote:

 Hi ,
 It is hard to tell what is happening without logs from all 3 nodes. Does
 this only happen at system start, or can you duplicate 5 minutes after
 systems have started?

  The cluster is never stabilizing. It keeps on switching between the

 membership and operational state.
 Below is the test network which i am using:

 Untitled.png

  N1 and N3 does not reveive any packets from each other. Here what i

 expected was that either (N1,N2) or (N2, N3) forms a two node cluster
 and stabilizes. But the cluster is never stabilizing even though 2 node
 clusters are forming, it is going back to membership [I checked the logs
 and it looks like because of the steps i mentioned in the previous mail,
 this seems to be happening]



 ..  Where did you say you were testing a byzantine fault in your
 original bug report?  Please be more forthcoming in the future. Corosync
 does not protect against byzantine faults.  Allowing one way connectivity in
 network connection = this fault scenario.  You can try coro-netctl (the
 attached script) which will atomically block a network ip in the network to
 test split brain scenarios without actually pulling network cables.

 Regards
 -steve


 Regards,
 Ranjith
 On Fri, Sep 24, 2010 at 11:36 PM, Steven Dake sd...@redhat.com
  mailto:sd...@redhat.com wrote:

It is hard to tell what is happening without logs from all 3 nodes.
Does this only happen at system start, or can you duplicate 5
minutes after systems have started?

If it is at system start, you may need to enable fast STP on your
switch.  It looks to me like node 3 gets some messages through but
then is blocked.  STP will do this in it's default state on most
switches.

Another option if you can't enable STP is to use broadcast mode (man
openais.conf for details).

Also verify firewalls are properly configured on all nodes.  You can
join us on the irc server freenode on #linux-cluster for real-time
assistance.

Regards
-steve


On 09/22/2010 11:33 PM, Ranjith wrote:

Hi Steve,
  I am running corosync 1.2.8
  I didn't get what u meant by blackbox. I suppose it is
logs/debugs.
  I just checked logs/debugs and I am able to understand the
 below:
   1--2--3
1) Node1 and Node2 are already in a 2node cluster
2) Now Node3 sends join with ({1} , {} ) (proc_list/fail_list)
3) Node2 sends join ({1,2,3} , {}) and Node 1/3 updates to
({1,2,3}, {})
4) Now Node 2 gets consensus after some messages [But 1 is the
 rep]
5) Consensus timeout fires at node 1 for node 3, node1 sends join
 as
({1,2}, {3})
6) Node2 updates because of the above message to ({1,2}, {3})
and sends
out join. This join received by node 3 causes it to update
({1,3}, {2})
7) Node1and Node2 enter operational (fail list cleared by node2)
 but
node 3 join timeout fires and again membership state.
8) This will continue to happen until consensus fires at node3
for node1
and it moves to ({3}, {1,2})
9) Now Node1and Node2 from 2 node cluster and 3 forms a single
node cluster
10) Now node 2 broadcast a Normal message
11) This message is received by Node3 as a foreign message which
forces
it to go to gather state
12) Again above steps 
The cluster is never stabilizing.
I have attached the debugs for Node2:
(1 - 10.102.33.115, 2 - 10.102.33.150, 3 -10.102.33.180)
Regards,
Ranjith

On Wed, Sep 22, 2010 at 10:53 PM, Steven Dake sd...@redhat.com
mailto:sd...@redhat.com
 mailto:sd...@redhat.com mailto:sd...@redhat.com wrote:

On 09/21/2010 11:15 PM, Ranjith wrote:

Hi all,
Kindly comment on the above behaviour
Regards,
Ranjith

On Tue, Sep 21, 2010 at 9:52 PM, Ranjith
ranjith.nath...@gmail.com mailto:ranjith.nath...@gmail.com
mailto:ranjith.nath...@gmail.com
mailto:ranjith.nath...@gmail.com
mailto:ranjith.nath...@gmail.com mailto:
 ranjith.nath...@gmail.com
mailto:ranjith.nath...@gmail.com
mailto:ranjith.nath...@gmail.com wrote:

Hi all,
I was testing the corosync cluster engine by 

Re: [Openais] Corosync 1.2.8 totem membership behaviour

2010-09-24 Thread Steven Dake
It is hard to tell what is happening without logs from all 3 nodes. 
Does this only happen at system start, or can you duplicate 5 minutes 
after systems have started?

If it is at system start, you may need to enable fast STP on your 
switch.  It looks to me like node 3 gets some messages through but then 
is blocked.  STP will do this in it's default state on most switches.

Another option if you can't enable STP is to use broadcast mode (man 
openais.conf for details).

Also verify firewalls are properly configured on all nodes.  You can 
join us on the irc server freenode on #linux-cluster for real-time 
assistance.

Regards
-steve

On 09/22/2010 11:33 PM, Ranjith wrote:
 Hi Steve,
   I am running corosync 1.2.8
   I didn't get what u meant by blackbox. I suppose it is logs/debugs.
   I just checked logs/debugs and I am able to understand the below:
1--2--3
 1) Node1 and Node2 are already in a 2node cluster
 2) Now Node3 sends join with ({1} , {} ) (proc_list/fail_list)
 3) Node2 sends join ({1,2,3} , {}) and Node 1/3 updates to ({1,2,3}, {})
 4) Now Node 2 gets consensus after some messages [But 1 is the rep]
 5) Consensus timeout fires at node 1 for node 3, node1 sends join as
 ({1,2}, {3})
 6) Node2 updates because of the above message to ({1,2}, {3}) and sends
 out join. This join received by node 3 causes it to update ({1,3}, {2})
 7) Node1and Node2 enter operational (fail list cleared by node2) but
 node 3 join timeout fires and again membership state.
 8) This will continue to happen until consensus fires at node3 for node1
 and it moves to ({3}, {1,2})
 9) Now Node1and Node2 from 2 node cluster and 3 forms a single node cluster
 10) Now node 2 broadcast a Normal message
 11) This message is received by Node3 as a foreign message which forces
 it to go to gather state
 12) Again above steps 
 The cluster is never stabilizing.
 I have attached the debugs for Node2:
 (1 - 10.102.33.115, 2 - 10.102.33.150, 3 -10.102.33.180)
 Regards,
 Ranjith

 On Wed, Sep 22, 2010 at 10:53 PM, Steven Dake sd...@redhat.com
 mailto:sd...@redhat.com wrote:

 On 09/21/2010 11:15 PM, Ranjith wrote:

 Hi all,
 Kindly comment on the above behaviour
 Regards,
 Ranjith

 On Tue, Sep 21, 2010 at 9:52 PM, Ranjith
 ranjith.nath...@gmail.com mailto:ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com wrote:

 Hi all,
 I was testing the corosync cluster engine by using the
 testcpg exec
 provided along with the release. I am getting the below
 behaviour
 while testing some specific scenarios. Kindly comment on the
 expected behaviour.
 1)   3 Node cluster
1-2-3
  a) suppose I bring the nodes 12 up, it will form a
 ring (1,2)
  b) now bring up 3
  c) 3 sends join which restarts the membership process
  d) (1,2) again forms the ring , 3 forms self cluster
  e) now 3 sends a join (due to join or other timeout)
  f) again membership protocol is started as 2 responds
 to this
 by going to gather state ( i believe 2 should not accept
 this as 2
 would have earlier decided that 3 is failed)
  I am seeing a continuous loop of the above behaviour  (
 operational - membership - operational - ) due to which the
 cluster is not becoming stabilized
 2)   3 Node Cluster
1-2---3
   a) bring up all the three nodes at the same time (None
 of the
 nodes have seen each other before this)
   b) Now each node forms a cluster by itself .. (Here i
 think it
 should from either a (1,2) or (2,3) ring )
 Regards,
 Ranjith




 Ranjith,

 Which version of corosync are you running?

 can you run corosync-blackbox and attach the output?

 Thanks
 -steve


 ___
 Openais mailing list
 Openais@lists.linux-foundation.org
 mailto:Openais@lists.linux-foundation.org
 https://lists.linux-foundation.org/mailman/listinfo/openais




___
Openais mailing list
Openais@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/openais


Re: [Openais] Corosync 1.2.8 totem membership behaviour

2010-09-22 Thread Ranjith
Hi all,

Kindly comment on the above behaviour

Regards,
Ranjith

On Tue, Sep 21, 2010 at 9:52 PM, Ranjith ranjith.nath...@gmail.com wrote:

 Hi all,

 I was testing the corosync cluster engine by using the testcpg exec
 provided along with the release. I am getting the below behaviour
 while testing some specific scenarios. Kindly comment on the expected
 behaviour.

 1)   3 Node cluster

   1-2-3

 a) suppose I bring the nodes 12 up, it will form a ring (1,2)
 b) now bring up 3
 c) 3 sends join which restarts the membership process
 d) (1,2) again forms the ring , 3 forms self cluster
 e) now 3 sends a join (due to join or other timeout)
 f) again membership protocol is started as 2 responds to this by going
 to gather state ( i believe 2 should not accept this as 2 would have earlier
 decided that 3 is failed)

 I am seeing a continuous loop of the above behaviour  ( operational -
 membership - operational - ) due to which the cluster is not becoming
 stabilized


 2)   3 Node Cluster

   1-2---3

  a) bring up all the three nodes at the same time (None of the nodes
 have seen each other before this)
  b) Now each node forms a cluster by itself .. (Here i think it should
 from either a (1,2) or (2,3) ring )


 Regards,
 Ranjith

___
Openais mailing list
Openais@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/openais

Re: [Openais] Corosync 1.2.8 totem membership behaviour

2010-09-22 Thread Steven Dake
On 09/21/2010 11:15 PM, Ranjith wrote:
 Hi all,
 Kindly comment on the above behaviour
 Regards,
 Ranjith

 On Tue, Sep 21, 2010 at 9:52 PM, Ranjith ranjith.nath...@gmail.com
 mailto:ranjith.nath...@gmail.com wrote:

 Hi all,
 I was testing the corosync cluster engine by using the testcpg exec
 provided along with the release. I am getting the below behaviour
 while testing some specific scenarios. Kindly comment on the
 expected behaviour.
 1)   3 Node cluster
1-2-3
  a) suppose I bring the nodes 12 up, it will form a ring (1,2)
  b) now bring up 3
  c) 3 sends join which restarts the membership process
  d) (1,2) again forms the ring , 3 forms self cluster
  e) now 3 sends a join (due to join or other timeout)
  f) again membership protocol is started as 2 responds to this
 by going to gather state ( i believe 2 should not accept this as 2
 would have earlier decided that 3 is failed)
  I am seeing a continuous loop of the above behaviour  (
 operational - membership - operational - ) due to which the
 cluster is not becoming stabilized
 2)   3 Node Cluster
1-2---3
   a) bring up all the three nodes at the same time (None of the
 nodes have seen each other before this)
   b) Now each node forms a cluster by itself .. (Here i think it
 should from either a (1,2) or (2,3) ring )
 Regards,
 Ranjith




Ranjith,

Which version of corosync are you running?

can you run corosync-blackbox and attach the output?

Thanks
-steve


 ___
 Openais mailing list
 Openais@lists.linux-foundation.org
 https://lists.linux-foundation.org/mailman/listinfo/openais

___
Openais mailing list
Openais@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/openais