Sven Rautenberg: automatischesn Ändern der IP bei Leitungsausfall

Beitrag lesen

Moin!

Ich bin zumindest theoretisch auf eine Unmöglichkeit gestoßen, die dir den Effekt der doppelten Bandbreite vermiesen dürfte.

Aber mal weiter gedacht, könnte man mit einem Software oder am besten mit einem Scipt(PERL/BASH) evtl. was schreiben, das wenn eine der beiden Leitungen tot ist alle Anwendungen über die funktionierende Leitung laufen? Also ganz automatisch? Ich stelle mir das so vor:

Ich sende per cronjob jede Minute auf beiden Leitungen ein ping an den Router, außer dem Server die einzige feste Adresse im LAN. Wenn dies scheitert, wenn ein ping scheitert, wird entsprechend eine Script ausgeführt, welches die Anwendungen auf die funktionierende Leitung schiebt. 2 Fragen:

  1. Wie verwende ich ping über ein spezielles Ethernetinterface? ich schreibe normalerweise einfach ping... aber dann kann ich ja nicht bestimmen über welche Leitug das geht! Oder gibt es was anders als Ping was hierfür besser geeignet ist? Oder eine Abfrage des Status des Interface an sich?

Genau _hier_ liegt das Problem: Dein Server hat eine interne Routingtabelle, die ihm sagt, über welches Interface er Daten senden soll, wenn er gewisse IP-Adressen erreichen will. Das ist vollkommen unabhängig davon, ob er bestimmte Interfaces zum Lauschen benutzt.

Mit anderen Worten: Wenn dein Webserver auf .0.1 lauscht und dein SMB-Server auf .0.2, und dein Routing sagt, dass alle Pakete an .0.x über .0.1 zu senden sind, wird die zweite Leitung schlicht und ergreifend nur zum Empfang von SMB-Requests genutzt werden, aber nicht zum Versand. Das bedeutet, dass du immer noch den Engpaß der Leitung in Richtung Netzwerk hast.

Es wäre ja auch zu schön gewesen, wenn man einfach eine zweite Netzwerkkarte ins Gerät bastelt und so mir-nichts-dir-nichts einfach doppelte Bandbreite hätte.

Und auch eine Trennung nach Empfangsrichtung, die man ja somit hätte, bringt nichts - denn das macht der Switch schon, dass man Fullduplex senden kann.

Mit anderen Worten: Dein Server benötigt die Kenntnis, dass die zwei Netzwerkkarten als _ein_ Device ins selbe Netz zu betrachten sind. Sowas ist (wohl - ich hab keine praktische Erfahrung) relativ simpel, wenn z.B. der Switch mitspielt und automatisch ein Load-Balancing auf den beiden (oder noch mehr) Leitungen zum Server realisiert. Umgekehrt muß der Server natürlich wissen, dass er in Richtung Netzwerk auf allen Netzwerkkarten senden kann, muß also seinerseits Load-Balancing machen. Ich bin allerdings der Meinung, dass Linux sowas problemlos kann. Guck einfach mal in die Möglichkeiten bei der Kernel-Kompilierung. Und es gibt sicherlich auch ein HOWTO dafür.

Wenn du Load-Balancing machst, wird einerseits die Higher-Level-Konfiguration (wie z.B. DNS, Aufteilung der Server-Dienste etc) wesentlich einfacher, weil sich im Prinzip zu jetzt nichts ändert (der Server behält die eine IP-Adresse, DNS-Name etc. bleibt gleich), andererseits profitieren alle Benutzer sofort von der höheren Bandbreite, unabhängig vom Dienst, den sie benutzen, weil einfach zwei Leitungen statt einer für alle Serverdienste zur Verfügung stehen.

Das Problem der Realisierung ist (sofern es noch nicht aufgefallen ist) in diesem Fall der Switch, der solch ein Load Balancing hinkriegen muß. Üblicherweise kann man sowas bei entsprechenden Switches programmieren - es ist IMHO eher unüblich, dass sowas automatisch und mit billigen Switchen funktioniert.

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)