Externen Datenbankserver
-
- Debian 11|12
- CloudPanel
-
Foxly -
15. März 2024 um 09:45 -
0 Kommentare -
299 Mal gelesen
Im Zeitraum vom 09.04.2024 - 28.03.2025 ist der Support eingeschränkt. In dem genannten Zeitraum, befinde ich mich auf einer Weiterbildung.
Externen Datenbankserver für CloudPanel
Einleitung
Die Nutzung externer Datenbankserver markiert einen bedeutsamen Fortschritt in der Entwicklung von Datenmanagementlösungen. In einer Ära, in der die Datenmengen exponentiell anwachsen und vielfältige Anforderungen an die Datenverwaltung entstehen, gewinnt die Skalierbarkeit und Performance zunehmend an Bedeutung. Externe Datenbankserver stellen eine transformative Lösung dar, die es ermöglicht, Daten effizienter zu handhaben, flexible Skalierbarkeit zu realisieren und gleichzeitig eine herausragende Leistung sicherzustellen.
Die Fähigkeit zur Skalierbarkeit externer Datenbankserver erweist sich als entscheidender Vorteil in einer sich ständig wandelnden Umgebung. Durch die Anpassung von Ressourcen nach Bedarf, sei es horizontal oder vertikal, können Organisationen flexibel auf das kontinuierliche Datenwachstum reagieren. Diese Flexibilität erlaubt es, die Infrastruktur dynamisch an wechselnde Anforderungen anzupassen, sei es durch einen plötzlichen Anstieg der Datenlast oder die Integration neuer Anwendungen und Benutzer.
Die Performance externer Datenbankserver bildet einen weiteren Schlüsselaspekt dieser fortschrittlichen Technologie. Durch die Auslagerung von Datenmanagementprozessen an spezialisierte Serverinfrastrukturen wird eine optimierte Leistung erreicht. Die Möglichkeit, Datenbankserver mit leistungsfähigen Ressourcen auszustatten und sie bei Bedarf zu erweitern, führt zu schnelleren Antwortzeiten, verbesserten Abfrageergebnissen und einer insgesamt effizienteren Datenverarbeitung.
Voraussetzungen
Dieses komplette Tutorial, basiert auf der Hetzner Cloud. Wir machen uns das »lokale Netzwerk« in der Rubrik Netzwerk zunutze, damit der zukünftige Datenbankserver ausschließlich lokal erreichbar ist. Des Weiteren wird er trotzdem über einen Server via NAT (Network Address Translation) an das Internet angebunden.
- Debian 12
- Mindestens einen CAX11 / CX11 (dies bildet unseren Datenbankserver).
- Mindestens einen weiteren Server mit einer öffentlichen IPv4-Adresse.
Server Erstellung und Einrichten von NAT
Hierfür habe ich ein kleines Video erstellt, welche alle Schritte beinhaltet.
NAT-Server
Diese Schritte werden auf dem NAT-Server ausgeführt
echo 1 > /proc/sys/net/ipv4/ip_forward
Bearbeiten der /etc/network/interfaces. Diese sollte nun wie folgt aussehen:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5)
# Include files from /etc/network/interfaces.d:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/16' -o eth0 -j MASQUERADE
Alles anzeigen
Der Server sollte jetzt zur Sicherheit einmal neu gestartet werden. Dies geht recht einfach mit diesem Befehl:
shutdown -r now
Client-Server
Diese Schritte werden auf dem Client Server ausgeführt, welcher nur eine lokale IPv4-Adresse besitzt.
Bearbeiten der /etc/network/interfaces. Sollte Sie ein anderes Interface als ens10 nutzen, passen Sie dies entsprechend an.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5)
# Include files from /etc/network/interfaces.d:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto ens10
iface ens10 inet dhcp
post-up ip route add default via 10.0.0.1
dns-nameserver 1.1.1.1
Alles anzeigen
Installation und Konfiguration der Datenbank
Bitte beachtet, dass aktuell keine offiziellen MySQL Pakete für Debian auf ARM64 Hardware bereitstehen. Hier lohnt sich der Einsatz von Intel/AMD X86_X64.
Verbinden Sie sich über Ihren NAT-Server mit Ihrem zukünftigen Datenbankserver. Im Anschluss können Sie bereits loslegen, MySQL zu installieren.
apt update && apt upgrade -y && apt autoremove -y && apt install wget
Hinzufügen der Paketquellen von MySQL:
wget https://repo.mysql.com//mysql-apt-config_0.8.28-1_all.deb && dpkg -i mysql-apt-config_0.8.28-1_all.deb
Hier könnt Ihr das aktuelle Repository herunterladen.
MySQL :: Download MySQL APT Repository
apt update && apt install mysql-server
Im darauffolgenden Fenster vergeben Sie ein root Passwort für MySQL. Im Anschluss daran, folgt die Abfrage, welche Passwortverschlüsselung genutzt werden soll. Hier wählen Sie die zweite Option. Sollten Sie allerdings kein CloudPanel nutzen, können Sie die empfohlene Einstellung mit ENTER bestätigen.
Ist die Installation abgeschlossen, folgt dieser Befehl:
mysql_secure_installation
und sollte dann wie folgt aussehen:
root@debian-2gb-fsn1-4:~# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Using existing password for root.
Estimated strength of the password: 25
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : N
... skipping.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Alles anzeigen
MySQL Konfiguration:
Öffnen Sie mit NANO oder VIM folgende Datei /etc/mysql/mysql.conf.d/mysqld.cnf und tragen Sie hier folgendes ein.
# Copyright (c) 2014, 2023, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
log-error-verbosity = 1
expire_logs_days = 7
bind-address = 0.0.0.0
innodb_file_per_table
default-authentication-plugin = mysql_native_password
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
init-connect = 'SET NAMES utf8mb4'
thread_cache_size = 32
table_open_cache = 2048
sort_buffer_size = 8M
innodb = force
;innodb_buffer_pool_size = 1G
innodb_buffer_pool_size = 512M
innodb_log_file_size = 1GB
innodb_stats_on_metadata = OFF
innodb_buffer_pool_instances = 8
innodb_log_buffer_size = 10M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 6
join_buffer_size = 8M
tmp_table_size = 128M
key_buffer_size = 128M
max_allowed_packet = 64M
max_heap_table_size = 128M
read_rnd_buffer_size = 16M
read_buffer_size = 2M
bulk_insert_buffer_size = 64M
max_connections = 512
myisam_sort_buffer_size = 128M
explicit_defaults_for_timestamp = 1
open_files_limit = 65535
table_definition_cache = 1024
table_open_cache = 2048
log_bin_trust_function_creators = 1
disable_log_bin
skip-host-cache
skip-name-resolve
Alles anzeigen
Speichern und schließen Sie die Konfigurationsdatei und starten den MySQL-Dienst einmal neu.
systemctl restart mysql
Mit dem Befehl mysql --version können Sie die Version von MySQL überprüfen.
Loggen Sie sich bei MySQL ein:
mysql -u root -p
Listen Sie einmal alle Benutzer und Hosts mit diesem Befehl auf:
SELECT user,host FROM mysql.user;
Hier können Sie gut sehen, dass der Benutzer root nur lokal genutzt werden kann. Da wir aber die Datenbank über CloudPanel steuern wollen, benötigen wir die Möglichkeit, mit dem root Benutzer via Remote zuzugreifen. Natürlich kann hier auch ein eigener Nutzer angelegt werden. Da dieser Server lediglich lokal erreichbar ist, macht dies in meinen Augen keinen Sinn. Nutzen Sie folgenden Befehl, damit der root nicht nur lokal erreichbar ist.
RENAME USER 'root'@'localhost' TO 'root'@'%';
OPTIONAL: Das % gibt den host an, hier könnten Sie es auf eine IP-Adresse begrenzen. Wollen Sie aber die Datenbank auch bei weiteren Servern nutzen, können Sie mit dem % alle zulassen. Überprüfen Sie, ob der Befehl funktioniert hat, indem Sie sich die user und hosts noch einmal anzeigen lassen.
mysql> SELECT user,host FROM mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
Die Datenbank wäre jetzt fertig konfiguriert und kann mit CloudPanel genutzt werden.
CloudPanel
Installieren Sie CloudPanel wie in unserem Tutorial hier beschrieben oder nutzten Sie direkt die Dokumentation von CloudPanel.io
Loggen Sie sich in Ihr CloudPanel Interface ein und navigieren Sie zu Admin Area → Settings → Database Servers.
Hier sehen Sie die lokale Datenbank, die CloudPanel mitliefert. Fügen Sie den neuen Datenbankserver hinzu.
Vergessen Sie nicht, den neuen Datenbankserver auf Aktiv zusetzten!
Nun können Sie auch schon loslegen, neue Datenbanken zu erstellen oder Backups zu importieren.
Firewall
CloudPanel nutzt und installiert als Firewall UFW. Damit die Namensauflösung auf unserem lokalen Datenbankserver funktioniert, muss hier etwas nachgeholfen werden.
Öffnen Sie die Konfigurationsdatei /etc/default/ufw :
nano /etc/default/ufw
Ändern Sie hier die DEFAULT_FORWARD_POLICY auf ACCEPT. Speichern und schließen Sie die Datei nach der Änderung wieder.
# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="ACCEPT"
Öffnen Sie die Konfigurationsdatei /etc/ufw/before.rules :
nano /etc/ufw/before.rules
Fügen Sie unten stehenden Code vor dem letzten COMMIT ein.
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from eth1 through eth0.
-A POSTROUTING -s 10.0.0.0/16 -o eth0 -j MASQUERADE
Speichern und schließen Sie die Datei und starten mit diesem Befehl die Firewall neu.
systemctl restart ufw
Fazit
Durch die geschaffene Skalierbarkeit und Performancesteigerung haben wir ein solides Grundgerüst. Natürlich darf hier der zusätzliche administrative Aufwand und die höheren Kosten nicht außer Acht gelassen werden. Auch sollte zunehmend darauf geachtet werden, dass die Serversicherheit ausreichend ist.
Über den Autor
Ich bin IT-Spezialist im Fachbereich der IT-Administratoren. Neben Beruf und Familie, erstelle ich als, Teil meines Hobbys, gerne Tutorials, sowie WoltLab Stile. Aktuell befinde ich mich auf meinem Informationstechnikermeister.
Kommentare
Neu erstellte Kommentare unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.
Neu erstellte Kommentare unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.