Distributionswechsel auf CloudLinux -- IP-Weiterleitung / Portweiterleitung via socat
Wenn ein neuer Server und alle darauf angelegten Domains unter der IP des alten (Quell-) servers erreichbar gemacht werden sollen, empfiehlt sich immer die die IP-Weiterleitung.
Aber auch bei Massenmigrationen, bei denen eine neue IP in Kauf genommen wird, sollte eine IP-Weiterleitung vom alten auf den neuen Server erfolgen. Stichworte: DNS-Cache, TTL, externe Domainverwaltung
Migration aller Abos vom Quellserver auf den Zielserver
- 1. Stoppe auf dem Quellserver den iptables und fail2ban Dienst
service fail2ban stop && service iptables stop- Beziehungsweise stoppe die Plesk Firewall sofern diese schon im Einsatz ist.
- 1a. Sofern installiert und aktiv, stoppe in Plesk den Watchdog
- 2. Starte auf dem Zielserver den Migrationsmanager und migriere ALLE Kundenabos. Das dauert etwas. Mache in der Zwischenzeit etwas anderes. Richte zum Beispiel den nächsten Zielserver ein.
- Schaue inwieweit Du die erhaltenen Warnmeldung vor der Migration auf dem Quellserver beheben must, oder ob Du diese Warnungen ignorieren, bzw. die Fehler auf dem Zielserver beheben kannst.
- 2a. Nachdem zunächst mal alle Abos auf dem Zielserver gelandet sind, passe noch keine Servicepakete o.ä. an, denn Du willst zum mit dem Kunden vereinbarten Termin noch einmal eine finale Synchronisierung machen.
- [3. Anlegen der Sym-Links, so wie sie auf dem Quellserver auch bestanden haben]*
- Dieser Schritt ist notwendig, weil Du sicherlich nicht Lust hast den Dokumentenstamm in jedem einzelnen Abo und jeder Kundeninstallation anzupassen.
- Leider wurde früher mit diesen Symlinks gearbeitet, damit der Kunde nicht "var/www/vhosts/web1.wwwx.hostkraft.de/httpdocs" als Dokumentenpfad verwenden musste, sondern nur "/var/www/web1". Rächt sich jetzt und bei jeder Migration, sollte also tendenziell im Nachgang behoben werden.
- [3a. Symlink erstellen (sudo -i)]*
- Zum Beispiel für einen Symlink von web1.www12.hostkraft.de auf web1
cd /var/www/ && ln -s /var/www/vhosts/web1.www12.hostkraft.de/ /var/www/web1- * Nur bei Migrationen innerhalb CentOS oder CentOS->Almalinux o.ä. möglich
- 3. Schaue, welche Symlinks auf dem Quellserver bestanden haben und passe die Konfigurationen der Shopsysteme und .htaccess auf den komplett Dokumentenstamm an.
- 4. Der Migrator legt in vielen Fällen kein "selector dir" für die migrierten User an. Du machst das also einmal global. (sudo -i)
/usr/sbin/cagefsctl --rebuild-alt-php-ini && /usr/sbin/cagefsctl --force-update- Dieser Schritt ist nach jeder Synchronisation erforderlich!
- 5. Wähle nun in Plesk, im Kundenabo, via PHP-Selector die vom Kunden verwendete PHP-Version aus.
- 6. Finale Synchronisierung der Kundendaten
- Gehe dazu in den Migrations Manager, klicke vorn auf die IP der Migration und in dem darauf folgenden Fenster findest du die Option [Erneut synchronisieren]
- 6. Nachdem die Abos final synchronisiert sind, passe unbedingt die mit migrierten Servicepakete an, ordne dem migrierten Kunden am besten ein passendes aktuelles Paket zu
- Ressorcen
- "Acronis Backup Limit" -> 7
- Berechtigungen
- "Verwaltung des Zugriffs auf den Server via SSH" -> Zugriff nur auf chrooted-Umgebung erlauben
- "Verwaltung von PHP-Version und -Handler" -> DEAKTIVIEREN
- "Backup und Wiederherstellung der Abonnement-Daten mittels Serverspeicher" -> AUS
- "Backup und Wiederherstellung der Abonnement-Daten mithilfe des Remote-Speichers" -> AUS
- "Acronis Backup" AKTIVIEREN
- "Weitere verfügbare Berechtigungen anzeigen" -> "Verwaltung von Domains" -> DEAKTIVIEREN
- Hosting-Parameter >
- "Webbenutzer dürfen Skripte nutzen" -> aktivieren
- "FastCGI-Unterstützung" -> aktivieren
- PHP-Einstellungen
- "HP-Unterstützung (PHP-Version)" -> eine fastcgi Version auswählen
Die eigentliche Portweiterleitung vom Quellserver auf den neuen Zielserver
- 1. Logge Dich als User "root" auf dem Quellserver ein
Die Weiterleitung wird über den Dienst SOCAT realisiert. Hierfür benötigst Du neben socat, ein Script
(Installation "socat" siehe weiter unten "Zusatzinformationen")
- 1. Scriptdownload
wget --user=Shopbenutzer12 --password='9k2aS2s' -P /root/ https://www.estugo.de/files/scripts/umzugspaket.zip
unzip -o umzugspaket.zip
- 2. Oder Script anlegen
mcedit socat.sh
Inhalt:
#!/bin/bash
ulimit -n 64000
socat -s TCP-LISTEN:143,fork,reuseaddr,bind=$1 TCP:$2:143 &
socat -s TCP-LISTEN:587,fork,reuseaddr,bind=$1 TCP:$2:587 &
socat -s TCP-LISTEN:80,fork,reuseaddr,bind=$1 TCP:$2:80 &
socat -s TCP-LISTEN:465,fork,reuseaddr,bind=$1 TCP:$2:465 &
socat -s TCP-LISTEN:25,fork,reuseaddr,bind=$1 TCP:$2:25 &
socat -s TCP-LISTEN:443,fork,reuseaddr,bind=$1 TCP:$2:443 &
socat -s TCP-LISTEN:110,fork,reuseaddr,bind=$1 TCP:$2:110 &
socat -s TCP-LISTEN:993,fork,reuseaddr,bind=$1 TCP:$2:993 &
socat -s TCP-LISTEN:995,fork,reuseaddr,bind=$1 TCP:$2:995 &
socat -s TCP-LISTEN:21,fork,reuseaddr,bind=$1 TCP:$2:21 &
socat -s TCP-LISTEN:20,fork,reuseaddr,bind=$1 TCP:$2:20 &
socat -s TCP-LISTEN:989,fork,reuseaddr,bind=$1 TCP:$2:989 &
socat -s TCP-LISTEN:990,fork,reuseaddr,bind=$1 TCP:$2:990 &
socat -s TCP-LISTEN:8443,fork,reuseaddr,bind=$1 TCP:$2:8443 &
socat -s TCP-LISTEN:8447,fork,reuseaddr,bind=$1 TCP:$2:8447 &
socat -s TCP-LISTEN:3306,fork,reuseaddr,bind=$1 TCP:$2:3306 &
socat -s TCP-LISTEN:7080,fork,reuseaddr,bind=$1 TCP:$2:7080 &
socat -s TCP-LISTEN:7081,fork,reuseaddr,bind=$1 TCP:$2:7081 &
socat -s TCP-LISTEN:8880,fork,reuseaddr,bind=$1 TCP:$2:8880 &
socat -s TCP-LISTEN:953,fork,reuseaddr,bind=$1 TCP:$2:953 &
socat -s TCP-LISTEN:53,fork,reuseaddr,bind=$1 TCP:$2:53 &
socat -s UDP-LISTEN:53,fork,reuseaddr,bind=$1 UDP:$2:53 &
Ports können hier nach Bedarf weggelassen oder hinzugefügt werden.
- 2. Script ausführbar machen
chmod +x socat.sh
Alle Dienste stoppen, die das Script "umleiten" soll und Umleitung starten
- 1. Alle für die Weiterleitung relevanten Dienste müssen natürlich gestoppt werden, damit sie nicht mehr auf den Ports lauschen, auf die socat nun zugreifen soll. (siehe ganz unten)
Erst im Anschluss kann eine Portweiterleitung per socat erfolgen.
- 2. Gestartet wird die Weiterleitung dann mittels
./socat.sh QUELL-IP ZIEL-IP
Bitte beachte, dass für die Dauer dieser Weiterleitung der fail2ban auf dem Zielsystem beendet werden oder die IP des Quellsystems in die Whitelist werden sollte, damit die Quell-IP nicht ggf. durch den fail2ban blockiert wird.
- 3. Noch ein Tipp
- Damit die Weiterleitungen rebootfest sind, die nicht mehr benötigten Dienste mittels
- CentOS7 ->
systemctl disable $Service
- CentOS6 ->
chkconfig $Service off
nicht mehr automatisch starteten lassen und das
./socat.sh QUELL-IP ZIEL-IP
in /etc/rc.local eintragen.
- 4. Info an Dogado, dass der Switch der IP-Adressen von Quellserver und Zielserver erfolgen soll.
Arbeite hier mit der ContainerID, denn die Server haben den gleichen Namen!
Prüfe die Erreichbarkeit der Kundendomains
Im besten Fall hast Du eine Liste der Domains, die VOR dem Start des Scripts auf dem Quellserver funktionierten und prüfst nun, ob jede dieser Domains auf dem neuen Server ebenso funktioniert.
Deaktiviere den Server in Zabbix, denn sonst würde Dir andauernd gemeldet, dass der Server down ist.
Shared-Server: http://sharon.estugo.de/
Managed-vServer: http://zabbix.estugo.de/zabbix/ oder http://mamonix.estugo.de/
Configuration > Hosts > Status -> Dort einfach auf "Enabled" klicken -> ändert sich zu disabled
Was ist nach dem IP-Switch zu erledigen?
- Wenn Dogado bestätigt hat, dass der Switch der IP von Alt auf Neu erfolgt ist, muss Plesk entsprechend rekonfiguriert werden. (Beachte den nachfolgenden Punkt hierzu)
Remapping der IP auf dem Zielserver WICHTIG!
Hinweis: Die neue IP darf nicht unter Plesk> Extras & Einstellungen> IP-Adressen hinzugefügt werden, bevor Du die folgenden Anweisungen anwendest. Entfernen die IP, falls Du sie bereits hinzugefügt hast!
Plesk macht sehr genaue Angaben wie dieser Vorgang erfolgen soll: https://support.plesk.com/hc/en-us/articles/115001761193-How-to-change-the-IP-address-of-the-Plesk-server-
Hinzufügen des "neuen" Servers zu Zabbix
- 1. Lösche den Host, den Du am Vorabend deaktiviert hast aus Zabbix (Shabbix)
- 2. Installiere den zabbix-Agenten auf dem neuen Server. Dieser verbindet sich dann ganz von alleine mit dem Zabbix/Shabbix und fügt den Server dort hinzu
-
- Wechseln in das Zabbix-Verzeichnis
cd /root/zabbix_bereitstellung- Ausführen des Installationsscripts
bash AddNodeToZabbix.sh
Stoppen des alten Servers
- 1. Stoppe den alten Server und sende Deinen Kollegen die neuen Zugangsdaten
- 2. Um Speicherplatz freizugeben und auch die IP wieder verfügbar zu haben, setze Dir einen Termin für die Löschung des alten Servers +14 Tage
Zusatzinformationen
Freilich muss zunächst socat installiert werden. Das ist auf Maschinen mit CentOS6 nicht zu einfach, aber es geht:
- Die einfache Installation via yum scheitert zuverlässig daran, dass es für CentOS6 keine Standard yum-Repos mehr gibt. Alles was Du via yum machen willst, scheitert also.
- 1. Du musst also yum erstmal ein funktionierende Repos geben
curl https://www.getpagespeed.com/files/centos6-eol.repo --output /etc/yum.repos.d/CentOS-Base.repo
- Der Befehl zieht sich eine yum-Repo-Konfiguration mit funktionierenden Repos und schreibt diese gleich in die entsprechende yum-Konfiguration
- Genau nachlesen kannst Du das hier https://www.getpagespeed.com/server-setup/how-to-fix-yum-after-centos-6-went-eol
- 2. Spezielles Repo für socat hinzufügen
rpm -Uvh https://forensics.cert.org/cert-forensics-tools-release-el6.rpm
- 3. Installation von socat unter Verwendung dieses Repos
yum --enablerepo=forensics install socat
- 4. Repo deaktivieren (man weiß ja nie)
rpm -e cert-forensics-tools-release
Zu stoppende Dienste könnten sein:
service postfix stop && service saslauthd stop && service courier-authdaemon stopservice xinetd stopservice spamassassin stopservice psa stopservice sw-engine stopservice sw-cp-server stopservice courier-imapd stop && service courier-imaps stopservice courier-pop3d stop && service courier-pop3s stopservice crond stopservice mysqld stopservice mariadbd stopservice httpd stop && service nginx stop && service zabbix-agent stop
Hinterher via ps faux schauen ob noch Dienste laufen und ggfs. via netstat -tulpn schauen, ob noch ein Dienst auf einem Port lauscht den man weiterleiten möchte.