FreePBX ist Opensource Telefonanlage. Sie funktioniert auf Basis des Zusammenspiels der freien Telefonanlage Asterisk und einer grafischen Web-Oberfläche. FreePBX ist also eine Telefonanlage auf Linux-Basis. Die Software hebt den „Mangel“ von Asterisk auf, dass Asterisk selbst keine Oberfläche zur Konfiguration für den IT-Administrator bereits stellt. In dem nachfolgenden Beitrag beantworten wir einige der am häufigsten gestellten Fragen zu FreePBX.

Web-Oberfläche der FreePBX Telefonanlage

Web-Oberfläche der FreePBX Telefonanlage

Auf welcher Hardware läuft FreePBX?

Der FreePBX-Installer  basiert auf der Linux Distribution Centos 7. Daher kommt jede Hardware oder virtuelle Maschine in Frage, auf der man Centos 7 installieren und betreiben kann. In aller Regel sind das PCs oder Server mit mindestens 1-2 Kernen und mindestens 2 GB Hauptspeicher.

Theoretisch kann eine FreePBX Telefonanlage auch auf sehr „schwacher“ Hardware laufen – etwa einem Raspberry PI. Wir empfehlen dennoch im Vorfeld darauf zu achten, dass die Hardware eher aktuellen Anforderungen genügt. Schließlich soll die einmal installierte Telefonanlage nach der Konfiguration in der Regel mehrere Jahre problemlos laufen.

Kann man die Telefonanlage auch virtuell betreiben?

Sofern man keine physischen Kabel wie etwa einen ISDN – Anschluss an den FreePBX Server anschließen muss, kann die FreePBX auch als virtueller Server installiert werden. Dadurch ergibt sich die Möglichkeit, die freie Telefonanlage etwa in einer privaten Cloud oder im heimischen Rechenzentrum zu betreiben.

Wie installiert man eine FreePBX Telefonanlage?

Die Installation einer FreePBX Telefonanlage erfolgt über ein fertiges ISO-Image, das man im Internet herunter laden kann. Diese Datei wird auf einen USB-Stick oder einen DVD-Rohling übertragen. Von diesem bootet man dann die physische oder virtuelle Hardware. Mit dem Image wird ein Installer mitgeliefert, der zuerst ein Centos 7 installiert und anschließend alle Komponenten der Asterisk Telefonanlage sowie die Weboberfläche von FreePBX bereit stellt.

Die eigentliche Installation dauert je nach eingesetzter Hardware zwischen 20 und 60 Minuten.

Welche Funktionen bringt die FreePBX Telefonanlage mit?

Vom Funktionsumfang her kann es die FreePBX mittlerweile mit ausgewachsenen und in der Regel sehr viel teureren Telefon-Anlagen der namhaften Hersteller von TK-Anlagen wie Mitel/Aastra, Agfeo, Auerswald, Cisco, Funkwerk oder Siemens aufnehmen. Die folgenden Funktionen sind in der Telefon-Anlage im Standard bereits enthalten.

  • Anrufe tätigen / annehmen
  • Bis zu 5.000 Nebenstellen (Telefonapparate) einrichten
  • Intercom / Direktruf
  • Fax-Anschlüsse
  • Anrufgruppen
  • Music on Hold
  • Queues / Warteschlangen
  • Voicemail/Sprachboxen (inkl. Weiterleitung an E-Mail)
  • Follow-Me Funktion
  • IVR (Interactive Voice Response, dt. Sprachansagen)
  • ACD (Automatic Call Distribution)
  • Konferenzen mit mehr als 3 Teilnehmern durch Konferenz-Räume
  • Zeitgesteuerte Abläufe und Erreichbarkeit
  • CTI über 3rd Party Anbieter

Aufgrund der IVR und ACD Funktionen kann die FreePBX auch in Call-Centern eingesetzt werden. Oder anders herum: Selbst mittelständische Firmen können mit Asterisk Funktionen wie IVR (Sprachansagen), ACD oder Queues(Warteschlangen) nutzen um etwa die Erreichbarkeit ihrer Support- oder Vertriebsteams zu verbessern.

Wie telefoniert man mit einer VoiP Telefonanlage?

Um mit einer FreePBX intern zu telefonieren, benötigen Sie entweder zwei (oder mehr) angeschlossene IP-Telefone bzw. VOIP-Telefone, die vom PC aus gestartet werden.

Da man mit von den Telefonapparaten an einer Telefonanlage in der Regel auch nach extern telefonieren möchte, benötigen Sie für die FreePBX wie für jede andere Telefonanlage auch eine so genannte Amtsleitung. Das kann sowohl ein bestehender ISDN-Anschluss oder ein so genannter SIP-Trunk sein.

Hinweis: Ein SIP-Trunk ist eine Amtsleitung, die Ihnen ein Telefon-Anbieter über das Internet bereitstellt. Es entfällt dabei das früher notwendige Kabel zur Telefonanlage. Stattdessen wird ihr bestehender Internet-Anschluss genutzt.

Tipp: Da die Telekom sowie die anderen etablierten Anbieter von Telefonleitungen bis 2021 ISDN abschalten werden, sollten Sie bei der Umstellung auf eine Asterisk Telefonanlage ebenfalls den Umstieg auf eine SIP-Amtsleitung mit in Angriff nehmen. Der eigentliche Wechsel eines Telefon-Anbieters ist mittlerweile in Deutschland relativ einfach möglich.

Welche Telefone funktionieren an einer FreePBX?

An der FreePBX Telefonanlage können Sie prinzipiell jedes SIP-fähige Telefon betreiben. Wichtig dabei ist, daß es sich um ein Voice-Over-IP Telefonapparat handelt.

Bei unseren Tests haben wir unterschiedliche Anbieter wie Aastra, Snom, Grandstream und Yealink an der Asterisk Telefonanlage getestet. Nach unseren Erfahrungen funktionieren die Telefonapparate von Yealink am besten um Zusammenspiel mit der FreePBX.

Hinweis: Die Biteno GmbH setzt selbst eine FreePBX als Telefonanlage ein und verwendet dabei Telefone von Yealink. Daneben setzen wir für Kollegen im Home-Office die Soft-Clients (PC-Telefone) Bria5 von Counterpath ein.

Wer steckt hinter dem Projekt?

FreePBX ist ein so genanntes OpenSource Projekt. Dabei entwickeln unterschiedliche Software-Programmierer an einer Software. Auf diese Weise ist etwa die Asterisk Telefonanlage für Linux entstanden. Seit 2004 steht die US-amerikanische Firma Sangoma als Sponsor hinter dem Projekt.

Das Unternehmen Sangoma produziert in erster Linie Telefonapparate und stellt außerdem Hardware für Telefonanlage wie FreePBX her. Von Sangoma kann man bei Bedarf Support zu FreePBX einkaufen und natürlich auch die entsprechende Hardware erwerben.

Darüber hinaus bietet Sangoma kostenpflichtige Module für die Telefonanlage an. Diese können Betreiber einer FreePBX bei Bedarf kostenpflichtig erwerben. Beispiele für kostenpflichtige Erweiterungen sind etwa der „Endpoint Manager“ oder die grafische Bearbeitung von IVR.

Ist die FreePBX wirklich kostenlos?

FreePBX kann man genauso wie Asterisk kostenfrei nutzen – es werden also keine Lizenzgebühren fällig. Selbstverständlich muss die TK-Anlage auf einer Hardware oder einem virtuellen Server laufen. Für diese Geräte fallend in Regel Kosten an. Ebenso muss die Telefonanlage einmalig eingerichtet, regelmäßig gewartet und administriert werden. Diese Arbeiten erfordern in der Regel Zeit oder einen IT-Dienstleister, der diese Aufgaben übernimmt

Hinweis: Die Biteno GmbH vertreibt und installiert für Kunden die FreePBX Telefonanlage. Wenn Sie dazu ein verbindliches Angebot erhalten möchten, dann nehmen Sie bitte mit uns Kontakt auf. Wie beraten Sie gerne.

Weitere Fragen und Antworten zu FreePBX

FreePBX bzw. Asterisk basiert auf Voice Over IP

FreePBX bzw. Asterisk basiert auf Voice Over IP

Im folgenden Abschnitt haben wir die Fragen zusammen getragen, die uns von Interessenten und Kunden immer wieder zum Thema Asterisk und Voice-Over-IP Telefonie gestellt werden:

SIP oder ISDN – was funktioniert besser an der FreePBX?

Sowohl ISDN-Karten als auch SIP-Trunks funktionieren mit Asterisk. Da die gesamte Telefonanlage auf Voice-Over-IP ausgelegt ist, empfehlen wir die Verwendung eines SIP-Anbieters bzw. eine SIP-Trunks.

Mit welchem SIP-Anbieter funktioniert die FreePBX?

Um einen SIP-Trunk an der Asterisk anzuschließen, benötigen Sie den Benutzernamen, das Passwort und die Server-Adresse (in der Regel eine IP-Adresse) des SIP-Anbieters. Insofern können Sie praktisch jeden deutschen SIP-Anbieter auf der FreePBX nutzen.

Kann ich auch ausländische SIP-Anbieter nutzen?

Technisch gesehen, können Sie jeden SIP-Anbieter der Welt, dessen Zugangsdaten Sie haben, auf ihrer FreePBX eintragen und nutzen.

Hinweis: Bitte beachten Sie, daß es ggf. rechtliche Einschränkungen gibt, ob Sie einen ausländischen SIP-Provider nutzen dürfen. Deutsche SIP-Anbieter müssen in der Regel vor der Bereitstellung eines Zugangs samt Rufnummer ihre Adresse verifizieren, damit Sie die für Ihre Vorwahl passenden Rufnummern bzw. einen Rufnummernblock in ihrem Ortsnetz erhalten.

Bitte bedenken Sie dabei auch, dass nur ein SIP-Anbieter aus Deutschland die Notfallrufnummern 110 und 112 an das deutsche Telefonnetz korrekt weiter leitet.

Kann man mehrere SIP-Anschlüsse bzw. Leitungen an der FreePBX einrichten?

Ja. Sie können mehr als einen SIP-Trunk an der Telefonanlage anschließen.

Gibt es für FreePBX eine App?

Vom Hersteller bzw. seitens des OpenSource Projekts selbst gibt es keine eigene App. Sie können aber auf ihrem Handy jede andere SIP-App nutzen um sich auf ihre Asterisk Telefonanlage zu verbinden.

Wie kann ich mein Handy mit der FreePBX nutzen

Um Ihr Handy mit ihrer FreePBX zu nutzen benötigen Sie ein SIP-App auf ihrem Handy. Auf den meisten Android-Smartphones ist eine SIP-Anwendung bereits vorinstalliert. Um sie zu nutzen müssen Sie dort ihre Zugangsdaten der Telefonanlage eintragen. Außerdem muss ihre TK-Anlage dazu im Internet erreichbar sein.

Wie viele Endgeräte / Telefone kann man maximal an die TK-Anlage anschließen

Die FreePBX ist für bis zu 5.000 Endgeräte ausgelegt, sofern die eingesetzte Hardware der Telefonanlage entsprechend stark dimensioniert ist.

Nach unseren Erfahrungen wird die Asterisk Telefonanlage am meisten bei kleineren und mittelständischen Kunden bis 500 Telefonapparaten eingesetzt.

Hat die FreePBX eine API?

Ja die FreePBX bringt von Haus aus eine Restful API mit. Mehr dazu hier: https://wiki.freepbx.org/display/FPG/API

Wie kann ich CTI-Funktionen mit der FreePBX nutzen?

Um etwa Rufnummern vom PC an Ihr Telefon zu übertragen, benötigen Sie in der Regel eine Software. Diese nennt sich CTI (Computer Telephony Integration). FreePBX bringt selbst keine CTI-Software mit. Diese muss über Dritt-Anbieter erworben werden.

Hinweis: Da wir selbst auch nur ungern Telefonnummern abtippen, nutzen die Mitarbeiter der Biteno GmbH von Anfang an eine externe CTI zusammen mit der FreePBX. Wir beraten Sie gerne dazu, wie das funktioniert.

Kann ich meine bestehenden ISDN-Telefonnummern zu einem SIP-Anbieter mitnehmen?

Ja. In Deutschland gibt es 2002 einen gesetzlichen Anspruch auf die Mitnahme ihrer Telefonnummern sofern Sie im selben Ortsnetz bleiben.

Kann man die FreePBX auch ohne kostenpflichtige Module betreiben?

Ja natürlich. Die FreePBX ist nach der Erst-Konfiguration auch ohne Erweiterungen einsetzbar. Wir empfehlen dennoch die Lizenzierung des „Endpoint Managers“, da man mit diesem Zusatzmodul sehr viel leichter unterschiedliche Telefone verwalten kann

Kann man FreePBX auch auf Debian, SuSE, Ubuntu installieren?

Der Standard-Installer von FreePBX basiert auf Centos 7. Wer also möglichst schnell zu einer FreePBX Anlage kommen möchte, der tut sich mit der autoamtischen Installation von Centos 7 und FreePBX am leichtesten.

In der Hilfe-Sektion von FreePBX sind weitere Anleitungen enthalten wie man die FreePBX Software auch auf anderen Linux Distributionen wie Ubuntu oder Debian installieren kann.

Wo und wie kann ich die FreePBX kaufen?

Die FreePBX an sich brauchen Sie nicht zu kaufen – die Software selbst ist Lizenzfrei da sie OpenSource ist. Es empfiehlt sich aber die FreePBX zusammen mit einer passenden Hardware für die Telefonanlage von einem Dienstleister zu erwerben, der in der Regel auch die Einrichtung und Konfiguration der Anlage übernimmt.

Woher bekommt man Support zu FreePBX?

Neben dem Wiki von FreePBX gibt es eine große Community von mehr als 2 Millionen FreePBX Anwendern. Hier kann man kostenfrei Fragen stellen, die meistens innerhalb von 2-3 Tagen beantwortet werden.

Kommerziellen und in der Regel schnelleren Support erhält man über die freien Anbieter bzw. Integratoren oder über den „Hersteller“ Sangoma.

Woher wissen Sie all das ?

Wir beherzigen die Devise, dass wir nur empfehlen was wie selbst getestet haben und idealerweise selbst einsetzen.

Wir – die Biteno GmbH – nutzen die FreePBX selbst und haben die Telefonanlage auf Herz und Nieren geprüft. Seit der Umstellung von unserer alten Aastra/Mitel Anlage hin zu ASterisk  telefonieren mehr als 30 Mitarbeiter täglich mit der Telefonanlage.

Weitere Informationen und Quellen

Hier finden Sie weiterführende Informationen zur FreePBX Telefonanlage

 

Einleitung

In diesem Tutorial zeige ich wie man ein neues Yealink SIP-Telefon an einer FreePBX-Telefonanlage anschließt. Damit an der FreePBX Telefonanlage ein neues physisches Telefon an einer neuen Nebenstelle (interne Rufnummer) funktioniert, muss folgendes eingerichtet werden:

  • Neue Nebenstelle / Extension anlegen (Dabei Rufnummer vergeben)
  • Telefon anschließend und static Mapping im DHCP der FW eintragen (optional), MAC Adresse und Telefon-Typ notieren
  • Template für Endgerät im Extension Manager kopieren und anpassen (Tastenbelegung)
  • Im Endpoint Manager das physische Gerät mit der Extension verbinden.
  • Telefon booten
  • Telefon anpassen (Sprache, Labels)
  • Inbound-Route einrichten, Anrufe von extern zu erhalten
  • Userzugang zum User-Controll Panel von FreePBX einrichten

Außerdem ist es notwendig, daß beim DHCP Server eine tftp-Option hinterlegt ist.

Nebenstelle / Nummer anlegen

Der schnellste Weg um eine neue Nebenstelle/Nummer auf der FreePBX anzulegen ist:

Applications -> Extensions -> Quick Create Extension

Dazu wird benötigt:

  • Nummer / Nebenstelle
  • Name des Mitarbeiters
  • Mail des Mitarbeiters
  • Voicemail ja / nein
  • Follow me /ja nein

Von der Freepbx werden selbständig ein Benutzer und ein Passwort und ein SIP-Account für den Benutzer (identisch mit der Nummer) angelegt.

Hinweis: Falls der Benutzer eine abweichende Sprache und/oder eine abweichende Zeitzone eingestellt haben soll, so geht das direkt in den Einstellungen.

FreePBX: Neue Nebenstelle anlegen

FreePBX: Neue Nebenstelle anlegen

Um eine neue Nebenstelle anzulegen, klicken Sie auf – (1) Applications -> Extension (2) und danach auf „ Quick Create Extension“ (3).

 

 

 

 

 

 

 

 

In der sich nun öffnenden Maske geben Sie folgendes ein:

FreePBX: Quick create Extension (Schritt 1)

FreePBX: Quick create Extension (Schritt 1)

Type: PJSIP (1)

Extension Nr: 2xx (Nebenstellen-Nr)(2)

Display Name: Name des Mitarbeiters

Outbound Caller ID: Die externe Rufnummer, die bei Anrufen nach extern übertragen werden soll im Format

„0049711234335xx“ <0049711234335xx>

Ersetzen Sie xx durch die beiden letzten Nummern der Nebenstelle. (4)

Bei (5) Email Adress tragen Sie die E-Mail des Anwenders ein.

Klicken Sie anschließend auf Next (6).

Im anschließenden zweiten Teil der Maske stellen Sie die Zeilen wie folgt ein:

FreePBX: Nebenstelle anlegen (Schritt2)

FreePBX: Nebenstelle anlegen (Schritt2)

Enable FindMe:        „Yes“ (1)

Create User:           Yes (2)

Enable VoiceMail:     No (3)

Klicken Sie anschließend auf Finish (4).

 

Endgeräte

Damit ein SIP Endgerät mit der TK Anlage kommunizieren kann, benötigt es drei Dinge:

  • IP Der TK Anlage
  • SIP-Usernamen (meistens identisch mit der Nebenstellen-Nummer)
  • Ein SIP Password

Ein Endgerät wird anhand seiner MAC-Adresse einer Nebenstelle zugewiesen. Bevor das passieren kann, wird für den Hardware-Typ des Endgeräts ein Template benötigt.

In dem Template werden die Einstellungen des SIP-Accounts des Benutzers sowie die individuellen Tasten vorgenommen.

 

Endgerät anschließen

Damit ein Telefon funktioniert, muss es an einen Port an einem PoE-fähigen Switch angeschlossen werden. Dieser Port muss ausserdem auf VLAN 4 (untagged) eingerichtet sein.

Hinweis: Bei Yealink Telefonen ist nach ca 2-3 Minuten das Telefon online. Sobald das Telefon „an“ ist, kann man mit dem „OK“ Knopf in die Übersicht des Telefons gelangen. In der ersten Zeile steht dann die aktuelle IP-Adresse.

Static Mapping im DHCP eintragen (Optional)

Menü oben -> Status -> DHCP Leases -> … sortieren Sie die erste Spalte „IP Adresses“

Suchen Sie nach der IP-Adresse des Telefons. Klicken Sie auf das linke der beiden „+“-Symbole.

In der folgenden Maske tragen Sie bei IP-Adresse die statische IP-Adresse des Telefons bzw. der Nebenstelle ein. Bei Description ergänzen Sie den Namen des Mitarbeiters.

Klicken Sie anschließend ganz unten auf den blauen Button „Save“ und danach oben auf die Schaltfläche „Apply Changes“.

Hinweis: Bitte tragen Sie die IP nicht statisch direkt im Telefon ein.

 

Booten Sie nun das Telefon neu und kontrollieren Sie ob die in der pfsense eingebebene IP-Adresse beim Telefon ankommt.

Wichtig: Bitte notieren Sie sich aus dem Webinterface der Firewall die MAC_Adresse des Telefons.

Template für die Nebenstelle kopieren

FreePBX: Endpoint Manager - Temaplate für Yealink

FreePBX: Endpoint Manager – Temaplate für Yealink

Auf der freepbx.domain.local gehen Sie im Menü zu -> Settings -> Endpoint Manager.

Es erscheint rechts ein kleiner „Zipfel“ (das so genannte „Burger Menü“) (1) – nach einem Klick auf (1) erscheint das vollständige Menü. Klicken Sie nun auf (2) Yealink.

 

 

Hier sehen Sie nun alle Vorlagen und bereits  an einzelne Telefone zugewiesene Templates der bestehenden Telefone zu existierenden Rufnummern/Endgeräten.

Für jeden Telefontyp und für jedes organisatorische Team der Biteno GmbH gibt es ein Template, das Sie jetzt für das neue Telefon kopieren.

Klicken Sie dazu auf die Zeile mit dem Template, das sie kopieren möchten. (Hier T46S und Vertrieb).

FreePBX: Template kopieren

FreePBX: Template kopieren

Klicken Sie anschließend im oberen Teil auf „Duplicate“ (1). Es öffnet sich eine Maske, in der Sie einen Namen für ihre Vorlage eingeben müssen (2).

Bitte verwenden Sie die Namens-Konvention:

Yealink-<Modell>-<NebenstellenNr>

Bsp.: yealink-t46s-227

 

 

 

 

Template im Endpoint Manager dem Telefonapparat zuweisen

Um nun dieses neue Template dem physischen Telefon zuzuweisen, klicken Sie rechts auf das „Burger Menu“ (1) und anschließend auf (2) Extension Mapping. In der sich öffnenden Seite klicken Sie links auf „Add Extension“ (3).

FreePBX: Zuweisung Nebenstelle zum Apparat

FreePBX: Zuweisung Nebenstelle zum Apparat

Scrollen Sie nun an das Ende der Liste (ganz unten).

FreePBX: Zuweisung des Apparates zum Temaplate

FreePBX: Zuweisung des Apparates zum Temaplate

Im ersten Scrolldown (1) wählen Sie die neue Nebenstelle aus. Darunter (2) kommt immer „Account1“. Beim Hersteller (3) wählen Sie Yealink und darunter (4) tragen Sie die MAC-Adresse ein. Bei (5) wählen Sie das weiter oben erstellte Template aus und darunter (6) den technischen Typ des Telefons (T42S oder T64S).

Ganz am Ende der Seite wählen Sie bei (1) „Save, Rebuild …“ und klicken anschließend (2) auf „Use Selected“.

FreePBX: Zuordnung abspeichern und neu starten

FreePBX: Zuordnung abspeichern und neu starten

Wichtig: Booten Sie das Telefon nun neu.

Nach dem Neustart werden dem Telefon nun automatisch ein neues Boot-Image sowie seine Konfiguration übergeben. Dieser Vorgang dauert 3-5 Minuten. Danach startet das Telefon von alleine neu.

Hinweis: An manchen Telefonen dauerte es 1-2 Minuten bis eine IP korrekt zugewiesen wurde. Bitte haben Sie dabei etwas Geduld.

Telefon testen

Das neue Telefon ist nun intern unter seiner Durchwahl erreichbar. Bitte kontrollieren Sie dies durch einen Anruf auf der neuen Durchwahl.

FreePBX: Inbound Route anlegen

FreePBX: Inbound Route anlegen

Inbound Route anlegen

Damit die Nebenstelle auch von extern unter ihrer externen Rufnummer 0711-234335xx erreichbar ist, muss noch folgendes eingerichtet werden:

Menü oben (1) Connectivity -> Inbound Routes (2) -> „+ Add Inbound Route“

Die Inbound-Route für das Yealink Telefon

Die Inbound-Route für das Yealink Telefon

Im Feld Description (1) tragen Sie ein Inbound-2xx, wobei 2xx die Durchwahl der Rufnummer ist, die Sie gerade einrichten.

Bei DID Number (2) tragen Sie die offizielle Rufnummer mit Vorwahl ohne führende Nullen ein.

Bsp.:  4971123433527

 

Bei Set Destination (3) wählen Sie zunächst Extensions (3) und danach die Nebenstelle, an die die Anrufe durchgestellt werden sollen.

Hier im Beispiel die neu angelegte Durchwahl 227.

Klicken Sie anschließend unten rechts auf Submit und danach oben rechts auf den roten Button „Apply Config“ (nicht abgebildet). Sobald die Freepbx ihre Konfiguration neu geladen hat, ist die Nebenstelle extern erreichbar.

Telefon anpassen

Damit der Anwender bzw. Nutzer des Telefons mit seinem Gerät zurechtkommt, bietet es sich an die Sprache des Menüs auf Deutsch um zu stellen. Umstellen der Sprache auf Deutsch und des Zeitformats auf 24 Stunden bzw. Datumsformat DD.MM.YY geht via Webinterfaces des Telefons

Yealink T46: Bereite Labels einstellen

Yealink T46: Bereite Labels einstellen

Beim Yealink Typ T46 können die Labels für die Tasten verbreitert werden: -> Telefon-Webinterface > DSSkey -> Label-Länge von -> Default auf „Erweiterung“ stellen. Danach gehen die Labels über die Hälfte des Bildschirms.

 

Benutzer-Zugang zum UCP (User Control Panel)

Während der Anlage der Nebenstelle/Durchwahl wurde bereits automatisch ein Benutzer mit dem identischen Namen wie die Nebenstelle (z.B. 227) angelegt. Allerdings weiß der Anwender noch nichts davon und kann sich daher nicht anmelden.

Es fehlt ebenfalls noch die Verbindung zwischen diesem User und dem Telefon.

 

Um dem die Zuordnung des Telefons zum Benutzer vorzunehmen und dem Anwender  die Zugangsdaten automatisiert zuzusenden, klicken Sie auf

Admin -> User Management und anschließend rechts aussen auf das Bearbeiten Symbol (Stift)

FreePBX: Benutzer bearbeiten

FreePBX: Benutzer bearbeiten

Klicken Sie nun auf den Reiter UCP (1) und danach weiter unten zunächst auf Endpoint Manager (2). Im Feld Endpoint Access (3) wählen Sie mit der Maus die angelegte Nummer aus. (hier 227).

FreePBX: Extension bearbeiten

FreePBX: Extension bearbeiten

Sofern der Benutzer sein FollowMe selbst bearbeiten darf, wiederholen Sie den Schritt mit dem Reiter „FindmeFollow“ (1) und wählen bei „Allowed Extensions“ (2) wieder die Durchwahl aus, die vom Anwender selbst bearbeitet werden darf.

FreePBX: FindMe/FollowMe bearbeiten

FreePBX: FindMe/FollowMe bearbeiten

Gehen Sie nun zurück in den Reiter „Login Details“ (1) und vergeben Sie im Feld Password (2) ein neues willkürliches Passwort. Es sollte mindestens 10 Zeichen lang sein und sowohl Zahlen als auch Groß- und Kleinbuchstaben enthalten.

FreePBX: Passwort für Anwender eintragen

FreePBX: Passwort für Anwender eintragen

Einen Generator für zufällige Passwörter finden Sie hier:

https://www.gaijin.at/de/tools/password-generator

FreePBX: Passwort per Mail an Benutzer senden

FreePBX: Passwort per Mail an Benutzer senden

Klicken Sie nun unten rechts auf „Submit & Send Email to User“. Der Anwender bekommt darauf hin eine Mail mit seinen Zugangsdaten zugeschickt.

 

FreePBX: Konfiguration speichern und neu laden

FreePBX: Konfiguration speichern und neu laden

Wichtig: Bitte klicken Sie möglichst bald danach auf „Apply Config“ oben rechts, damit der Zugang für den Benutzer auch aktiv wird. Sonst bekommt der Anwender die Mail und kann sich nicht anmelden.

 

 

Der Inhalt der Mail an den Benutzer sieht so aus:

Hallo ${fname},

############

Herzlichen Glückwunsch !

Ihr  Account für die Telefonanlage wurde erstellt oder geändert. Sie können ihn mit den unten stehenden Zugangsdaten benutzen:

Username: ${username}

Passwort: ${password}

Um sich anzumelden verwenden Sie bitte die folgende URL:

 

http://freepbx.domain.local/ucp

 

Falls Sie Fragen dazu haben, wenden Sie sich bitte an Ihren System-Administrator.

 

Mit freundlichen Grüßen,

Das Support-Team der XYZ GmbH

Hinweis: Die Mail-Vorlage ist unter Admin -> User Management -> Settings abänderbar.

MySQL ist ein relationales Datenbank-Management-System, das auf der Structured Query Language (SQL) basiert. Das Datenbank-System ist Open-Source-basiert und mit nahezu sämtlichen Betriebssystem-Plattformen kompatibel. Sie können das System daher unter Windows, Linux, Unix und einigen weiteren Betriebssystemen nutzen. Die Anwendungsmöglichkeiten MySQLs sind sehr vielseitig, doch findet es überwiegend Einsatz in Webseiten, Online-Publikationen sowie verschiedenen internetbasierten Anwendungen.

Überblick und Allgemeines zu MySQL

Die Abkürzung „MySQL“ setzt sich aus den Komponenten „My“ und „SQL“ zusammen. „My“ bezeichnet dabei den Vornamen der Tochter des Mitentwicklers des Datenbank-Systems Michael Widenius. SQL beschreibt die Structured Query Language, eine Datenbank-Abfrage-Sprache, die der Definition relationaler Datenbankstrukturen dient. SQL findet auch Einsatz zur Bearbeitung und für Abfragen von Datenbeständen, die auf diesen Datenbanken basieren.

Als Datenbanksprache baut SQL auf der relationalen Algebra auf. Die Syntax der Sprache SQL orientiert sich semantisch an der englischen Umgangssprache. Die Sprache ist standardisiert durch ein gemeinsames Gremium von ISO und IEC sowie unter Kooperation mit nationalen Normungsgremien (darunter DIN).

Im Internet ist MySQL eines der am häufigsten verwendeten Datenbank-Systeme. In der Generierung dynamischer Webseiten sowie Anwendungen spielt MySQL daher eine wichtige Rolle. Zahlreiche CMS (Content-Management-Systeme) bedienen sich der Technik des Datenbank-Systems, darunter TYPO3 sowie WordPress.

Als Datenbank-System zeichnet sich die Open-Source-Software insbesondere dadurch aus, besonders große Datenmengen schnell verarbeiten zu können. Die hohe Performance kommt unter anderem durch die Art der Datenspeicherung zustande. Mit MySQL werden Daten in einer Art und Weise gespeichert, dass sie einen möglichst geringen Speicherplatz beanspruchen.

SQL und Abfrage-Tools für MySQL

Das Datenbank-System von MySQL lässt sich über die Datenbanksprache SQL (structured query language) ansteuern. MySQL verfügt über keine eigenständige grafische Oberfläche, doch finden Sie verschiedene externe Programme, mit denen sich eine solche realisieren lässt. Sowohl kostenlose als auch kommerzielle Programme ermöglichen eine grafische Darstellung zur Bedienung und Administration des Datenbank-System. Beispiele hierfür sind die Anwendung phpMyAdmin oder die von Oracle heraus gebrachte MySQL Workbench.

MySQL gilt mittlerweile als sehr ausgereift, sicher und vor allem als stabil. Das flexible Datenbank-System ist zudem mit zahlreichen Schnittstellen zu unterschiedlichen Anwendungen ausgestattet und somit weithin kompatibel. Ebenso ist die Bedienung in zahlreichen Sprachen möglich. Auch gilt die Bedienung des Datenbank-Systems als vergleichsweise einfach und selbsterklärend.

Geschichte und Entwicklung MySQL

Ursprünglich begann die Entwicklung des DBMS als Open-Source-Projekt im Jahr 1994. Das schwedische Unternehmen MySQL AB stand unter der Leitung der Entwickler Michael Widenius und David Axmark. Die erste Veröffentlichung erschien im Jahr 1997. Anfang des Jahres 2008 übernahm dann Sun Microsystems das Unternehmen. Sun Microsystems führte die Entwicklung von MySQL fort, bevor noch im gleichen Jahr die Veröffentlichung der Version 5.0 erfolgte. Im Jahr 2010 übernahm Oracle schließlich Sun Microsystems wodurch MySQL zum Datenbankriesen Oracle „wanderte“. Da Oracle im Bereich der kommerziellen Datenbanken neben Microsoft der Haupt-Wettbewerber von MySQL ist, stieg zunächst die Befürchtung, dass durch den Wechsel zu Oracle nun auch MySQL kostenpflichtig wird.

Oracle arbeitet seither fortlaufend an der Verbesserung des Datenbank-Systems. Zahlreiche neue Releases sind seitdem erschienen. Der in den Programmiersprachen C und C++ geschriebene Quellcode des Systems ist frei verfügbar und veränderbar. Für Entwickler ist die kostenlose Nutzung unter der GNU General Public Licence möglich. Für Unternehmen ist es allerdings erforderlich, eine kommerzielle Lizenz bei Oracle zu erwerben.

Aufbau und Funktionsprinzip des Datenbank-Systems von MySQL

Datenbank-Schema unter MySQL

Datenbank-Schema unter MySQL

Das Datenbank-Management-System besteht aus den Komponenten des MySQL-Servers sowie einem oder mehreren Clients. Das System arbeitet demnach nach dem Client-Server-Prinzip. Der Server stellt hierbei das eigentliche Datenbank-Management-System dar. Dem Server obliegen die Aufgaben der Speicherung sowie der Verteilung der Daten.

Innerhalb der Datenbanken liegen die Daten in zweidimensionalen Tabellen vor. In unterschiedlichen Zeilen und Spalten befinden sich hier unterschiedliche Datentypen. Diese umfassen etwa numerische Daten, aber auch Zeichenketten (darunter Text) sowie Datumsformate und Uhrzeiten.

Clients sind imstande, diese Daten über strukturierte Anfragen an die Engine (d.h. den Server) abzurufen. Auf diese Weise ist ebenso eine Bearbeitung dieser Daten möglich. Die Datenbanksprache SQL ermöglicht das Abrufen sowie auch das Verändern, Einfügen und Löschen der Daten.

Das Datenbank-System ist ebenso geeignet, eine größere Zahl verschiedener Datenbanken zu verwalten. Verschiedene Clients können mehrere Anfragen gleichzeitig an diese Datenbanken senden. Der Zugriff auf diese Datenbanken ist in Abhängigkeit ihrer Verwendung sowohl über das Internet als auch über interne Netzwerke möglich.

Die Regelung des Zugriffs auf die Daten erfolgt, indem Clients bzw. deren Benutzer unterschiedliche Rechte erhalten. Über diese Rechte können Sie steuern, auf welche Daten sowie Datenbanken bestimmte Anwender Zugriff erhalten. Zu den möglichen Clients gehören etwa Internet-Anwendungen sowie Kommandozeilen-Programme.

Zur Optimierung der Performance von MySQL Datenbanken lassen sich die Abfrageergebnisse in einem Cache-Speicher zwischenspeichern. Dieser Cache trägt den Namen Query-Speicher. Dieser ist imstande, eine Anfrage unmittelbar zu beantworten, sofern sie mit einer vorherigen Anfrage identisch ist und es in der Zwischenzeit zu keiner Änderung des Datenbestands in der Datenbank gekommen ist.

Kommt es also zu einem späteren Zeitpunkt zu einer gleichen Anfrage, ist eine sofortige Beantwortung aus dem Query-Cache möglich. Es ist entsprechend kein weiterer Zugriff auf die Datenbank erforderlich. Dies hat eine deutliche Entlastung des Servers zur Folge. Infolgedessen steigt die Performance in Form einer schnelleren Verarbeitungsgeschwindigkeit.

Verbreitung und Einsatzgebiete von MySQL

Bei MySQL handelt es sich um das Open-Source-Datenbank-System mit der weltweit größten Verbreitung. Es existieren mehrere Millionen Installationen des Systems. Ein besonders häufiges Anwendungsgebiet MySQLs sind Webserver. In Kombination mit der beliebten Skriptsprache PHP (Hypertext Preprocessor) lässt sich das Datenbank-System für die Datenspeicherung von Web-Services einsetzen.

Ebenso basieren zahlreiche CMS auf der Open-Source-Software. Insbesondere WordPress, TYPO3 oder Joomla nutzen dieses Datenbank-System in Kombination mit PHP als Grundlage.

Als Architektur liegt das Datenbank-System ebenso vielen Webshops zugrunde. Anbieter von Webhosting-Lösungen bieten daher MySQL-Datenbanken in Kombination mit PHP grundsätzlich als Grundausstattung ihrer Webserver an. Auch große Internet-Konzerne wie Google oder Facebook nutzen das Datenbank-System als Grundlage

Nutzung von MySQL in LAMP

Häufig erfolgt die Nutzung von MySQL im Zusammenhang mit LAMP (Linux, Apache, MySQL und PHP). Hierbei handelt es sich um eine Web-Entwicklungsplattform beziehungsweise Infrastruktur, auf deren Basis sich dynamische Webseiten und Webanwendungen entwickeln lassen. Als Akronym steht LAMP für die Komponenten Linux (Betriebssystem), Apache (Webserver), MySQL und PHP. Es existieren auch Kombinationen, in denen sich die Komponenten von dieser Aufstellung unterscheiden. Gelegentlich kommen Python oder Pearl an Stelle von PHP zum Einsatz. Auch andere Betriebssysteme sind möglich. Hierbei kann sich die Bezeichnung der Plattform ändern, beispielsweise zu WAMP beim Einsatz von Windows.

Versionen und Abwandlungen des Systems

Das Datenbank-System liegt sowohl als Open-Source-basierte Software als auch in kommerziellen Varianten vor. Für den Server existieren mehrere Lizenzmodelle, die für je unterschiedliche Anwendungszwecke vorgesehen sind. Für verschiedene Ansprüche können Sie unterschiedliche Lizenzen erwerben.

Es existieren über die regulären Lizenzmodelle hinaus auch abgewandelte Versionen der Datenbank, die als Fork oder Abspaltung bekannt sind. Dazu gehört Drizzle, ein Datenbank-Management-System, deren Entwicklung auf MySQL basiert. Auch Percona Server ist eine Abwandlung des Systems und stellt eine erweiterte Version mit zusätzlicher Funktionalität dar. Zu den Besonderheiten gehört insbesondere eine bessere horizontale Skalierbarkeit gegenüber der regulären Version.

Eine weitere Fork ist MariaDB, ein Community-Projekt. Nach der Übernahme MySQLs durch Oracle hatte sich dieses Projekt von MySQL abgespalten, nutzt aber weiterhin Befehle sowie Schnittstellen von MySQL.

Trivia: Das Delfin Logo von MySQL

Wer mit MySQL zu tun hat, dem ist sicherlich das Logo von MySQL aufgefallen: Ein Delfin. Doch warum ist ausgerechnet ein Delfin das Symbol von MySQL? Aus Sicht der damaligen Entwickler symbolisierte der Delfin bzw. Delfine im Allgemeinen all das wofür MySQL stehen sollte: Delfine sind schnell, intelligent und freundlich.

Mårten Mickos beschreibt die Frage nach dem Symbol von MySQL auf Quora so: „One of the co-founders, Monty, said ‚I like dolphins. They are fast, intelligent and kind. And in groups, they kill sharks.'“ (Auf Deutsch: Ich mag Delfine. Sie sind, intelligent und nett. Und in Gruppen töten Sie Haie“). Einige Jahre später bekam der Delfin sogar einen Namen. Seitdem heißt der Delfin von MySQL „Sakila“.

Weitere Informationen zu MySQL:

Installation von PHP 7.2 auf Centos 7

Unter den OpenSource und Linux Betriebssystemen ist CentOS mit etwas mehr als 20 % Marktanteil einer der großen Player unter den Linux Anbietern.

Wenn man als IT-Admin oder Linux-Administrator allerdings heute eine nagelneue CentOS 7 Installation durchläuft und darauf hin PHP installieren möchte, dann erlebt man eine eher unschöne Überraschung: Die in den Standard-Paketen von CentOS 7 enthaltene PHP Version lautet 5.4!

PHP 5.4 ist allerdings von den Entwicklern von PHP seit langer Zeit abgekündigt. Außerdem wird PHP 5.4 seit dem zweiten Halbjahr 2015 nicht mehr supportet.

Wenn man also als IT Verantwortlicher seinen Anwendern PHP auf einem CentOS 7 Server zur Verfügung stellen will,  sollte man mindestens PHP 7.2 installieren.

Es empfiehlt sich, zunächst den CentOS 7 Servern auf den aktuellen Stand zu bringen:

1
yum –y update

Der Update-Vorgang kann je nach Hardware, Internet-Verbindung und der Anzahl der zu installierenden Pakete bis zu einigen Minuten dauern.

Wichtiger Hinweis: Wenn ein neues Kernel-Paket herunter geladen und installiert wurde, so sollten  Sie den Server sicherheitshalber neu starten, bevor wir weiter machen.

Bevor wir zur PHP 7 Installation kommen, müssen vorher 2 neue Paket-Repositories bekannt gemacht werden.

1
2
3
yum –y install epel-release

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Hinweis: Sofern Sie bereits das EPEL-Release Paket oder die Quellen von “webtatic” installiert haben, so werden die obigen Befehle einfach übersprungen.

Damit wir sicher sein können, daß – zumindest für einen Moment – gar kein PHP auf dem Server installiert ist, de-installieren Sie  nun zuerst alle PHP-Pakete:

1
2
3
4
5
6
7
yum -y remove php-common php56w-common

yum -y remove mod_php71w php71w-opcache php71w-common

yum -y remove mod_php70w php70w-opcache php70w-common

yum -y remove mod_php72w php72w-opcache php72w-common

Nun kommen wir zur eigentlichen Installation von PHP 7.2

1
yum –y install php72w php72w-common php

Sofern Sie gleich noch die meisten der in Frage kommenden Zusatzpakete von PHP 7 mit installieren möchten, so führen Sie den folgenden Kombi-Befehl mit yum aus.

1
yum -y install mod_php72w php72w php72w-opcache php72w-common php72w-mysql php72w-devel php72w-gd php72w-xml php72w-mbstring php72w-pdo php72w-odbc php72w-xml php72w-soap php72w-mssql  php72w-common php72w-mysql php72w-xmlrpc php72w-snmp php72w-process php72w-pear php72w-gd php72w-ldap php72w-cli php72w-mbstring php72w-opcache

Zum Schluss möchten wir nun noch wissen, ob die Standard-Version von php auch wirklich aktuell ist. Dies prüfen wir mit dem Argument „-v“ (v = Version).

1
2
3
4
5
6
7
8
9
[root@fmtest02mb ~]# php -v

<strong>PHP 7.2.17 (cli)</strong> (built: May 13 2019 18:03:04) ( NTS )

Copyright (c) 1997-2018 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

with Zend OPcache v7.2.17, Copyright (c) 1999-2018, by Zend Technologies

Fazit: Mit wenigen Befehlen können Sie PHP 7.2 auf CentOS 7 aktualisieren und damit ihren Anwendern nicht nur viele Sicherheitslücken von PHP 5 ersparen. PHP 7.2 ist außerdem noch fühlbar schneller in der Ausführung von PHP-Anwendungen als der Vorgänger PHP 5.4.

 

 

Einleitung mysql

Mysql ist unter Linux neben postgres das am häufigsten genutzten Datenbank-Systeme. Mysql ist als Opensource Projekt im Jahr 1994 entstanden und gehört mittlerweile zu Oracle. Obwohl es zu mysql seit geraumer Zeit auch kommerzielle Angebote gibt, ist die Datenbank-Software mysql selbst immer noch ein Opensource-Produkt. Das bedeutet, daß es von jedermann herunter geladen und genutzt werden kann.

https://de.wikipedia.org/wiki/MySQL

Homepage: https://www.mysql.com/de/

Da es nach der Übernahme von Oracle jedoch zu Konflikten zwischen dem kommerziellen Anspruch und der Opensource-Gemeinde kam, hat sich im Jahr 2012 mit mariadb ein so genannter Fork (~Abspaltung) von mysql gebildet, der wieder vollkommen quelloffen entwickelt wird und so mehr dem Opensource Gedanken entspricht.

https://de.wikipedia.org/wiki/MariaDB

Homepage: https://mariadb.org/

Im nachfolgenden Tutorial erklären wir Schritt für Schritt die Installation von mariadb auf einem Linux-Server mit Centos sowie die Absicherung und Inbetriebnahme der Datenbank-Software.

Hinweis: Wir verwenden CentOS als Basis für unsere Installation. Mysql bzw. mariadb lassen sich aber genauso auf Debian, Ubuntu und praktisch allen anderen Linux-Servern mit dem jeweiligen Paketmanager installieren. Sobald die Erst-Installation unter Linux erledigt ist, können Sie diese Anleitung dennoch Schritt für Schritt abarbeiten.

Vorüberlegungen zu mysql

Wer mysql einfach mal so ausprobieren möchte, muss sich um Geschwindigkeit von Abfragen und Performance im Allgemeinen vermutlich keine Gedanken machen.

Sofern Sie allerdings mysql produktiv einsetzen möchten, so sollten wir einige wenige Gedanken über das System-Design machen.

Hauptspeicher / RAM

In Sachen Hauptspeicher (RAM) sind praktisch alle Datenbanksysteme extrem „hungrig“. Da macht mysql keine Ausnahme. Die generelle Regel lautet: Je mehr desto beser.

Festplatten

Wer seinen mysql Server auf einer dedizierten Hardware betreibt, der tut gut daran dem mysql Dienst eine separate Festplatte zuzuweisen. Ideal sind mehrere, eher kleine Festplatten, die über ein Raid10 (Verbund aus gespiegelten Platten) an einem RAID-Controller angeschlossen sind.

Wer mysql virtuell betreibt, der sollte zumindest das mysql-Datenverzeichnis /var/lib/mysql auf einer separaten Partition einrichten. Wie das geht, zeigen wir weiter unten.

 

Linux-Server vorbereiten

Zur Vorbereitung unserer mysql Installation deaktivieren wir zuerst temporär SELinux und schalten ebenfalls den eingebauten firewalld Dienst aus.

1
Mysql01# systemctl disable firewalld

In der Datei /etc/sysconfig/selinux ändern Sie die Zeile „SELINUX=enforcing“ auf „SELINUX=disabled“

Anschließend loggen wir uns per ssh auf dem Server an und aktualisieren alle Software-Pakete mit „yum –y update“. Das dauert je nach Hardware und Internetanbindung ein paar Minuten. Anschließend rebooten Sie den Server.

Mysql auf eine separate Partition bzw. Festplatte legen

Wer wie weiter oben angesprochen mysql bzw. mariadb produktiv einsetzen möchte, der sollte das Verzeichnis /var/lib/mysql auf ein separates Filesystem legen.

In unserem (virtuellen) Beispiel haben wir eine zweite Festplatte /dev/sdb erstellt.

Auf dieser erstellen wir mit fdisk /dev/sdb die neue Partition /dev/sdb1 und speichern fdisk mit „w“ ab.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@mysql01 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8f093467.

Befehl (m für Hilfe): n
Partition type:
p   primary (0 primary, 0 extended, 4 free)
e   Erweiterte
Select (default p): p
Partitionsnummer (1-4, default 1): 1
Erster Sektor (2048-125829119, Vorgabe: 2048):
Benutze den Standardwert 2048
Last Sektor, +Sektoren or +size{K,M,G} (2048-125829119, Vorgabe: 125829119):
Benutze den Standardwert 125829119
Partition 1 of type Linux and of size 60 GiB is set

Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert!
Rufe ioctl() um Partitionstabelle neu einzulesen.
Synchronisiere Platten.

Anschließend formatieren wir die neue Partition z.B. mit dem xfs Filesystem

1
2
3
4
5
6
7
8
9
10
[root@mysql01 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=3932096 blks
=                       sectsz=512   attr=2, projid32bit=1
=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=15728384, imaxpct=25
=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =Internes Protokoll     bsize=4096   blocks=7679, version=2
=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =keine                  extsz=4096   blocks=0, rtextents=0

Last but not least legen wir einen Eintrag in der /etc/fstab an, damit das zusätzliche Filesystem bei einem Reboot auch ordentlich gemounted wird, bevor der mariadb bzw. mysqld Dienst startet.

Ergänzen Sie die Datei /etc/fstab um die folgende Zeile

1
/dev/sdb1       /var/lib/mysql  xfs     defaults        0 0

Anschließend legen wir den notwendigen Mountpoint (Einhängepunkt für die Partition) noch manuell an und setzen die Berechtigungen:

1
2
[root@mysql01 ~]# mkdir /var/lib/mysql
[root@mysql01 lib]# chown –R mysql.mysql /var/lib/mysql/

Mysql unter Linux installieren

Die eigentliche Installation von mariadb (bzw. mysql) übernimmt der Befehl „yum install mariadb-server mariadb“. Im Schlepptau werden ca 2 Dutzend Perl-Pakete mit installiert.

1
[root@mysql01 ~]# yum –y install mariadb mariadb-server

Nun müssen wir den Dienst mariadb noch aktivieren und anschließend starten:

1
2
3
4
[root@mysql01 ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@mysql01 ~]# service mariadb start
Redirecting to /bin/systemctl start mariadb.service

 

Erste Anmeldung an mariadb / mysql

Um nun „interaktiv“ zu prüfen ob mariadb wirklich funktioniert, loggen wir uns einmal als Benutzer root an mariadb an.

In der Standard-Installation ist der Benutzer „root“ in mariadb/mysql bereits angelegt. Ein Passwort hat der Benutzer (noch) nicht.

Syntax: mysql –u<Benutzer> -p<Passwort>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@mysql01 ~]# mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]&gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]&gt; exit

Der Befehl “show databases” zeigt uns die bestehenden Datenbanken an. Dies sind neben der Standard-Datenbank „mysql“ die Datenbanken „information_schema“ und „performance_schema“ sowie „test“.

mysql / mariadb absichern

Im Moment kann man sich noch ganz ohne Passwort an mysql anmelden. Ebenfalls sind Anmeldungen von entfernten Rechnern über das Netzwerk möglich. Das möchten wir dauerhaft so nicht belassen.

Ein Weg mysql auf einen Rutsch deutlich sicherer zu machen ist der Aufruf der Anpassungs-Routine „mysql_secure_installation“.

Mit diesem Skript können Sie

  • Ein Passwort für den Benutzer root setzen
  • Die Test-Datenbank entfernen
  • Den Zugriff über das Netzwerk unterbinden

Beantworten Sie einfach die gestellten Fragen mit y[es] oder n[o]. Nach Abschluss des Skripts wird die mysql-Datenbank, welche die Benutzer enthält neu geladen und Sie können sich mit ihrem gerade erstellten Passwort wieder anmelden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[root@mysql01 ~]# mysql_secure_installation

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them.  This is intended only for testing, and to make the installation go a bit smoother.  You should remove them before moving into a production environment.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'.  This ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can access.  This is also intended only for testing, and should be removed before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB installation should now be secure.
(…)

Wir prüfen  nun ob die Anmeldung als Benutzer root immer noch ohne Passwort möglich ist (Das sollte es nicht ,mehr sein).

1
2
[root@mysql01 ~]# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Die Fehlermeldung ist ausnahmsweise einmal „positiv“ im Sinne von so gewollt. Dafür sollte die Anmeldung mit „mysql –uroot –p<ihr Passwort> klappen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@mysql01 ~]# mysql -uroot -p
Enter password: ç hier Passwort eingeben
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]&gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Wir sehen: Die Anmeldung ist weiter mit Passwort möglich und außerdem ist die Datenbank „test“ ebenfalls verschwunden.

 

mysql / mariadb: Benutzer verwalten

Zwei administrative Aufgaben kommen beim Betrieb von mysql bzw. mariadb immer wieder vor: Neue Benutzer anlegen und von bestehenden Benutzern das Passwort zurücksetzen. Daneben gilt es „mal eben so“ eine neue Datenbank anzulegen.

Hinweis: Alle Beispiele gehen davon aus, daß Sie sich zuerst mit „mysql –uroot –p“ an mysql anmelden.

Eine neue (leere) Datenbank in mysql anlegen

Eine neue und leere Datenbank legen Sie mit dem Befehl „create database <DATENBANKNAME>;“ an.

Beispiel:

1
create database sbtest;

Der obige Befehlt erstellt die leere Datenbank „sbtest“.

Neuen Benutzer unter mysql anlegen

Die Syntax unter mysql zum Anlegen eines neuen Benutzers ist:

1
2
3
use mysql;
create user 'USERNAME'@'HOST' identified by 'PASSWORD';
flush privileges;

Username und Password ersetzen Sie mit dem echten Benutzer-Namen sowie einem möglichst sicheren Passwort. Mit „HOST“ ist dabei der Rechner gemeint, von dem aus der Anwender zugreifen darf.

Sofern hier nur der Zugriff über den Rechner erlaubt ist, auf dem mysql läuft, so verwenden Sie „localhost“ . Alternativ können Sie bei HOST auch eine IP-Adresse verwenden. Ebenso gehen normale Hostnamen, die sich über das DNS auflösen lassen.

Beispiel: Wir legen einen Benutzer mit Namen „max“ an, der von überall aus zugreifen darf. Sein Passwort lautet „Imitoguli835“.

1
2
3
use mysql;
create user 'max'@'*' identified by 'Imitoguli835';
flush privileges;

Auf Datenbanken zugreifen (dürfen)

Damit der frisch angelegte Benutzer auch das Recht hat, eine bestehende Datenbank zu bearbeiten, muss ihm mit dem „Grant“ Befehl dazu die Berechtigung erteilt werden. Die Syntax dazu lautet:

1
Grant ALL on DATABASE.TABLE TO 'USERNAME'@'HOST';

Beispiel: Wir gewähren dem Benutzer „Max“ den Zugriff auf die Datenbank „sbtest“ – aber nur wenn er sich über den mysql-Server anmeldet (also über den Localhost).

1
2
3
use mysql;
grant all on sbtest.* to 'max'@'localhost';
flush privileges;

Noch ein Beispiel: Wir gewähren unserem Testbenutzer „Max“ den Zugriff auf alle (!) Datenbanken, egal von wo aus er zugreift.

1
2
3
use mysql;
grant all on *.* to 'max'@'*';
flush privileges;

Der Befehl “flush privileges;“ schreibt alle Berechtigungen in mysql zurück und lädt die aktualisierten Berechtigungen neu. Erst danach greift das neue Rechtesystem für den gerade veränderten mysql-Benutzer.

Von einem bekannten mysql Benutzer das Passwort zurück setzen

Wenn ein Benutzer sein Passwort für mysql nicht mehr weiß, dann kann es der mysql-Administrator mit dem folgendem Befehl zurück setzen:

1
2
use mysql; update user set password=PASSWORD('NEUESPASSWORT') where User='BENUTZERNAME';
flush privileges;

Wichtig: ‚User‘ wird wirklich mit großem ‚U‘ geschrieben.

Die Begriffe „NEUESPASSWORT“ und „BENUTZERNAME“ ersetzen Sie natürlich durch ein wirklich sicheres Passwort und den echten Benutzernamen.

Mysql Benchmark

Um mysql nun ein wenig unter Last zu setzen, installieren wir den Benchmark-Test sysbench. Dafür benötigen wir allerdings zuerst das EPEL-Repository, das wir zuerst installieren.

1
2
yum –y install epel-release
yum -y install sysbench

Da sysbench eine Testdatenbank (die meistens sbtest heißt) benötigt legen wir die Datenbank „sbtest“ an und außerdem gleich einen passenden Benutzer „testdb“, der sich lokal auf dem Server an mariadb anmelden darf.

1
2
3
mysql –uroot –p –e "create database sbtest;"
mysql –uroot –p –e “grant all on sbtest.* to testdb@localhost identified by 'test123';"
mysql –uroot –p –e "flush privileges;"

Sysbench besteht in der Regel aus zwei aufeinaderfolgenden Aktionen. Im ersten Schritt (der mit ‚prepare‘ endet) werden die Tabellen und ggf. Inhalte angelegt, auf die beim eigentlichen Durchlauf des Benchmarks zugegriffen wird. Der eigentliche Benchmark-Befehlt endet auf „run“.

Was konkret wie geprüft und getestet wird, ist bei sysbench seit einiger Zeit in vordefinierten Skripten fest gelegt. Diese liegen nach der Installation von sysbench unter /usr/share/sysbench/ .

Beispiel:

Der nachfolgende erste Befehl bereitet die leere Datenbank sbtest mit 4 Tabellen vor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sysbench /usr/share/sysbench/oltp_common.lua  --threads=4 --mysql-host=localhost --mysql-user=testdb --mysql-password=test123 --mysql-port=3306 --tables=4 --db-driver=mysql  --table-size=100000 prepare
sysbench 1.0.9 (using system LuaJIT 2.0.4)
Initializing worker threads...
Creating table 'sbtest2'...
Creating table 'sbtest1'...
Creating table 'sbtest3'...
Creating table 'sbtest4'...
Inserting 100000 records into 'sbtest3'
Inserting 100000 records into 'sbtest1'
Inserting 100000 records into 'sbtest4'
Inserting 100000 records into 'sbtest2'
Creating a secondary index on 'sbtest1'...
Creating a secondary index on 'sbtest4'...
Creating a secondary index on 'sbtest2'...
Creating a secondary index on 'sbtest3'...

Der anschließende Aufruf startet den allgemeinen Lese/Schreiben Benchmark für 60 Sekunden und gibt alle 5 Sekunden eine Statistik aus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
sysbench /usr/share/sysbench/oltp_read_write.lua --threads=4 --events=0 --time=60  --mysql-host=localhost --mysql-user=testdb --mysql-password=test123 --mysql-port=3306 --tables=4 --table-size=100000 --range_selects=off --db-driver=mysql --db-ps-mode=disable --report-interval=5 run
sysbench 1.0.9 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Report intermediate results every 5 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 5s ] thds: 4 tps: 164.51 qps: 2643.40 (r/w/o: 1653.13/432.57/557.71) lat (ms,95%): 95.81 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 4 tps: 185.81 qps: 2973.73 (r/w/o: 1858.08/528.62/587.03) lat (ms,95%): 95.81 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 4 tps: 257.17 qps: 4114.80 (r/w/o: 2571.75/764.93/778.12) lat (ms,95%): 58.92 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 232.42 qps: 3718.67 (r/w/o: 2324.17/743.45/651.05) lat (ms,95%): 63.32 err/s: 0.00 reconn/s: 0.00
[ 25s ] thds: 4 tps: 256.43 qps: 4102.95 (r/w/o: 2564.34/850.91/687.69) lat (ms,95%): 55.82 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 4 tps: 199.19 qps: 3185.91 (r/w/o: 1991.95/679.58/514.39) lat (ms,95%): 89.16 err/s: 0.00 reconn/s: 0.00
[ 35s ] thds: 4 tps: 237.75 qps: 3805.25 (r/w/o: 2377.53/823.84/603.88) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 4 tps: 243.02 qps: 3888.26 (r/w/o: 2430.16/852.06/606.04) lat (ms,95%): 70.55 err/s: 0.00 reconn/s: 0.00
[ 45s ] thds: 4 tps: 234.79 qps: 3756.71 (r/w/o: 2347.94/830.78/577.99) lat (ms,95%): 63.32 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 4 tps: 239.43 qps: 3830.93 (r/w/o: 2394.33/851.92/584.68) lat (ms,95%): 66.84 err/s: 0.00 reconn/s: 0.00
[ 55s ] thds: 4 tps: 276.78 qps: 4422.67 (r/w/o: 2763.79/995.93/662.95) lat (ms,95%): 51.94 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 4 tps: 274.40 qps: 4396.27 (r/w/o: 2748.04/995.22/653.01) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00

SQL statistics:
queries performed:
read:                            140130
write:                           46750
other:                           37328
total:                           224208
transactions:                        14013  (233.52 per sec.)
queries:                             224208 (3736.38 per sec.)
ignored errors:                      0      (0.00 per sec.)
reconnects:                          0      (0.00 per sec.)

General statistics:
total time:                          60.0050s
total number of events:              14013

Latency (ms):
min:                                  3.48
avg:                                 17.12
max:                                440.18
95th percentile:                     68.05
sum:                             239970.51

Threads fairness:
events (avg/stddev):           3503.2500/12.74
execution time (avg/stddev):   59.9926/0.00

Ein Hinweis zum Schluss: Wenn Sie mit sysbench einen gänzlich anderen Performance-Test durchführen wollen, so müssen Sie zuerst die Tabellen innerhalb der Datenbank sbtest löschen. Ansonsten erhalten Sie von sysbench eine Fehlermeldung.

Das Löschen der Tabellen erfolgt mit „drop table <tablename>;“. Schneller ist es aber die ganze Datenbank „sbtest“ zu löschen und anschließend leer wieder anzulegen.

1
2
Drop database sbtest;
Create database sbtest;

Fazit zu mysql

Die Installation und erste Einrichtung von mysql ist für geübte Linux-Administratoren in wenigen Minuten erledigt und auch für Gelegenheits-Admins kein Hexenwerk. Wer durch das Tutorial auf den Geschmack gekommen ist, der sollte sich ein wenig mehr mit dem Thema Performance von mysql bzw. mariadb beschäftigen.

Wie man die Konfigurations-Datei ( /etc/my.cnf ) anpasst und so mysql weiter optimiert, erklären wir in einem weiteren Tutorial.

Einleitung: Hochverfügbarkeit mit Pacemaker und Corosync

Mit Pacemaker und Corosync können mehrere Linux-Hosts eine einfache Form der Hochverfügbarkeit (engl. High availability, kurz HA) erreichen. So können mit Pacemaker IP-Adresse, ganze Webserver oder auch File-Systeme hoch-verfügbar gemacht werden.

Anhand einer so genannten Service-IP-Adresse beschreiben wir nachfolgend das Prinzip von Pacemaker und Corosync. Pacemaker übernimmt dabei die Verwaltung der Cluster-Resourcen. Corosync kümmert sich um die Kommunikation zwischen den Hosts.

Auf diese Weise lassen sich zum Beispiel mit einer Master-Master-Replikation von mariadb/mysql hochverfügbare Datenbank-Lösungen erstellen. Mit der OpenSource-Software glusterfs lassen sich zusammen mit Pacemaker und Corosync ganze Dateisysteme als HA-Lösung konfigurieren.

Alle nachfolgend genutzten Software-Pakete (Centos, Pacemaker und Corosnyc) sind genauso wie maysql und mariadb OpenSource Produkte.

Versuchsaufbau für Corosync und HA

Für unser nachfolgendes Tutorial erstellen wir zwei identische Linux-Hosts mit CentOS die jeweils einen Netzwerkanschluss sowie eine eigene statische IPv4-Adresse im selben IP-Subnetz haben. Die Linux-Rechner sollen anschließend eine dritte IP-Adresse (nachfolgend Service-IP genannt) erhalten, die entweder auf dem einen oder dem anderen Linux-Server „gehostet“ wird.

Ziel ist es, diese Service-IP-Adresse immer erreichbar zu haben und dennoch einen der beiden Hosts für Wartungszwecke herunter fahren zu können. Auf diese Weise kann mit einfachen Mitteln eine einfache Form der Hochverfügbarkeit erreicht werden.

Hinweis: Auch wenn wir Pacemaker und Corosync hier exemplarisch unter Centos 7 einrichten, so geht das natürlich auch auf anderen Linux-Distributionen wie debian, Ubuntu oder Redhat . Hier unterscheiden sich lediglich die Kommandos für die Installation der Pakete (apt-get bei debian).

Unser Setup für das Pacemaker Tutorial:

  • 2 CentOS 7.5 Hosts mit je einer statischen IP-Adresse
  • Host 1: testdb01, 168.0.113
  • Host 2: testdb02, 168.0.114
  • Service-IP-Adresse: 168.0.115

Für alles weitere installieren wir CentOS 7.x (z.B. auf einer Vitualisierungsplattform wie VMWare oder Proxmox). Die Linux-Hosts benötigen im produktiven Betrieb 1-2 CPU-Kerne, 2 GB RAM und 20 -30 GB an Festplatte. Wer einfach nur testen will, kommt auch mit einem CPU-Kern, 1 GB RAM und 3-4 GB HDD aus.

Wir richten pro Host die statische IP-Adresse ein und lassen mit „yum-y update“ alle Updates durchlaufen. Für alles weitere deaktivieren wir den CentOS Firewalld (systemctl disable firewalld) und deaktivieren „selinux“ ( In der Datei /etc/sysconfig/selinux ersetzen Sie das die Zeile, die mit „SELINUX“ beginnt durch SELINUX=disabled )

Installation von Corosync bzw. Pacemaker

Die Softwarepakete pacemaker, pcs und corosync müssen unter Centos auf allen Hosts installiert werden die später Mitglieder des Clusters werden. Die Installation erledigen wir mit:

1
yum -y install pacemaker pcs

In der Standard-Version werden hier gleich ca 25-30 weitere anhängige Pakete mit installiert, die für den Betrieb notwendig sind. Im Anschluss daran aktivieren wir den pcsd Dienst und starten ihn:

1
2
systemctl enable pcsd.service
systemctl start pcsd.service

Damit die unterschiedlichen Hosts bzw. die Dienste auf den Hosts mit einander sprechen können, benötigen Sie einen Benutzer mit Kennwort. Während der Installation wird automatisch ein neuer User namens „hacluster“ angelegt: Diesem geben wir nun noch ein Passwort:

1
passwd hacluster

Achten Sie darauf, daß auf beiden Hosts das Passwort für den benutzer „hacluster“ nach Möglichkeit identisch ist

Cluster Dienst einrichten

Damit die Knoten miteinander kommunizieren können, tauschen wir nun erst einmal die Authentifizierungen aus:

1
2
3
4
5
[root@testdb01 mysql<strong>]# pcs cluster auth testdb01 testdb02</strong>
Username: hacluster
Password:
testdb01: Authorized
testdb02: Authorized

Die Meldung von beiden Knoten muss “Authorized” lauten – dann kommunizieren die Hosts erfolgreich miteinander.

Cluster – alte Pacemaker Konfiguration löschen

Zur Sicherheit „zerstören“ bzw. löschen wir alle bisherigen Konfigurationen auf den beiden Hosts.

Hinweis: Bei einer brandneuen Installation ist dieser Schritt nicht nötig.

1
2
3
4
5
6
[root@testdb01 mysql]# pcs cluster destroy --all
Warning: Unable to load CIB to get guest and remote nodes from it, those nodes will not be deconfigured.
testdb01: Stopping Cluster (pacemaker)...
testdb02: Stopping Cluster (pacemaker)...
testdb02: Successfully destroyed cluster
testdb01: Successfully destroyed cluster

Neues Pacemaker Cluster erstellen.

Nun erstellen wir in neues “Cluster” aus zwei Knoten bzw. Hosts. Die Hosts heißen bei uns „testdb01“ und „testdb02“. Das Cluster selbst nennen wir „testdb. Direkt nach dem Abschicken des Befehls „pcs cluster setup“ werden zuerst die Zertifikate ausgetauscht.

Voraussetzung ist, daß die beiden Hosts sich im vorherigen Schritt (pcs cluster auth) erfolgreich gegenseitig authentifiziert haben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@testdb01 ~]# pcs cluster setup --name testdb testdb01 testdb02
Destroying cluster on nodes: testdb01, testdb02...
testdb02: Stopping Cluster (pacemaker)...
testdb01: Stopping Cluster (pacemaker)...
testdb01: Successfully destroyed cluster
testdb02: Successfully destroyed cluster
Sending 'pacemaker_remote authkey' to 'testdb01', 'testdb02'
testdb01: successful distribution of the file 'pacemaker_remote authkey'
testdb02: successful distribution of the file 'pacemaker_remote authkey'
Sending cluster config files to the nodes...
testdb01: Succeeded
testdb02: Succeeded
Synchronizing pcsd certificates on nodes testdb01, testdb02...
testdb01: Success
testdb02: Success
Restarting pcsd on the nodes in order to reload the certificates...
testdb01: Success
testdb02: Success

Konfiguration von Corosync prüfen:

Zur Sicherheit werfen wir einen Blick in die nun auf beiden Hosts vorhandene Konfig-Datei unter /etc/corosync/. Sie heißt dort „corosync.conf“

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@testdb01 ~]# more /etc/corosync/corosync.conf
totem {
version: 2
cluster_name: filecluster
secauth: off
transport: udpu
}
nodelist {
node {
ring0_addr: testdb01
nodeid: 1
}
node {
ring0_addr: testdb02
nodeid: 2
}
}
quorum {
provider: corosync_votequorum
two_node: 1
}
logging {
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
}

Corosync Cluster starten

Mit dem Befehlt “pcs cluster start –all” starten wir auf einem Knoten corosync auf allen zum Cluster gehörenden Hosts.

Wichtig: Das muss nur an auf einem Host/Knoten erfolgen.

1
2
3
[root@testdb01 ~]# pcs cluster start --all
testdb02: Starting Cluster...
testdb01: Starting Cluster...

Corosync und Pacemaker aktivieren und starten

Damit wir nun etwas Praktisches tun können, müssen sowohl der corosync-Dienst als auch Pacemaker aktiviert und gestartet werden.

Auf testdb01 und testdb02 führen wir also aus

1
2
3
4
systemctl enable corosync.service
systemctl start corosync.service
systemctl enable pacemaker.service
service pacemaker start

Anschließend prüfen wir den Status mit “pcs status“. Nun sollte ‚pcs status‘ etwas sinnvolles ausgeben , auch wenn noch keine Resource vorhanden ist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@testdb01 ~]# pcs status
Cluster name: testdb
Stack: corosync
Current DC: testdb01 (version 1.1.18-11.el7_5.2-2b07d5c5a9) - partition with quorum
Last updated: Wed Jun 13 12:50:58 2018
Last change: Wed Jun 13 12:50:55 2018 by root via cibadmin on testdb01
2 nodes configured
0 resources configured
Online: [ testdb01 testdb02 ]
No resources
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled

Wir sehen: Auf dem Knoten testdb01 sind alle drei Dienste (corosync, pacemaker und pcsd) aktiv und gestartet. Der Hinweis „no resources“ bedeutet, daß wir noch keine Resource (etwa eine IP) definiert haben.

Corosync anpassen (2 Host Szenario)

In unserem Fall von 2 Hosts mach weder ein Quorum (die Mehrheit unter den Servern) noch Stonith (Mechanismus zum „Abschiessen“ von schwächelnden Hosts) inhaltlich Sinn. Für ein Quorum bräuchten wir mindestens 3 Hosts. Mit den beiden folgenden Befehlen stellen wir sowohl das Quorum als auch stonith dauerhaft ab.

1
2
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore

Virtuelle Resource / Virtuelle IP anlegen

Wir möchten nun eine einfache IPv4-Adresse als einzige Resource anlegen und auf einem der beiden Hosts verfügbar machen. Mit dem folgenden Befehl wird die Service-IP für das Cluster angelegt:

1
pcs resource create &lt;Resource-Name&gt; ocf:heartbeat:IPaddr2 ip=&lt;IP-Addr&gt; cidr_netmask=&lt;Netmask&gt; op monitor interval=5s

Die Variable <Resource-Name>, <IP-Addresse> und <Netmask> ersetzen wir natürlich durch die tatsächlichen Werte.

Wichtig hierbei: Die IP-Adresse muss zum Netzwerk bzw. IP-Subnetz passen, in dem der Hosts seinen Netzwerkanschluss hat.

Wir legen nun also eine zusätzliche IP-Adresse mit dem Namen „testdb-ip“, der Nummer 192.168.0.115 sowie der Netzmaske 24 (entspricht 255.255.255.0) an, die entweder auf testdb01 oder auf testdb02 gehostet wird. Sie soll außerdem vom Cluster alle 5 Sekunden geprüft werden.

1
[root@testdb01 ~]# pcs resource create testdb-ip ocf:heartbeat:IPaddr2 ip=192.168.0.115 cidr_netmask=24 op monitor interval=5s

Anschließend prüfen wir ob die IP-Adresse auch erfolgreich vom Cluster verwaltet wird:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@testdb01 ~]# pcs status
Cluster name: testdb
Stack: corosync
Current DC: testdb01 (version 1.1.18-11.el7_5.2-2b07d5c5a9) - partition with quorum
Last updated: Wed Jun 13 12:52:35 2018
Last change: Wed Jun 13 12:52:32 2018 by root via cibadmin on testdb01
2 nodes configured
<strong>1 resource configured</strong>
Online: [ testdb01 testdb02 ]
Full list of resources:
 testdb-ip (ocf::heartbeat:IPaddr2): Starting testdb01

Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled

Ergebnis: Die Resource “testdb-ip” startet direkt auf dem Host testdb01

 

Nun prüfen wir noch am Adapter nach, ob dort ebenfalls die Service-IP vorhanden ist:

1
2
3
4
5
6
7
8
9
10
[root@testdb01 ~]# ip addr
(..)
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 76:f3:cc:53:fa:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.0.113/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet <strong>192.168.0.115/24</strong> brd 192.168.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::3522:f3f3:80cd:7aae/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Ergebnis: Der Netzwerkadapter eth0 hat zusätzlich zu seiner festen IP (192.168.0.113) noch die IP-Adresse 192.168.0.115 die wir vorher als Cluster-Reosurce erstellt haben.

 

Empfehlung: Um im Fehlerfall die Konfiguration von Pacemaker bzw. Corosync schnell wieder anlegen zu können, empfiehlt es sich auf einem der beiden Linux-Hosts die Befehle vom Anlegen des Clusters bis hin zu Einrichtung der Cluster-Resource(n) in einer Bash-Datei abzuspeichern.
Damit kann im Fehlerfall durch einfaches Löschen und neu Anlegen der Konfiguration sowie der Resourcen in 20 bis 30 Sekunden eine Cluster-Einrichtung erfolgen.

 

 

Verwaltung von Corosync / Pacemaker

Cluster-Resourcen manuell verschieben.

In der Praxis wechselt die IP-Adresse nur dann von einem Host, wenn der aktive Host herunter fährt oder der Corosync-Dienst angehalten wird. Möchte man die Cluster-Resource von Hand von einem Host auf den anderen verschieben, so geht das mit:

pcs resource move <resource-name> <nodename>

Beispiel:

1
pcs resource move testdb-ip testdb02

Cluster-Resource entfernen

So wie eine Cluster-Resource angelegt wird, so kann sie natürlich auch gelöscht bzw. entfernt werden:

Syntax: pcs resource delete <Resource-Name>

Bsp.:

1
pcs resource delete testdb-ip

 

Fehler / Troubleshooting von Corosync / Pacemaker /pcsd

Sofern immer ein Host online ist, sind Fehler bei Corosync/Pacemaker eher selten. Wenn doch einmal etwas nicht geht, dann empfiehlt sich folgende Vorgehensweise:

Dienste (Pacemaker/Corosync/pcsd) stoppen und neu starten

Alle relevanten Dienste stoppen:

1
service corosync stop; service pacemaker stop; service pcsd stop;

Alle relevanten Dienste starten:

1
service pcsd start; service pacemaker start; service corosync start;

Danach ermitteln Sie auf beiden Hosts einzeln mit “pcs status” ob die Hosts sich gegenseitig als “online” sehen und ob die Cluster-Resource(n) vorhanden sind.

Die harte Tour: Konfig neu anlegen.

Für den unwahrscheinlichen Fall, dass ein Fehler hartnäckiger ist, kann aus Zeitgründen die Konfiguration auch kurzerhandgelöscht und neu gestartet werden.

Dazu stoppen Sie auf beiden Hosts alle Dienste und löschen anschließend die Konfigurationsdateien auf beiden Hosts. Danach legen Sie die Konfiguration (wie oben beschrieben) neu an.

Das ist in vielen Fällen einfacher und vor allem schneller als eine langwierige Fehlersuche.

Vorgehen:

1
2
3
4
5
6
# Dienste stoppen
service corosync stop; service pacemaker stop; service pcsd stop;
# Konfig Dateien löschen
/etc/corosync/corosync.conf löschen
/etc/pacemaker -&gt; Dateien löschen.
#Ggf. Dienste deaktivieren

Danach noch mal neu aufsetzen wie oben beschrieben. (geht in der Regel schneller als eine lange Fehlersuche)

Weiterführende Infos