ich setze ISC DHCP-Server auf zwei verschiedenen Hosts ein, die im Cluster arbeiten (primary/secondary). Dabei wird der Pool 192.168.1.1-254 so aufgeteilt, dass quasi Host1 die IP-Bereich 192.168.1.1-128 reserviert hat, und der Host2 sich um .129-254 kümmert. Das ist ein interner Prozess von ISC DHCP, das manual beschreibt das so:
Wenn jetzt der Host2 ausfallen würde, entsteht folgendes Problem: der Client der von Host2 ursprünglich die Lease 192.168.1.222 erhalten hatte möchte nun nach Ablauf der eingestellten Lease-Periode (in meinem Falle 1 Tag) seine Lease erneuern. Der Host2 ist jedoch nicht erreichbar, und nur ER ist für diese Lease verantwortlich. Der Client würde also seine Lease nicht mehr erneuern können. Neue Clients die sich registrieren haben keine Probleme, den sie würden von Host1 abgearbeitet und erhalten von dem eine IP (irgendeine zwischen .1 und .128 die eben frei ist).The failover protocol allows two DHCP servers (and no more than two) to share a common address pool. Each server will have about half of the available IP addresses in the pool at any given time for allocation. If one server fails, the other server will continue to renew leases out of the pool, and will allocate new addresses out of the roughly half of available addresses that it had when communications with the other server were lost.
Aufgrund von großen und etwas länger anhaltenden Wartungsarbeiten musste ich meinen Host2 herunterfahren und durfte das Problem selbst erleben, das dadurch zustande kam. Abhilfe konnte ich nur dadurch schaffen, indem ich dem Host1 explizit und manuell in den Modus "partner-down" gesetzt habe. Dadurch weiß der Host1, dass sein Partner wirklich unerreichbar ist, und nun kümmert er sich ebenfalls für den Bereich, für den ursprünglich Host2 verantwortlich war (also für .129 bis .254). Nur so konnten alle Clients mit abgelaufener Lease zwischen .129 und .254 wieder eine gültige IP erhalten, und zwar vom Host1. Dadurch verloren sie sogar ihre alte Lease, sie bekamen von Host1 eine neue IP zugewiesen (was mich aber nicht sonderlicht störte). Das manual beschreibt das so:
Den Host1 (also der wo noch arbeitet) kann man durch zwei Möglichkeitenin den Zustand "partner-down" stellen. Ich habe das mit der Methode gemacht, indem man das lease-file bearbeitet. Das manual sagt:It is possible during a prolonged failure to tell the remaining server that the other server is down, in which case the remaining server will (over time) reclaim all the addresses the other server had available for allocation, and begin to reuse them. This is called putting the server into the PARTNER-DOWN state.
Ich habe also auf Host1 den DHCP-Server mit /etc/init.d/isc-dhcp-server stop erst beendet und dann die Datei /var/lib/dhcp/dhcpd.leases geöffnet. Dort habe ich den letzten Abschnitt gesucht der mit dem oben genannten Block existiert, und dort den state auf "partner-down" in der Zeile my state gesetzt. Datum+Zeit habe ich unberührt belassen.You can put the server into the PARTNER-DOWN state either by using the omshell (1) command or by stopping the server, editing the last peer state declaration in the lease file, and restarting the server. If you use this last method, be sure to leave the date and time of the start of the state blank:
failover peer name state {
my state partner-down;
peer state state at date;
}
Nachdem ich den Host1 DHCP-Server wieder gestartet habe, konnten all die Clients die zuvor eine IP aus Bereich .129-.254 hatten, endlich wieder eine gültige Lease vom Host1 erhalten und somit waren sie wieder im Netzwerk.
Nun habe ich den Host2 wieder soweit und möchte den hochfahren, bin mir aber nicht sicher ob ich den einfach so nun hochfahren kann und er sich automatisch mit Host1 wieder verbindet und sich synchronisiert. Das manual sagt dazu:
Demnach interpretier ich das also so, dass ich wirklich einfach nur meinen Host2 wieder hochfahren könnte und das alles automatisch abgeglichen wird und das Cluster wieder "hoffentlich" in den Modus "Normal-communication" gesetzt wird.When the other server comes back online, it should automatically detect that it has been offline and request a complete update from the server that was running in the PARTNER-DOWN state, and then both servers will resume processing together.
Die folgenden Zeilen aus dem manual beunruhigen mich jedoch ein wenig:
Eigentlich sollte ich mir ja diesbezüglich aber keine Sorgen machen sollen, denn Host1 den ich in den Modus "partner-down" versetzt habe, war ja nonstop online und Host2 war nonstop offline.It is possible to get into a dangerous situation: if you put one server into the PARTNER-DOWN state, and then *that* server goes down, and the other server comes back up, the other server will not know that the first server was in the PARTNER-DOWN state, and may issue addresses previously issued by the other server to different clients, resulting in IP address conflicts. Before putting a server into PARTNER-DOWN state, therefore, make sure that the other server will not restart automatically.
Bevor ich jedoch den Host2 nun hochfahre, wollte ich auch eure Meinung einholen wie ihr das seht und ob ich den Host2 tatsächlich bedenkenlos hochfahren kann. Sicher ist sicher
Danke euch und viele Grüße,
Pangu.