Date: Tue, 21 Feb 2012 08:43:04 +0100 From: Damien Fleuriot <ml@my.gd> To: peter knezel <peter.knezel@gmail.com> Cc: "freebsd-questions@freebsd.org" <freebsd-questions@freebsd.org> Subject: Re: From analysis of a simple ifstated.conf to more compex example Message-ID: <DAC13949-407E-400A-B5BD-489CE800A380@my.gd> In-Reply-To: <CAAwfu_=OPqKpPxRvmf3gByq3Zqdm3DY52KvEA%2BNwOXQxJnkNGg@mail.gmail.com> References: <CAAwfu_n%2BVjgeihzWRa1F6v6PhCA943sFHR7eFxA1Ycc8NbjXpQ@mail.gmail.com> <4F314AFB.8080901@my.gd> <CAAwfu_kfj2mqT9qVSh2_9LpfcvOrxBJiwNRi_x79VcjGQLwGqw@mail.gmail.com> <4F3BEA73.9060005@my.gd> <CAAwfu_=5-t0=C2_2ZeK5cf3N-e5_%2BiZPGLPk9S-Tks78sKpVYA@mail.gmail.com> <4F3CC11D.1080105@my.gd> <CAAwfu_=OPqKpPxRvmf3gByq3Zqdm3DY52KvEA%2BNwOXQxJnkNGg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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@gmail.com> wrote: > Hello Damien, >=20 > 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). >=20 > 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? >=20 >=20 > Thanks and kind regards, >=20 > Peter >=20 > On 16/02/2012, Damien Fleuriot <ml@my.gd> 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. >>=20 >> It prevents the nasty situation where you'd have, for example: >>=20 >> Public IP: master on host A >> Private IP: master on host B >>=20 >> 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 >>=20 >> Host B doesn't have a state for the traffic, drops it. >>=20 >>=20 >> To enable preemption you need to run sysctl net.inet.carp.preempt=3D1 and= >> add the corresponding line to your sysctls file in etc. >>=20 >>=20 >> On 2/15/12 7:04 PM, peter knezel wrote: >>> Well, >>>=20 >>> 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? >>>=20 >>> BTW, what is CARP preemption and how is it possible to enable it? >>>=20 >>> Kind regards, >>>=20 >>> Peter >>>=20 >>> On 15 February 2012 18:25, Damien Fleuriot <ml@my.gd <mailto:ml@my.gd>> >>> wrote: >>>=20 >>> Sorry about the late reply, didn't see yours. >>>=20 >>> What about enabling CARP preemption to ensure that when a carp >>> interface >>> goes down, the whole set does ? >>>=20 >>>=20 >>> On 2/7/12 9:13 PM, peter knezel wrote: >>>> Hello Damien, >>>>=20 >>>> I did read your example but cannot get idea from it. >>>> For three interfaces you have much more possibilities. >>>>=20 >>>> Imagine you start the server from uuu state which is equal to >>>> net =3D '( "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)' >>>>=20 >>>> 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 >>>>=20 >>>> now imagine, you put down any other carp interface: >>>> *state twoff: * >>>> (dud) || (ddu) || (udd) >>>> run script2.sh >>>> go to two >>>>=20 >>>> *state two: * >>>> put all interfaces up >>>> run script3.sh >>>> go to state one >>>>=20 >>>> 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.) >>>>=20 >>>> 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. >>>>=20 >>>> This is where my ifstated.conf fails to work. >>>>=20 >>>> Kind regards, >>>>=20 >>>> Peter Knezel >>>>=20 >>>>=20 >>>> On 7 February 2012 17:02, Damien Fleuriot <ml@my.gd >>> <mailto:ml@my.gd> <mailto:ml@my.gd <mailto:ml@my.gd>>> >>>> wrote: >>>>=20 >>>> On 2/7/12 3:36 PM, peter knezel wrote: >>>>> Hello all, >>>>>=20 >>>>> 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. >>>>>=20 >>>>> 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. >>>>>=20 >>>>=20 >>>> That is my understanding. >>>>=20 >>>>=20 >>>>> Is it the way the system works? >>>>> Or am I wrong? >>>>>=20 >>>>> =3D=3D=3D >>>>> init-state one >>>>>=20 >>>>> net =3D '( "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)' >>>>>=20 >>>>> state one { >>>>> if ( ! $net ) { >>>>> run "/usr/local/testdown.sh" >>>>> set-state two >>>>> } >>>>> } >>>>>=20 >>>>> state two { >>>>> if ( $net ) { >>>>> run "/usr/local/testup.sh" >>>>> set-state one >>>>> } >>>>> } >>>>> =3D=3D=3D >>>>>=20 >>>>> Is there any possibility to define and set ifstated.conf that >>>> reacts when: >>>>>=20 >>>>> any one of the carp interfaces is down - followed by >>> another any >>>>> other carp interface down >>>>>=20 >>>>>=20 >>>>> I tried to define states: >>>>>=20 >>>>> duu =3D"!carp0.link.up && carp1.link.up && carp2.link.up" >>>>> udu =3D"carp0.link.up && !carp1.link.up && carp2.link.up" >>>>> uud =3D"carp0.link.up && carp1.link.up && !carp2.link.up" >>>>> ddu =3D"!carp0.link.up && !carp1.link.up" >>>>> dud =3D"!carp0.link.up && !carp2.link.up" >>>>> udd =3D"!carp1.link.up && !carp2.link.up" >>>>>=20 >>>>> and used them but somehow I cannot incorporate all state >>> changes and >>>>> include it in ifstated.conf. >>>>>=20 >>>>=20 >>>>=20 >>>> Works fine here, did you not have any luck with the file I >>> posted >>>> earlier ? >>>> _______________________________________________ >>>> freebsd-questions@freebsd.org >>> <mailto:freebsd-questions@freebsd.org> >>> <mailto:freebsd-questions@freebsd.org >>> <mailto:freebsd-questions@freebsd.org>> >>>> mailing list >>>> http://lists.freebsd.org/mailman/listinfo/freebsd-questions >>>> To unsubscribe, send any mail to >>>> "freebsd-questions-unsubscribe@freebsd.org >>> <mailto:freebsd-questions-unsubscribe@freebsd.org> >>>> <mailto:freebsd-questions-unsubscribe@freebsd.org >>> <mailto:freebsd-questions-unsubscribe@freebsd.org>>" >>>>=20 >>>>=20 >>>=20 >>>=20 >>=20
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DAC13949-407E-400A-B5BD-489CE800A380>