Re: From analysis of a simple ifstated.conf to more compex example



To be honest, I'm not sure it's a good idea to use different *interfaces*.

Why don't you set multiple IPs on a single carp interface instead ?

On 21 Feb 2012, at 08:29, peter knezel <peter.knezel@xxxxxxxxx> wrote:

Hello Damien,

preemption is set on both systems, so when master server goes down or
any CARP interface on master
goes down, slave becomes master (but only on the CARP interface if
only that went down).

Can you have a look at my previous question??:
if the different carp interfaces
are used for different purpose (ftp, tftp, scp), is it a good idea to
put down all of them, if they are able to serve their purpose?


Thanks and kind regards,

Peter

On 16/02/2012, Damien Fleuriot <ml@xxxxx> wrote:
Preemption is used to ensure that, if a CARP interface goes down on host
A, host B will then assume mastership for all interfaces.

It prevents the nasty situation where you'd have, for example:

Public IP: master on host A
Private IP: master on host B

servers behind firewalls hosts A and B:
- traffic arrives on host A which creates a PF state
- servers reply via their default gateway, the CARP IP now master on host B

Host B doesn't have a state for the traffic, drops it.


To enable preemption you need to run sysctl net.inet.carp.preempt=1 and
add the corresponding line to your sysctls file in etc.


On 2/15/12 7:04 PM, peter knezel wrote:
Well,

I am not fully familiar with CARP, but if the different carp interfaces
are used for different purpose (ftp, tftp, scp), is it a good idea to
put down all of them, if they are able to serve their purpose?

BTW, what is CARP preemption and how is it possible to enable it?

Kind regards,

Peter

On 15 February 2012 18:25, Damien Fleuriot <ml@xxxxx <mailto:ml@xxxxx>>
wrote:

Sorry about the late reply, didn't see yours.

What about enabling CARP preemption to ensure that when a carp
interface
goes down, the whole set does ?


On 2/7/12 9:13 PM, peter knezel wrote:
Hello Damien,

I did read your example but cannot get idea from it.
For three interfaces you have much more possibilities.

Imagine you start the server from uuu state which is equal to
net = '( "ifconfig -a -u |grep carp0 > /dev/null" every 3 &&
"ifconfig -a -u
|grep carp1 > /dev/null" every 3 && "ifconfig -a -u |grep carp2 >
/dev/null"
every 3)'

Now you put down one carp interface - so system is in state :
*state one:*
(duu) || (udu) || (uud) <----which is same as !$net
run script1.sh
go to twoff

now imagine, you put down any other carp interface:
*state twoff: *
(dud) || (ddu) || (udd)
run script2.sh
go to two

*state two: *
put all interfaces up
run script3.sh
go to state one

it means, this is one of the possibilities system can behave (this
situation does not describe all possible states - I have taken this
special example.)

Now if you want to put up after putting down one carp interface, you
fail since it is in state twoff.
Only of you put down second carp interface it goes to state two and
if
you put both up, it will go to state one.

This is where my ifstated.conf fails to work.

Kind regards,

Peter Knezel


On 7 February 2012 17:02, Damien Fleuriot <ml@xxxxx
<mailto:ml@xxxxx> <mailto:ml@xxxxx <mailto:ml@xxxxx>>>
wrote:

On 2/7/12 3:36 PM, peter knezel wrote:
Hello all,

I would like to ask somebody to explain me how the ifstated
works
according to
the following configuration file.
I have three virtual carp interfaces carp0,carp1 and carp2.

I try to understand the following setting:
The server is in state one (all carp interfaces are up) and
if there
is carp down of any:
one (carp0 or carp1 or carp2),
two ([carp0 and carp1] or [carp0 and carp2] or [carp1 and
carp2]),
three interfaces (carp 0 and carp1 and carp2), server
runs the script testdown.sh and put the server into state two.
If all carp interfaces are up, the server runs the testup.sh
and set
the state to one.


That is my understanding.


Is it the way the system works?
Or am I wrong?

===
init-state one

net = '( "ifconfig -a -u |grep carp0 > /dev/null" every 3 &&
"ifconfig -a -u
|grep carp1 > /dev/null" every 3 && "ifconfig -a -u |grep
carp2 >
/dev/null"
every 3)'

state one {
if ( ! $net ) {
run "/usr/local/testdown.sh"
set-state two
}
}

state two {
if ( $net ) {
run "/usr/local/testup.sh"
set-state one
}
}
===

Is there any possibility to define and set ifstated.conf that
reacts when:

any one of the carp interfaces is down - followed by
another any
other carp interface down


I tried to define states:

duu ="!carp0.link.up && carp1.link.up && carp2.link.up"
udu ="carp0.link.up && !carp1.link.up && carp2.link.up"
uud ="carp0.link.up && carp1.link.up && !carp2.link.up"
ddu ="!carp0.link.up && !carp1.link.up"
dud ="!carp0.link.up && !carp2.link.up"
udd ="!carp1.link.up && !carp2.link.up"

and used them but somehow I cannot incorporate all state
changes and
include it in ifstated.conf.



Works fine here, did you not have any luck with the file I
posted
earlier ?
_______________________________________________
freebsd-questions@xxxxxxxxxxx
<mailto:freebsd-questions@xxxxxxxxxxx>
<mailto:freebsd-questions@xxxxxxxxxxx
<mailto:freebsd-questions@xxxxxxxxxxx>>
mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to
"freebsd-questions-unsubscribe@xxxxxxxxxxx
<mailto:freebsd-questions-unsubscribe@xxxxxxxxxxx>
<mailto:freebsd-questions-unsubscribe@xxxxxxxxxxx
<mailto:freebsd-questions-unsubscribe@xxxxxxxxxxx>>"





_______________________________________________
freebsd-questions@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: rtfree: 0xc741ee88 has 1 refs
    ... None of them has a carp interface though. ... In my situation the IP of the default GW sits on carp interface (the host have nothing to do with carp) ... then the host things that those icmp type 5 are spoofed and just ignore them and do not add shorter route. ... In this situation after reboot the hosts start to moan about rtfree, so I played with routes and settings, added manually routes and now when I restore everything to previous state ...
    (freebsd-current)
  • Re: From analysis of a simple ifstated.conf to more compex example
    ... Preemption is used to ensure that, if a CARP interface goes down on host ... host B will then assume mastership for all interfaces. ... Private IP: master on host B ...
    (freebsd-questions)
  • Re: From analysis of a simple ifstated.conf to more compex example
    ... Why don't you set multiple IPs on a single carp interface instead? ... any CARP interface on master ... host B will then assume mastership for all interfaces. ... Imagine you start the server from uuu state which is equal to ...
    (freebsd-questions)
  • Re: From analysis of a simple ifstated.conf to more compex example
    ... inet 46.182.41.72 netmask 0xffffffff ... Why don't you set multiple IPs on a single carp interface instead? ... host B will then assume mastership for all interfaces. ...
    (freebsd-questions)
  • Re: From analysis of a simple ifstated.conf to more compex example
    ... any CARP interface on master ... host B will then assume mastership for all interfaces. ... > Imagine you start the server from uuu state which is equal to ...
    (freebsd-questions)