BINDMON ======= Introduction BINDMON is a program used to accomplish some degree of fault tolerance in TCP/IP services, by monitoring service health and updating BIND maps whenever a service comes up or down. To use it, you must: * Rename your current BIND input files to an input form. For instance, if you currently have a file called db.domain, you might rename it to db.domain.in * Encapsulate entries for single-service hosts in your BIND input file to show that they depend on some TCP service. For instance, where you now might have: gateway.m-tech.ab.ca. 0 IN A 10.0.0.1 You could write: #ifup 10.0.0.1 80 5 1 5 gateway.m-tech.ab.ca. 0 IN A 10.0.0.1 #endif This means that the record should only be included if port 80 on 10.0.0.1 is open (maybe it's a WWW server). The health of the port should be checked every 5 minutes. If a single failure to open has been detected, the record should be removed. If five consecutive attempts have succeeded, then it can be reactivated. * Run bindmon with arguments telling it: - where to put its log files - where its input/output files are - what command to use to reload the map files into bind - how long it should wait to establish any given socket (timeout) Note: you must specify full paths for all files, as the bindmon program will run as a daemon with a CWD of /. Platform This program was written on and for Linux/Intel/ELF/libc6. It should compile cleanly on any ANSI-C environment, and should be useful on any Unix or Unix-like system. This program is primarily intended to monitor and interact with the Berkeley Internet Name Daemon (BIND). However, it might be useful in other situations. Warranties The author provides no warranties for this software. Author This program was developed by Idan Shoham at M-Tech Mercury Information Technology, Inc. Any correspondence relating to this program should be directed to: bindmon@m-tech.ab.ca The program was developed for internal use at M-Tech, with the hope that it will be useful to others. It is being released under the GNU Public License (GPL). Please see the attached COPYING file for the text of this license. Manifest CHANGELOG - revision history for this software COPYING - the GNU Public License INSTALL - installation instructions Makefile - used to compile it, test it, etc. README - this file TODO - some thoughts about what additions would be useful VERSION - what is the current version of the software? src - the source code test - a simple test directory