Asterisk & Hochverfügbarkeit

baschdieh

Mitglied
Mitglied seit
15 Sep 2005
Beiträge
416
Punkte für Reaktionen
0
Punkte
0
Muss unseren Asterisk redundanz beibringen. Hat da jemand ein Lösungsvorschlag?

Würde gerne z.B. 2 Asterisk-Server aufsetzen. Davon ist einer der Master und der andere sollte auf Standby geschaltet sein. Sobald der Master nicht antwortet, soll der Asterisk2 (im Standby) die Rolle des Masters aufnehmen. Gibt das dafür auch einen Hardware-Failover Switch? Oder sollte eine Software-Cluster-Lösung verwenden?

Erfahrungen erwünscht! :)

Vielen Dank!
 
Ich würde das mit einem kleinen Script machen. Ein kurzer Ausfall müsste jedoch in Kauf genommen werden. Man könnte ja entweder per Cronjob oder Daemon die Verfügbarkeit des anderen Asteriskservers prüfen und bei einem Ausfall auf dem anderen Rechner laufen lassen. Müssen halt noch einige Feinheiten eingebaut werden. Zum Beispiel sollte verhindert werden, dass nach dem Start von Asterisk auf Server B, aufgrund des Ausfalls auf Server A, der Asterisk bei dem Neustart oder beim Reconnect von Server A erneut gestartet wird.

Vielleicht bietet aber sogar Asterisk die Funktion - ich wette das geht einfacher?
 
Man könnte die beiden Maschinen mit einem Heartbeat überwachen. Stichwort ha-daemon. Das Problem hierbei wird sein, dass Du ja nicht die Maschine an sich überwachen willst, sondern die Funktionalität von Asterisk. Evtl könnte man mit dem ha checken, ob der Asterisk aus sip antwortet...
 
Die SIP-Funktion lässt sich relativ gut mit sipsak überprüfen. Man sollte allerdings beachten dass beim Umschalten Server A evtl. noch nicht ganz tot ist. Man sollte ihn daher auch von Server B aus ganz ausschalten können (z.B. per IPMI).
 
baschdieh schrieb:
Sobald der Master nicht antwortet, soll der Asterisk2 (im Standby) die Rolle des Masters aufnehmen.

Gar nicht so einfach, da beide Server die gleiche IP-Adresse und DNS Namen haben müssen (Registrierungen Teilnehmer usw.)

Du kannst den beiden eth Schnittstellen zwei verschiedene IP Adressen zum konfigurieren geben und eine gemeinsame, auf den der DNS Name zeigt (bei einem Server nur aktiv). Dann per Script im Fehlerfall von Hand umschalten.

Hier gibts auch Infos: http://www.voip-info.org/wiki/view/Asterisk+High+Availability+Solutions
 
Guard-X schrieb:
Gar nicht so einfach, da beide Server die gleiche IP-Adresse und DNS Namen haben müssen (Registrierungen Teilnehmer usw.)

Du kannst den beiden eth Schnittstellen zwei verschiedene IP Adressen zum konfigurieren geben und eine gemeinsame, auf den der DNS Name zeigt (bei einem Server nur aktiv). Dann per Script im Fehlerfall von Hand umschalten.

Genau hierfür gibt es heartbeat ;) (s. www.linux-ha.org)
 
Vielen Dank fuer eure Antworten, habe mir nun folgendes ueberlegt:

-> 2x Switche
-> 2x Loadbalancer (Active und Standby)
-> 2x LDAP (Active und Standby)
-> 2x Asterisk Server (Active & Active)

Die 2 Switche haben jeweils einen Port fuer den Internet-Uplink, die 2 Loadbalancer sowie 2 LDAP Server haben untereinander einen Heartbeat (=Active&Standby). Die Asterisk Server haben keinen Heartbeat und laufen auf Active & Active.

Ich denke die Idee sollte ausbaufaehig sein, hat dazu jemand noch Anmerkungen bzw. Verbesserungsvorschlaege? Asterisk hat doch fuer die Configurations-Dateien LDAP support, oder etwa nicht? Von daher ist eine Realisierung auf 2 Redundante LDAP-Server garnicht mal so uebel?

Vielen Dank!

Greets
basty
 
Hi, warum 2 Loadbalancer?

Du willst doch kein Loadbalancing, sondern Failover.
Dazu reicht HSRP.

Einen Abbruch der aktuellen Session wirst Du aber hinnehmen müssen.

Gruß Stefan
 
Eine Lastenverteilung moechte ich garnicht machen. Die Ueberlegung zum Einsatz eines Loadbalancers war diese, dass ich anhand des LB eine externe IP habe, die ich auf 2 Interne (Asterisk) legen kann. Der LB wuerde den Failover machen.

Wie sollte ich das mit HSRP realisieren? Dieses Protocol wird doch ausschliesslich auf Cisco-Router eingesetzt um ein Failover innerhalb der Router zu haben?
 
Unter Linux kannst du einer Netzwerkkarte mehrere IPs zuweisen. Dazu brauchst du also keinen teuren Loadbalancer.
 
??? verstehe ich nicht so ganz. Das man unter Linux/Unix mehrere IP-Aliases vergeben kann ist klar - aber wie soll das automatisch realisiert werden? Wenn der Master Asterisk mit der Ip 212.XXX.XXX.101 ausfaellt - musste der Asterisk, der auf Standby laeuft (212.XXX.XXX.102) diese des Masters uebernehmen.
 
Und wo soll da jetzt das Problem sein? Der 2. Server merkt ja sowieso wegen Heatbeat, dass der 1. ausgefallen ist. Zur Sicherheit schaltet dreht er ihm noch den Saft ab und konfiguriert dann die 2. IP auf seinem Interface. Ist doch eigentlich ganz einfach :)
 
Hrm - naja gut..stimmt...wobei dann wirklich zu ueberlegen waere, ob man nicht aufgrund von Performance die Sache soweit aufsplittet das man Tatsaechlich die Last noch verteilt...

Was fuer eine Cluster-Loesung ist empfehlenswert?
-> Ultramonkey ?
-> Linux HA ?

Danke nochmal!

Gruesse,
basty
 
baschdieh schrieb:
Eine Lastenverteilung moechte ich garnicht machen. Die Ueberlegung zum Einsatz eines Loadbalancers war diese, dass ich anhand des LB eine externe IP habe, die ich auf 2 Interne (Asterisk) legen kann. Der LB wuerde den Failover machen.

Wie sollte ich das mit HSRP realisieren? Dieses Protocol wird doch ausschliesslich auf Cisco-Router eingesetzt um ein Failover innerhalb der Router zu haben?


Recht hast Du, sorry. Dann setze ich halt noch eins drauf...


HSRP like deamon on Linux

Auszug:
...Take two linux router, configure and install VGP on linux router A and B. Then when A goes down, B will go up in a few seconds configuring its interface with the same IP and MAC(!) used by router A, and avoiding your users to lost their connections. ...

Have fun.

Stefan
 
pbx-stefan schrieb:
...Take two linux router, configure and install VGP on linux router A and B. Then when A goes down, B will go up in a few seconds configuring its interface with the same IP and MAC(!) used by router A, and avoiding your users to lost their connections.

Das ist zwar ganz nett aber es bringt eigentlich nicht mehr als eine "normale" HA-Lösung mit Heartbeat. Die bestehenden Telefonie-Verbindungen werden auf jeden Fall unterbrochen.
 
Nungut - den Failover mache ich mit HA - wie bekomme ich nun noch einen vernuempftigen Datenabgleich zwischen Master und Slave Asterisk hin? Ein SCP via Crontab alle 5 Minuten waere nicht die sinnvollste Variante. Nachdem ich nun auf LB sowie LDAP Server verzichte - wird es wohl etwas schwierig ohne scp zu arbeiten?
Clusterfilesystem ist ja auch nicht gerade das gelbe vom Ei...wenn ich nur an die Konfiguration denke....sonst irgendwelche Vorschlaege ?
 
Die Config-Dateien kann man ja ab und an abgleichen. SIP/IAX-Accounts und Wählplan sind wohl am besten in MySQL aufgehoben. Dann noch MySQL 2-Wege Replikation und die Sache steht. Oder hab ich jetzt was an Anforderungen überlesen?
 
Zuletzt bearbeitet:
Realtime heisst hier das Zauberwort. Damit kann man die Sip-User und die extensions.conf in eine sql-db packen. Einfach mal (hier im Forum oder auf voip-info.org) nach Asterisk realtime suchen.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.