Für die Kommunikation innerhalb des Subnetzes sind folgende Ports für Galera und MySQL notwendig.
- Zwischen den Datenbank-Knoten: 3306, 4444, 4567, 4568
- Zugriff von den KeyCloak-Knoten: 3306
apt-get install apt-transport-https curl
curl -o /etc/apt/trusted.gpg.d/mariadb_release_signing_key.asc 'https://mariadb.org/mariadb_release_signing_key.asc'
sh -c "echo 'deb https://mirror1.hs-esslingen.de/pub/Mirrors/mariadb/repo/10.10/ubuntu jammy main' >>/etc/apt/sources.list"
apt update
apt-get install mariadb-server mariadb-client galera-4
mysql_secure_installation
cd /etc/apparmor.d/disable/
ln -s /etc/apparmor.d/usr.sbin.mariadbd
systemctl restart apparmor
# Configure the galera cluster in /etc/mysql/mariadb.conf.d/60-galera.cnf (see below)
service mariadb stop
Verzeichnis: /etc/mysql/mariadb.conf.d/60-galera.cnf
#
# * Galera-related settings
#
# See the examples of server wsrep.cnf files in /usr/share/mysql
# and read more at https://mariadb.com/kb/en/galera-cluster/
[sst]
tkey = /etc/my.cnf.d/certificates/client-key.pem
tcert = /etc/my.cnf.d/certificates/client-cert.pem
[galera]
# Mandatory settings
wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = "HHN RZ KeyCloak Galera Cluster"
# CAVE: We use gcom:// on the first initial node. Other nodes need the full address string
#wsrep_cluster_address = gcomm://IP1,IP2,IP3,IP4,IP5
wsrep_cluster_address = gcomm://
binlog_format = row
default_storage_engine = InnoDB
innodb_autoinc_lock_mode = 2
innodb_doublewrite = 1
# Allow server to accept connections on all interfaces.
bind-address = 0.0.0.0
# Optional settings
wsrep_slave_threads = 4
wsrep_sst_method = rsync
innodb_flush_log_at_trx_commit = 0
log_error = /var/log/mysql/error.log
# Node specific configuration - needs to be adjusted on every node!
wsrep_node_name = keydb01
wsrep_node_address = "<IP1>"
# TLS/SSL Confguration
ssl_cert = /etc/my.cnf.d/certificates/server-cert.pem
ssl_key = /etc/my.cnf.d/certificates/server-key.pem
ssl_ca = /etc/my.cnf.d/certificates/ca.pem
wsrep_provider_options="socket.ssl_cert=/etc/my.cnf.d/certificates/server-cert.pem;socket.ssl_key=/etc/my.cnf.d/certificates/server-key.pem;socket.ssl_ca=/etc/my.cnf.d/certificates/ca.pem"
- Achtung: Auf dem ersten Knoten unterscheidet sich die
wsrep_cluster_address
zu den übrigen Knoten, siehe Kommentar in der Konfiguration.
- Zertifikate erzeugen (wie unter CA beschrieben)
- Galera benötigt re-hashing der Zertifikate (auf jedem Cluster Mitglied):
openssl rehash /etc/my.cnf.d/certificates
- Auf dem ersten Knoten
galera_new_cluster
- Auf allen anderen Knoten
service mariadb start
mysql -u root -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
Auf einem der Cluster-Knoten
mysql -u root
create database keycloak;
show databases;
create user 'keycloak'@'%' identified by 'SomePassword';
grant all privileges on keycloak.* to 'keycloak'@'%';
Die Pakete sind mit apt-get mark hold
fixiert. Ein Update muss manuell gemäß offizieller Dokumentation erfolgen.