On Mon, Jun 9, 2014 at 11:17 AM, Giancarlo Razzolini <grazzol...@gmail.com> wrote: > Em 09-06-2014 12:03, sven falempin escreveu: >> ifstated is a cool FSM emgine for handling the carp problems, >> for more complex need , instead of hacking this not complete FSM engine, >> i would just used another software. >> >> The last time, i just use plain perl script, because it was convenient >> and easy to read, >> using a true FSM design was just making the logic more complex. >> >> IMHO the way to improve ifstated is to fork it so it becomes a full FSM >> engine, >> with transition and node definition, and each part using perl or ksh code. >> >> node 1 { >> entry : {perl code} >> leaving: {ksh code} >> eventX : node 2 >> } >> >> The all work would be on the eventX , how to create one in a cron like >> process, how to bind the superb kqueue, and >> how to get notified from the network states change. >> >> Now , if ifstated is not able to handle what it was design for (CARP) >> i guess it should be fixed. > It definitively does what it was designed for. But I believe that these > improvements would also benefit carp only deployments. If a carp node is > failing more than N times in the last few minutes, it might be a good > idea to completely fail it over and enter on a different state. I use my > ifstated setup for both carp and isp link failure detection. I took a > look at ifstated code and I've been fiddling with it for a little time > now. I believe that the counter based approach is easy to implement with > less disruption. The time based one is more difficult. As I mentioned, > I've been using ifstated for years now (10+ IIRC). And more often than > not, isp links behave erratic. Carp can also have problems if the > network hardware underneath it does not behave correctly. I don't > believe that all of these situations can be solved even with a true FSM. > That's why I'm proposing these improvements. But, I wanted to discuss > with you guys here on tech@ first. Perhaps something entirely different > needs to be done. >
Detecting bad network is problematic, i try to access external service for this, dns and tcp, this can be done inside ifstated. For the counter, you could use a file and modified it from ifstated, and do a if grep 10 /my/file echo "my file reach 10"| mail -s alert root; call real action; erase file, but lets wait for people with more insight :-) -- --------------------------------------------------------------------------------------------------------------------- () ascii ribbon campaign - against html e-mail /\