GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So richten Sie Nginx High Availability mit Pacemaker, Corosync und Crmsh unter Ubuntu 16.04 ein

In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie mit Pacemaker, Corosync und Crmsh einen geclusterten Nginx-Webserver mit hoher Verfügbarkeit erstellen. Wir werden einen Active-Passive-Cluster- oder Failover-Cluster-Nginx-Webserver mit Pacemaker auf Ubuntu 16.04 erstellen.

Herzschrittmacher ist eine Open-Source-Cluster-Manager-Software, die eine maximale Hochverfügbarkeit Ihrer Dienste erreicht. Es ist ein fortschrittlicher und skalierbarer HA-Cluster-Manager, der seit 2007 von ClusterLabs entwickelt wird.

Der Corosync Cluster Engine ist ein Open-Source-Projekt, das 2008 aus dem OpenAIS-Projekt abgeleitet und unter der BSD-Lizenz veröffentlicht wurde. Es ist ein Gruppenkommunikationssystem mit zusätzlichen Funktionen zur Implementierung von Hochverfügbarkeit in Anwendungen.

Für die Pacemaker-Oberfläche und Crmsh sind mehrere Anwendungen verfügbar Ist einer von ihnen. Es ist eine Pacemaker-Befehlszeilenschnittstelle zur Verwaltung des Pacemaker High Availability Stack. Crmsh ist in Python geschrieben. Wir können den Pacemaker HA-Stack mit dem Crmsh-Befehlszeilentool erstellen, konfigurieren und Fehler beheben.

Voraussetzungen

  • Drei Ubuntu 16.04-Server
    • web01       10.0.15.11
    • web02       10.0.15.12
    • web03       10.0.15.13
  • Eine Floating-IP-Adresse 10.0.15.15
  • Root-Berechtigungen

Was werden wir tun?

  1. Mapping der Hosts-Datei.
  2. Nginx installieren und konfigurieren.
  3. Installieren Sie Pacemaker, Corosync und Crmsh.
  4. Corosync-Schlüssel konfigurieren.
  5. Alle Dienste starten.
  6. Cluster erstellen und konfigurieren.
  7. Testen.

Schritt 1 - Zuordnen der Hosts-Datei

Hinweis:
Führen Sie Schritt 1 - 3 auf allen drei Servern 'web01', 'web02', 'web03' aus.

In diesem Tutorial werde ich 3 Ubuntu 16.04-Server verwenden und jeder von ihnen hat einen eindeutigen Hostnamen:„web01“, „web02“ und „web03“. Jeder Server kann sich mit dem Hostnamen des Servers mit den anderen Servern verbinden.

Um dies zu erreichen, bearbeiten Sie die Datei ‚/etc/hosts‘ auf allen Servern mit vim.

vim /etc/hosts

Fügen Sie die /etc/hosts-Konfiguration unten ein.

10.0.15.11      web01
10.0.15.12      web02
10.0.15.13      web03
10.0.15.15      ha-web.co

Speichern Sie die Datei und beenden Sie vim.

Als nächstes testen Sie alle Server, indem Sie die anderen Server über jeden Hostnamen anpingen.

ping -c 3 web01
ping -c 3 web02
ping -c 3 web03

Schritt 2 – Nginx installieren und konfigurieren

Jetzt beginnen wir damit, das Hochverfügbarkeits-Setup des Nginx-Webservers zu erstellen, indem wir den Failover-Cluster mit Pacemaker erstellen. Wir müssen Nginx zuerst auf jedem der Serverknoten installieren.

Installieren Sie Nginx mit dem folgenden apt-Befehl.

apt install -y nginx

Wenn die Installation abgeschlossen ist, ersetzen Sie die Standardseite von nginx durch eine eindeutige Seite auf jedem Server, indem Sie die folgenden Befehle ausführen, damit wir später feststellen können, welcher Server eine Seite geliefert hat.

#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /var/www/html/index.html

#Run Command on 'web02'
echo '<h1>web02 - hakase-labs</h1>' > /var/www/html/index.html

#Run Command on 'web03'
echo '<h1>web03 - hakase-labs</h1>' > /var/www/html/index.html

Stoppen Sie nun den Webserver.

systemctl stop nginx

Die Installation und Konfiguration von Nginx ist abgeschlossen.

Schritt 3 – Installieren Sie Pacemaker, Corosync und Crmsh

Pacemaker ist eine Open-Source-Cluster-Manager-App. Corosync ist eine Cluster-Engine für Pacemaker und Crmsh ist ein Python-basiertes Tool zum Verwalten eines Pacemaker-Clusters. Alle diese Anwendungen sind im Uubuntu-Repository verfügbar.

Installieren Sie Pacemaker, Corosync und crmsh mit dem folgenden apt-Befehl.

apt install -y pacemaker corosync crmsh

Nach der Installation laufen alle diese Dienste automatisch auf dem System. Stoppen Sie sie mit den folgenden systemctl-Befehlen.

systemctl stop corosync
systemctl stop pacemaker

Der Software-Stack, der die Hochverfügbarkeit für Nginx bereitstellt, wurde installiert.

Schritt 4 – Corosync konfigurieren

Hinweis:
Führen Sie Schritt 4 nur auf dem Server „web01“ aus.

Da wir pcsd nicht für Ubuntu verwenden, müssen wir Corosync manuell konfigurieren. Wir generieren den Corosync-Schlüssel für die Cluster-Authentifizierung und erstellen eine neue Corosync-Konfigurationsdatei auf dem Server „web01“, kopieren dann den Schlüssel und die Konfiguration auf die anderen Server „web02“ und „web03“.

Bevor wir den Corosync-Schlüssel generieren, müssen wir das neue Paket „haved“ installieren. Es wird verwendet, um bessere Zufallszahlen für die Corosync-Schlüsselgenerierung zu erhalten.

Installieren Sie haveged aus dem Repository mit dem apt-Befehl.

apt install -y haveged

Generieren Sie nun mit dem folgenden Befehl einen neuen Corosync-Schlüssel.

corosync-keygen

Wenn die Schlüsselgenerierung abgeschlossen ist, können Sie den neuen Schlüssel „authkey“ im Verzeichnis „/etc/corosync/“ sehen.

ls -lah /etc/corosync/

Gehen Sie als Nächstes in das Verzeichnis „/etc/corosync“ und sichern Sie die Standardkonfigurationsdatei „corosync.conf“.

cd /etc/corosync/
mv corosync.conf corosync.conf.bekup

Erstellen Sie dann mit vim eine neue Konfigurationsdatei ‚corosync.conf‘.

vim corosync.conf

Fügen Sie die untenstehende Konfiguration in diese Datei ein.

# Totem Protocol Configuration
totem {
  version: 2
  cluster_name: hakase-cluster
  transport: udpu

# Interface configuration for Corosync
  interface {
    ringnumber: 0
    bindnetaddr: 10.0.15.0
    broadcast: yes
    mcastport: 5407
  }
}

# Nodelist - Server List
nodelist {
  node {
    ring0_addr: web01
  }
  node {
    ring0_addr: web02
  }
  node {
    ring0_addr: web03
  }
}

# Quorum configuration
quorum {
  provider: corosync_votequorum
}

# Corosync Log configuration
logging {
  to_logfile: yes
  logfile: /var/log/corosync/corosync.log
  to_syslog: yes
  timestamp: on
}

service {
  name: pacemaker
  ver: 0
}

Speichern Sie die Datei und verlassen Sie den Editor.

Kopieren Sie als Nächstes den Authentifizierungsschlüssel und die Konfigurationsdatei vom Server „web01“ auf die Server „web02“ und „web03“.

scp /etc/corosync/* [email protected]:/etc/corosync/
scp /etc/corosync/* [email protected]:/etc/corosync/

Wenn alles fertig ist, gehen Sie zu den Servern „web02“ und „web03“ und überprüfen Sie die Dateien.

ssh [email protected]
cd /etc/corosync/
ls -lah

Die Corosync-Konfiguration wurde abgeschlossen.

Schritt 5 – Alle Clusterdienste starten

Hinweis:
Führen Sie Schritt 5 auf allen Servern aus.

Starten Sie den HA-Cluster-Software-Stack, Pacemaker und Corosync auf allen Servern. Aktivieren Sie dann den automatischen Start beim Booten.

Starten Sie Corosync und fügen Sie es hinzu, damit es beim Booten automatisch startet.

systemctl start corosync
systemctl enable corosync

Starten Sie nun den Pacemaker und aktivieren Sie ihn so, dass er beim Booten startet.

systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemaker

Alle Dienste wurden gestartet, überprüfen Sie alle Knoten und stellen Sie sicher, dass der Serverstatus auf allen 'Online' ist.

crm status

Oder Sie können den Status überprüfen, indem Sie die Corosync-Mitglieder mit dem Befehl corosync-cmapctl unten überprüfen.

corosync-cmapctl | grep members

Sie sehen alle Server-IP-Adressen.

Schritt 6 – Cluster erstellen und konfigurieren

HINWEIS:
Schritt 6 nur auf web01-Server ausführen

In diesem Schritt konfigurieren wir den Aktiv-Passiv-Nginx-Cluster mit dem crmsh-Befehlszeilentool. Da wir kein STONITH-Gerät verwenden, möchten wir STONITH deaktivieren und die Quorum-Richtlinie auf unserem Cluster ignorieren.

Führen Sie die folgenden CRM-Befehle aus, um „STONITH“ zu deaktivieren und die Quorum-Richtlinie zu ignorieren.

crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignore

Überprüfen Sie nun den STONITH-Status und die Quorum-Richtlinie mit dem crm-Befehl unten.

crm configure show

Das Ergebnis sehen Sie unten.

Als Nächstes müssen wir einige neue Ressourcen für den Cluster erstellen. Pacemaker unterstützt die folgenden Arten von Resource Agents (RA).

  • LSB (Linux Standard Based) – Wird von der Linux-Distribution bereitgestellt. Beispiel:'/etc/init.d/service'-Skript.
  • OCF (Open Cluster Framework) - Werkzeugsatz für Cluster-Computing. Das Projekt ist Teil der Linux Foundation.

Für unseren Nginx HA-Webserver müssen wir zwei OCF-Ressourcen erstellen:„virtual_ip“ für die Floating-IP und „webserver“ für den Nginx-Dienst.

Erstellen Sie mit dem folgenden crm-Befehl eine neue Ressource „virtual_ip“ für die Floating-IP-Konfiguration.

sudo crm configure primitive virtual_ip \
ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
cidr_netmask="32" op monitor interval="10s" \
meta migration-threshold="10"

Und für den nginx-'Webserver' erstellen Sie die Ressource mit dem folgenden Befehl.

sudo crm configure primitive webserver \
ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
op start timeout="40s" interval="0" \
op stop timeout="60s" interval="0" \
op monitor interval="10s" timeout="60s" \
meta migration-threshold="10"

Wenn dies erledigt ist, überprüfen Sie die neuen Ressourcen „virtual_ip“ und „webserver“ mit dem folgenden Befehl. Stellen Sie sicher, dass alle Ressourcen den Status „gestartet“ haben.

crm resource status

Schließlich müssen wir eine Gruppe für die neue Konfiguration des Failover-IP-Dienstes hinzufügen. Wir möchten den „Nginx“-Dienst auf eine „Webserver“-Ressource mit einer Floating-IP auf eine „virtual_ip“-Ressource migrieren.

Wir haben bereits die Floating-IP und den Dienst erstellt, fügen Sie diese Ressourcen nun mit dem folgenden Befehl zu einer neuen Gruppe namens „hakase_balancing“ hinzu. Sie können hier natürlich Ihren eigenen Gruppennamen wählen, stellen Sie nur sicher, dass Sie den Namen dort ersetzen, wo er verwendet wird.

sudo crm configure group hakase_balancing virtual_ip webserver

Eine neue Gruppe von Ressourcen mit dem Namen „hakase_balancing“ wurde definiert. Sie können dies mit dem folgenden Befehl überprüfen.

crm resource show

Sie erhalten eine Gruppe namens hakase_balancing mit Mitgliedern „virtual_ip“ und „webserver“-Ressourcen.

Die Clusterkonfiguration ist abgeschlossen.

Schritt 7 – Testen

Knotenstatus und Clusterstatus testen.

crm status

Wir haben 3 Knoten mit Status 'Online'.

Wir haben eine Ressourcengruppe namens „hakase_balancing“, die jetzt auf dem Knoten „web01“ ausgeführt wird.

Testen des Nginx-Webservers über einen Webbrowser. Besuchen Sie die Floating-IP-Adresse, der Name meines Testservers lautet - ha-web.co . Verwenden Sie hier den Namen, den Sie für Ihren Server gewählt haben.

Alle Ressourcen befinden sich auf dem Knoten „web01“.

Aktiv-Passiv-Cluster oder Failover testen

Stoppen Sie den Cluster auf dem Server „web01“, indem Sie den folgenden Befehl auf dem Knoten „web01“ ausführen.

crm cluster stop

Sie erhalten das Ergebnis 'INFO:Cluster-Dienste gestoppt '.

Melden Sie sich jetzt beim Knoten „web02“ an und überprüfen Sie den Clusterstatus.

crm status


Jetzt erhalten Sie das Ergebnis, dass der Knoten 'web01' 'Offline' ist und die Ressourcen von virtual_ip und webserver auf den Knoten 'web02' umgeschaltet werden.

Beim erneuten Aufrufen der Floating-IP 'ha-web.co ', erhalten Sie die Seite web02.

Nginx High Availability mit Pacemaker, Corosync und Crmsh auf Ubuntu 16.04 wurde erfolgreich installiert und getestet.


Ubuntu
  1. So konfigurieren Sie Ihre Ubuntu-Firewall mit UFW und legen Firewall-Regeln fest

  2. So richten Sie MariaDB High Availability mit Heartbeat und DRBD unter Ubuntu 16.04 LTS ein

  3. So installieren Sie Nginx mit PHP5 und MySQL unter Ubuntu 11.10

  4. So installieren und konfigurieren Sie PHP und Nginx (LEMP) unter Ubuntu 20.04

  5. So richten Sie Nginx High Availability Cluster mit Pacemaker unter CentOS 7 ein

So installieren Sie Django mit PostgreSQL und Nginx unter Ubuntu 16.04

So installieren Sie Nginx mit PHP und MySQL (LEMP Stack) unter Ubuntu 18.04

So installieren Sie Wordpress mit Nginx, MariaDB und HHVM in Ubuntu 15.04

So installieren Sie den OWASP-Kernregelsatz auf Modsecurity mit Nginx unter Ubuntu 20.04

So richten Sie ModSecurity mit Nginx unter Debian/Ubuntu ein

So richten Sie einen Seafile-Server mit Nginx unter Ubuntu 18.04 ein