HochverfügbarkeitssystemEinführung:

Dieser Guide beschreibt die Sicherung des 3CX Phone System Servers in Firmen, die als Infrastruktur einen eigenen Server für die Telefonie nutzen, aber dieser einer signifikante Bedeutung zu kommt, zB. Call Center . Infrastrukturen werden durch andere Server/Hardware (DHCP/DNS/Mail/Internet) bereitgestellt.

Rahmenbedingung:

Empfehlung für User: 50-300+
Die Server ist durch grundlegende Hardware geschützt. Darunter

  • Unabhängige Stromversorgung (UPS)
  • Raid System, mindestens Raid Level 1 (Mirror) oder 5 (Stripe)
  • Backup oder Image Software
  • 2x 3CX Server Hardware
  • 2x 3CX PBX Lizenz
  • Master und Slave besitzt eine statische IP
  • Snom (8.4.X FW),  PolyCom (3.3.1 FW)  oder Cisco SPA5XX (7.5.1 FW) Endgeräte
  • Erweitertes Verständnis des Provisioning von Telefonen
  • 3CX Phonesystem ab V10 SP5
  • PSTN Gateway Beronet (Optional BeroFos) oder Patton 4554/4638

Wichtige Anmerkung: Alle Schritte müssen intensiv getestet werden bevor Sie diese Produktiv einsetzen!

Schritt 1: Installation und Konfiguration der beiden 3CX Phone System Server

Installieren Sie auf beiden Hostcomputer das 3CX Phone System. Beide Systeme sollten eine statische IP Adresse besitzen und im Netzwerk erreichbar sein. Nach der Installation führen Sie den 3CX Wizard auf beiden Computern aus um eine “blanko” Installation vorzunehmen und aktivieren Sie anschließend das 3CX PhoneSystem, jeweils mit einer eigenen Lizenz.

  • Das 3CX Phone System, welches im Regelfall den Telefonie-Dienst in Ihrem LAN übernimmt, bezeichnen wir im weiteren Verlauf als “Master”
  • Das 3CX Phone System, welches im Falle eines Fehlers im/am Master den Telefonie-Dienst in Ihrem LAN übernimmt, bezeichnen wir im weiteren Verlauf als “Slave”
  1. Auf dem Master
    1. Wichtige Anweisung: Überspringen Sie diesen Schritt nicht! Er ist für die Funktion eines High Availability System zwingend notwendig!
    2. Öffnen Sie die Verwaltungskonsole
    3. Im Menu navigieren Sie auf: “Einstellungen -> Erweitert”
    4. Wechseln in den Reiter “Benutzerdefinierte Parameter”
    5. Scrollen Sie an das Ende der Liste und fügen die folgenden Parameter Einträge hinzu
      1. Name: Backup_PBX_IP
        Beschreibung: IP Adresse des 3CX Phone System, welches als “Slave” geführt wird
        Wert: IPdesSLAVEcomputers (z.B. 192.168.1.10)
      2. Name: Backup_PBX_Port
        Beschreibung: Port des 3CX Phone System, welches als “Slave” geführt wird, default 5060
        Wert: 5060
    6. Bestätigen Sie die Eingabe mit Übernehmen / OK am unteren Ende der Seite

Schritt 2: Anlegen einer Netzwerkfreigabe und Benutzern

Um eine Austausch der Konfiguration zu ermöglichen benötigen beide Computer Zugriff auf einen unabhängiges Storagemedium, in diesem Fall eine Netzwerkfreigabe. Der Computer der diese Funktion übernimmt wird weiter als “Backup3CX” bezeichnet. Dieses ist ein Computer, mit einer statischen IP, welche von den beiden Computer Master & Slave im Netzwerk zu erreichen ist.

Anlegen von Benutzern

  • Sollten die 3 Computer (Master, Slave, Backup3CX) in einem Domänenverbund eingebunden sein, erstellen Sie im Ihrem AD einen User mit dem Namen “3cxuser” mit dem Passwort “3CXpass$” und fügen diesen Benutzer in die Gruppe “Domain Admins” hinzu. Sie können den Benutzernamen und das Passwort nach Ihren Vorstellungen vergeben, passen diese später in den Scripts (Schritt 3 & 4 an). Für die Ersteinrichtung empfiehlt es sich es mit den Default-Werten einzurichten und nach erfolgreichem Test dieses anzupassen
  • Sollten die 3 Computer nicht in einer Domäne eingebunden sein, erstellen sie auf den Computern Master, Slave und Backup3CX jeweils einen lokalen Benutzer mit dem Usernamen “3cxuser” und dem Passwort “3CXpass$” und fügen Sie diesen in die lokale Gruppe der Administratoren hinzu.
  • Wenn Sie den Benutzer anlegen stellen Sie sicher, dass Sie die Optionen für:
    • Uncheck – Muss Passwort bei nächster Anmeldung ändern
    • Check – Benutzer kann Passwort nicht ändern
    • Check – Passwort läuft niemals ab
    • Uncheck – Konto ist deaktiviert

Abschalten von UAC

Auf dem Master und Slave Computer müssen die UAC steuerung (ab Windows Vista) deaktiviert und anschließend durch einen reboot des PCs abgeschlossen werden!

Erzeugen der Netzwerkfreigabe

  • Wechseln Sie auf den Backup3CX
    • Erstellen Sie einen Ordner c:3CXdata
    • Geben Sie diesen Ordner im Netzwerk frei und erlauben “Jedem” “Mitbesitzer” -Rechte
    • Wechseln Sie anschließend in der Eigenschaften des Ordner 3CXData und öffnen den Reiter “Sicherheit”
    • Entfernen Sie alle nicht benötigten Benutzer bis auf “Administrator” und fügen Sie den User “3cxuser” mit vollen Rechten hinzu
  • Vom Master und Slave ist dieses nun erreichbar unter \backup3cx3CXdata

Schritt 3: Anpassung des Backup-Scripts auf dem 3CX Master Host

Diese Punkte müssen auf dem Master ausgeführt werden

  • Erzeugen Sie einen Ordner “c:3CX-Scripts”
  • Laden Sie die folgende ZIP-Datei herunter und entpacken Sie diese in den Ordner 3CX-Scripts

https://www.3cx.com/downloads/community/other/active-active/master.zip

  • Öffnen Sie die Datei “c:3CX-Scriptsbackup.bat” in einem Editor Ihrer wähl, ggf. Notpad++
  • In dem oberen Teil des Scripts finden Sie 4 Sektionen, die auf Ihre Umgebung angepasst werden müssen
    • Sektion 1
      Beschreibt die Verbindung auf den Backup3CX Computer um dieses als Netzwerklaufwerk in in das System einzubinden.
      Dazu passen Sie bitte die folgenden Parameter an:

      • StoragePath – spiegelt den UNC Pfad zu der Freigabe auf Backup3CX wieder (\backup3cx3cxdata) die unter Schritt 2 erzeugt worden ist. Um Probleme mit dem DNS Server auszuschließen ersetzen Sie den Wert “Backup3CX” mit der IP des Computers.
      • StorageUser – spiegelt den User weider, der in Schritt 2 erzeugt worden ist (3cxuser), mit dem der Host eine Verbindung auf das Backupsystem herstellen kann. Sollte der User ein Domain-User sein geben Sie den User als “domain3cxuser” ein!
      • StoragePass – ist die Variable die das Passwort des Benutzers “3cxuser” nutzt um sich an dem Backup3CX Computer zu authentifizieren.
    • Sektion 2
      Beschreibt wie das Script eine E-Mail als Report an Sie übermitteln kann. In dem Angefügtem Script wird keine Auth. am MailServer vorgenommen. Weitere Informationen wenn benötigt finden Sie in der Dokumentation von Bmail.

      • SMTPserver – ist der DNS Name oder IP des Hostes den Sie als Relay Mail System ansprechen können um E-Mail darüber zu versenden
      • SMTPport – ist der der Listening Port des Mailservers, default ist der Port 25 eingesetzt
      • SMTPfrom – ist die E-Mail Adresse von der Ihnen der Statusbericht zugeschickt wird
      • SMTPto – ist die E-Mail Adresse an die der Statusbericht gesendet wird
    • Sektion 3
      Beschreibt wie der Master eine Verbindung zu dem Slave Computer herstellen kann. Hierbei wird das SysInternals Programm PSexec verwendet, welches eine Remote-CMD auf dem Slave öffnet um das RestoreScript zu starten wenn das Backup auf dem Master abgeschlossen ist.

      • SlavePBX – ist die IP Adresse des Slave Computers, welche Sie unter Schritt 1 in den Benutzerdefinierten Parametern eingetragen haben. Um DNS Probleme auszuschliepen setzen Sie bitte die IP des Hostes und nicht den DNS Namen
      • SlaveUser – ist der Benutzer der auf dem Slave mit Adminrechten Operationen ausführen kann. Bei default ist dieses der gleiche Benutzer, der auch die Verbindung auf den Storage ausführt und zuvor unter Schritt 2 angelegt worden ist.
      • SlavePassword – ist das Admin-Rechte-Passwort des User (3cxuser)
    • Sektion 4
      Ist die Konvertierung des Datums in ein File-System-Schreibbares-Format. Das Script  bezieht sich bei default auf eine Konvertierung des Format US YYYY/MM/DD. Passen Sie die Werte ggf. in dem Script an um die Zuordnung passend zu treffen!

Schritt 4: Anpassung des Restore-Scripts auf dem 3CX Slave host

Diese Punkte müssen auf dem Slave ausgeführt werden

  • Erzeugen Sie einen Ordner “c:3CX-Scripts”
  • Laden Sie die folgende ZIP-Datei herunter und entpacken Sie diese in den Ordner 3CX-Scripts

http://downloads.3cx.com/downloads/community/other/active-active/slave.zip

  • Öffnen Sie die Datei “c:3CX-Scriptsrestore.bat” in einem Editor Ihrer Wahl, ggf. Notpad++
  • In dem oberen Teil des Scripts finden Sie 3 Sektionen, die auf Ihre Umgebung angepasst werden müssen
    • Sektion 1
      Beschreibt die Verbindung auf den Backup3CX Computer um dieses als Netzwerklaufwerk in in das System einzubinden.
      Dazu passen Sie bitte die folgenden Parameter an:

      • StoragePath – spiegelt den UNC Pfad zu der Freigabe auf Backup3CX wieder (\backup3cx3cxdata) die unter Schritt 2 erzeugt worden ist. Um Probleme mit dem DNS Server auszuschließen ersetzen Sie den Wert “Backup3CX” mit der IP des Computers.
      • StorageUser – spiegelt den User weider, der in Schritt 2 erzeugt worden ist (3cxuser), mit dem der Host eine Verbindung auf das Backupsystem herstellen kann. Sollte der User ein Domain-User sein geben Sie den User als “domain3cxuser” ein!
      • StoragePass – ist die Variable die das Passwort des Benutzers “3cxuser” nutzt um sich an dem Backup3CX Computer zu authentifizieren.
    • Sektion 2
      Beschreibt wie das Script eine E-Mail als Report an Sie übermitteln kann. In dem Angefügtem Script wird keine Auth. am MailServer vorgenommen. Weitere Informationen wenn benötigt finden Sie in der Dokumentation von Bmail.

      • SMTPserver – ist der DNS Name oder IP des Hostes den Sie als Relay Mail System ansprechen können um E-Mail darüber zu versenden
      • SMTPport – ist der der Listening Port des Mailservers, default ist der Port 25 eingesetzt
      • SMTPfrom – ist die E-Mail Adresse von der Ihnen der Statusbericht zugeschickt wird
      • SMTPto – ist die E-Mail Adresse an die der Statusbericht gesendet wird
    • Sektion 3
      Ist die Konvertierung des Datums in ein File-System-Schreibbares-Format. Das Script  bezieht sich bei default auf eine Konvertierung des Format US YYYY/MM/DD. Passen Sie die Werte ggf. in dem Script an um die Zuordnung passend zu treffen!

Schritt 5: Test der Synchronisation

Wechseln Sie auf den Master

  • Öffnen Sie den Ordner c:3cx_scripts
  • Starten Sie die Scriptdatei “backup.bat”
  • Der Master beginnt nun die folgenden Schritte zu durchlaufen:
    1. Verbindung auf das Backup-Medium auf Backup3CX
    2. Start des Backups des 3CX PS Master Systems
    3. Ermittlung der Zeit und Datum für einen Zeitstempel
    4. Übermittlung des Backupreports via E-mail
    5. Trennen des Backup-Medium
    6. RemoteCMD Verbindung auf den Slave (PSexec)
  • Folgende Schritte laufen nun auf dem Slave a:
    1. Verbindung auf das Backup-Medium auf Backup3CX
    2. Start des Restores des 3CX PS Master Systems auf dem Slavehost ohne Lizenzschlüssel des Masters
    3. Ermittlung der Zeit und Datum für einen Zeitstempel
    4. Umbenennen des Backups mit dem Zeitstempel zur Revisionssicherheit
    5. Übermittlung des Restorereports via E-mail
    6. Trennen des Backup-Medium
    7. Beenden des Scripts

Schritt 6: Implementation der Telefontemplates

Nun richten Sie die Telefone aus um im Falle eines Failovers auf den SlaveHost zu wechseln. Beachten Sie das nicht alle Telefone eine solche Funktionalität bieten. Sie können die Folgenden Template nutzen um die getesteten Telefone mit eine Active/Active Lösung zuverbinden

  • Für Snom laden Sie das folgende Template in das 3CX Phone System
    http://downloads.3cx.com/downloads/community/other/active-active/snom-ha.ph.xml
  • Für Polycom laden Sie das folgende Template in das 3CX Phone System
    http://downloads.3cx.com/downloads/community/other/active-active/polycom-ha.ph.xml
  • Kopieren Sie die passende Datei in das Verzeichnis “c:programdata3cxdatahttptemplatesphones”

Schritt 7a: Implementation von PSTN Gateways

Wenn Sie eine Beronet Berofix verwenden:

Öffnen Sie die bestehende Konfiguration auf dem PSTN Gateway und erweitern Sie diese um den Failover Host Slave

  • Öffnen Sie das Webinterface der Berofix und navigieren Sie auf “SIP -> SIP”
  • Legen Sie einen neuen SIP Trunk an, der auf die IP des Slave Systems zeigt, nutzen Sie als Benutzernamen und Passwort die gleichen Einstellungen wie zu dem durch den Assistenten angelegten Trunk. In diesem Beispiel Stefan-OUT und Stefan-FT-OUT
    Hochverfügbarkeitssystem
  • Öffnen Sie anschließend die Konfiguration des SIP Trunks “Stefan-OUT” und konfigurieren Sie den Failover Trunk und den TimeOut bis der Anruf an den Slave geroutet werden soll.
    Hochverfügbarkeitssystem

Wenn Sie ein Patton 4554 oder 4638 benutzen:

  • Laden Sie das Template für Patton HA in das 3CX Phone System Master

https://www.3cx.com/downloads/community/other/active-active/patton-failover.gw.zip

  • Kopieren Sie das Template nach “c:programdata3cxdatahttptemplatesgateway”
  • Erzeugen Sie ein neues PSTN Gateway mittels des HA Templates für Patton
  • Nachdem Sie die Schritte des Assistenten durchgeführt haben, Synchronisieren Sie die Einstellungen mittels Script vom Master auf den Slave host
  • Anschließend laden Sie die Konfiguration auf das Patton Gerät und “reloaden” das Gerät

Schritt 7b: Redundanz eines Beronet Gateways

Dieser Schritt ist Optional.
Bei einer Hochverfügbarkeit ist es wichtig alle “Singel Point of Failture” zu beseitigen die von mehren Endpunkten benötigt werden. Dazu empfiehlt es sich auch eine Redundanz des PSTN Gateways herzustellen. Sollten Sie 2 Gateways der Firma Beronet verwenden, können Sie diese durch eine automatische Amtsleitungsumschaltung in ein redundantes Array von PSTN Gateways wandeln. Hierzu benötigen Sie zusätzlich eine Beronet BeroFos.

  • Erzeugen Sie im 3CX Master ein 2tes Beronet PSTN Gateway welches eine andere statische IP besitzt, als das schon verwendete Gateway. Folgen Sie bei der Einrichtung den allgemein gültigen Anweisungen zur Einrichtung eines Beronet BeroFix
    Hochverfügbarkeitssystem
  • Erweitern Sie nun die “Ausgehenden Regeln” des 3CXPhone Systems um das neue Gateway “bero 2” als Route 2
    Hochverfügbarkeitssystem
  • Erweitern Sie die Konfiguration des “bero 2” mit den Einstellungen die Sie unter Punkt 7a) für “bero 1” durchgeführt haben
  • Um die automatische Umschaltung der Amtsleitungen auf das Entsprechende Berofix durchzuführen entnehmen Sie bitte der Beronet Dokumentation
    beroNet_Failover

Hochverfügbarkeitssystem

Wiederherstellung:

Nach Feststellung, dass der Master Server  nicht mehr zur Verfügung steht starten die Recovery-Maßnahmen automatisch

  1. Das Endgerät wird in max. 60 Sekunden nach “Fehler im Master” direkt den Slave Host als Failover nutzen bis der Master wieder funktioniert.
  2. Das Inboundrouting wird mit 5 Sekunden Verzögerung an den Slave-Host übertragen für einen Zeitraum von 60 Sekunden und dann direkt zugestellt.
  3. Sollte ein Gateway ausfallen für Master oder Slave ist ein Anrufaufbau mit einer Verzögerung von 30 Sekunden für 60 Sekunden zu rechen bis Route 2 genutzt wird und der Trunk in den Status rot übergeht. Zusätzlich ist es abhändig von den Einstellungen die Sie im “Watchdog” des Berofos eingetragen haben, wann ein Gateway als “Fehlerhaft” abgeschaltet wird.

Der Master Server kann nun vom Netz genommen werden und wiederhergestellt werden und aus einem Backup des Slave rekonstruiert werden. Auf dem Slave Host führen Sie im Falle des Fehlers am Ende des Abends das Full-Restore durch um die Call History Daten wieder herzustellen. Die Daten von max 24h sind nicht wiederherstellbar.

Im Fall des Fallback auf das Slave System wird kein BLF und MWI an den Telefonen angezeigt!

Zusammenfassung:

Geschätzte Downtime: 60 Sekunden eingeschränkte Telefonie
Zusätzliche Kosten: Hardware für Slave System, 2te 3CX Lizenz für Slave Server
Verlust: max. 24h Call History und Recordings

Anmerkung: zZ ist mit keinen supportetem VoIP Provider eine solche doppel Aktiv Aktiv Verbindung möglich. Mit Aussichten auf Q1 2012 sollten wir hier Ihnen etwas anbieten können. Externe Remote Nebenstellen werden sich auf grund des statischen NATs nicht mehr anmelden können.

Wichtige Anmerkung: Alle Schritte müssen intensiv getestet werden bevor Sie diese Produktiv einsetzen!

Weitere Downloads