2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Offizielle Dokumentation:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html
Diese Lösung verwendet MinIO, das in einer Multi-Node-Multi-Driver- (MNMD) oder „verteilten“ Konfiguration bereitgestellt wird. MNMD-Bereitstellungen bieten Leistung, Verfügbarkeit und Skalierbarkeit auf Unternehmensniveau und sind die empfohlene Topologie für alle Produktions-Workloads.
MNMD-Bereitstellungen unterstützen Erasure-Coding-Konfigurationen, die den Verlust von bis zur Hälfte der Knoten oder Laufwerke in der Bereitstellung tolerieren können, während Lesevorgänge weiterhin ausgeführt werden.
Anforderungen für die Clusterbereitstellung
Die Knotenplanung und die Festplattenplanung sind wie folgt: Jeder Knoten bereitet vier Festplatten vor:
Knotenname | Knoten-IP | Minio-Disk | Einhängepunkt | Betriebssystem |
---|---|---|---|---|
minio1.example.com | 192.168.72.51 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/data1 /var/lib/minio/data2 /var/lib/minio/data3 /var/lib/minio/data4 | Ubuntu22.04 |
minio2.example.com | 192.168.72.52 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/data1 /var/lib/minio/data2 /var/lib/minio/data3 /var/lib/minio/data4 | Ubuntu22.04 |
minio3.example.com | 192.168.72.53 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/data1 /var/lib/minio/data2 /var/lib/minio/data3 /var/lib/minio/data4 | Ubuntu22.04 |
minio4.example.com | 192.168.72.54 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/data1 /var/lib/minio/data2 /var/lib/minio/data3 /var/lib/minio/data4 | Ubuntu22.04 |
lb1.example.com | 192.168.72.55 | - | - | Ubuntu22.04 |
lb2.example.com | 192.168.72.56 | - | - | Ubuntu22.04 |
VIP | 192.168.72.100 | - | - | - |
Beschreibung: Die VIP-Adresse wird aufgelöstminio.example.com
Der Domainname dient als einheitlicher Zugang.
http://minio.example.com
http://minio.example.com/minio/ui
Die Clusterarchitektur ist wie folgt:
Alle Minio-Knoten werden jeweils mit Hostnamen konfiguriert.
hostnamectl set-hostname minio1.example.com
hostnamectl set-hostname minio2.example.com
hostnamectl set-hostname minio3.example.com
hostnamectl set-hostname minio4.example.com
Alle Minio-Knoten werden separat mit Host-Auflösung konfiguriert.
cat >/etc/hosts<<EOF
192.168.72.51 minio1.example.com
192.168.72.52 minio2.example.com
192.168.72.53 minio3.example.com
192.168.72.54 minio4.example.com
EOF
Die Konfigurationszeiten aller Minio-Knoten werden synchronisiert.
Minio-Systeme mit mehreren Knoten müssen Zeit und Datum synchronisieren, um einen stabilen Betrieb und eine stabile Interaktion zwischen den Knoten zu gewährleisten.
apt install -y chrony
systemctl enable --now chrony
timedatectl set-timezone Asia/Shanghai
Jeder Knoten mountet 4 Festplatten, von denen sda die Systemfestplatte ist:
root@minio1:~# lsblk -d -n -o NAME | grep '^sd'
sda
sdb
sdc
sdd
sde
Erstellen Sie auf jedem Knoten vier Verzeichnisse, um die vier Laufwerke bereitzustellen:
sudo mkdir -p /var/lib/minio/data1
sudo mkdir -p /var/lib/minio/data2
sudo mkdir -p /var/lib/minio/data3
sudo mkdir -p /var/lib/minio/data4
Formatieren Sie auf jedem Knoten die Festplatte mit dem XFS-Dateisystem:
sudo mkfs.xfs /dev/sdb -L DISK1
sudo mkfs.xfs /dev/sdc -L DISK2
sudo mkfs.xfs /dev/sdd -L DISK3
sudo mkfs.xfs /dev/sde -L DISK4
Konfigurieren Sie die automatische Bereitstellung
cat >>/etc/fstab<<EOF
LABEL=DISK1 /var/lib/minio/data1 xfs defaults,noatime 0 2
LABEL=DISK2 /var/lib/minio/data2 xfs defaults,noatime 0 2
LABEL=DISK3 /var/lib/minio/data3 xfs defaults,noatime 0 2
LABEL=DISK4 /var/lib/minio/data4 xfs defaults,noatime 0 2
EOF
alles einbauen /etc/fstab
Dateisystem in der Datei definiert, aber noch nicht gemountet
sudo mount -av
Bestätigen Sie, dass das Dateisystem ordnungsgemäß gemountet ist
root@minio1:~# df -hT
......
/dev/sdb xfs 100G 746M 100G 1% /var/lib/minio/data1
/dev/sdc xfs 100G 746M 100G 1% /var/lib/minio/data2
/dev/sdd xfs 100G 746M 100G 1% /var/lib/minio/data3
/dev/sde xfs 100G 746M 100G 1% /var/lib/minio/data4
Installieren Sie MinIO mithilfe des Deb-Pakets auf jedem Knoten separat
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20240704142545.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb
verwenden groupadd
Unduseradd
Befehle zum Erstellen von Benutzern und Gruppen
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown -R minio-user:minio-user /var/lib/minio
existieren /etc/default/minio
Umgebungsdateien erstellen. Der MinIO-Dienst verwendet diese Datei als MinIO undminio.service
Die Quelle aller von der Datei verwendeten Umgebungsvariablen.
cat >/etc/default/minio<<EOF
MINIO_VOLUMES="http://minio{1...4}.example.com:9000/var/lib/minio/data{1...4}/minio"
MINIO_OPTS="--console-address :9001"
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=Minio@123456
MINIO_BROWSER_REDIRECT_URL="http://minio.example.com/minio/ui"
EOF
Geben Sie den folgenden Befehl auf jedem Knoten in der Bereitstellung aus, um den MinIO-Dienst zu starten. Mehrere Knoten müssen gleichzeitig nacheinander ausgeführt werden.
sudo systemctl restart minio.service
Bestätigen Sie mit dem folgenden Befehl, dass der Dienst online ist und ordnungsgemäß ausgeführt wird:
sudo systemctl status minio.service
journalctl -f -u minio.service
Öffnen Sie einen Browser und greifen Sie auf den Port zu :9001
Geben Sie einen beliebigen MinIO-Hostnamen ein, um die Anmeldeseite der MinIO-Konsole zu öffnen.Zum Beispiel
http://minio1.example.com:9001
Benutzen Sie die minio_root_user
Undminio_root_password
Anmeldung.
Mit der MinIO-Konsole können Sie allgemeine Verwaltungsaufgaben wie Identitäts- und Zugriffsverwaltung, Metrik- und Protokollüberwachung oder Serverkonfiguration ausführen. Jeder MinIO-Server enthält seine eigene eingebettete MinIO-Konsole.
Offizielle Dokumentation:https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html
verwendennginx
Undkeepalived
Um einen Lastausgleich zu erreichen, bereiten Sie zwei Server als Lastausgleichsknoten vor.
Konfigurieren Sie jeweils den Hostnamen auf dem lb-Knoten.
hostnamectl set-hostname lb1.example.com
hostnamectl set-hostname lb2.example.com
Konfigurieren Sie die Hostauflösung jeweils auf dem lb-Knoten.
cat >/etc/hosts<<EOF
192.168.72.55 lb1.example.com
192.168.72.56 lb2.example.com
192.168.72.51 minio1.example.com
192.168.72.52 minio2.example.com
192.168.72.53 minio3.example.com
192.168.72.54 minio4.example.com
EOF
Installieren Sie Nginx und Keepalived auf 2 Knoten:
apt install -y nginx keepalived
Erstellen Sie eine Nginx-Konfigurationsdatei, ändern Sie die Serveradresse und passen Sie den Listen-Port an. Achten Sie auf Änderungenserver_name
Parameter:
cat > /etc/nginx/conf.d/minio-lb.conf <<'EOF'
upstream minio_s3 {
least_conn;
server minio1.example.com:9000;
server minio2.example.com:9000;
server minio3.example.com:9000;
server minio4.example.com:9000;
}
upstream minio_console {
least_conn;
server minio1.example.com:9001;
server minio2.example.com:9001;
server minio3.example.com:9001;
server minio4.example.com:9001;
}
server {
listen 80;
listen [::]:80;
server_name minio.example.com;
# Allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# Disable buffering
proxy_buffering off;
proxy_request_buffering off;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass https://minio_s3; # This uses the upstream directive definition to load balance
}
location /minio/ui/ {
rewrite ^/minio/ui/(.*) /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
# This is necessary to pass the correct IP to be hashed
real_ip_header X-Real-IP;
proxy_connect_timeout 300;
# To support websockets in MinIO versions released after January 2023
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
# Uncomment the following line to set the Origin request to an empty string
# proxy_set_header Origin '';
chunked_transfer_encoding off;
proxy_pass https://minio_console; # This uses the upstream directive definition to load balance
}
}
EOF
Starten Sie den Nginx-Dienst
systemctl restart nginx
Erstellen Sie eine Keepalived-Konfigurationsdatei und ändern Sie sie entsprechend der tatsächlichen Umgebunginterface
Undvirtual_ipaddress
Parameter, die beiden Knoten haben die gleiche Konfiguration:
cat > /etc/keepalived/keepalived.conf <<EOF
! Configuration File for keepalived
global_defs {
router_id minio
vrrp_version 2
vrrp_garp_master_delay 1
script_user root
enable_script_security
}
vrrp_script chk_nginx {
script "/usr/bin/killall -0 nginx"
timeout 3
interval 3 # check every 1 second
fall 2 # require 2 failures for KO
rise 2 # require 2 successes for OK
}
vrrp_instance lb-minio {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.72.100
}
track_script {
chk_nginx
}
}
EOF
Starten Sie den Keepalvied-Dienst
systemctl restart keepalived
Sehen Sie sich die generierte VIP-Adresse an
root@lb1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:9a:92:75 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.72.55/24 brd 192.168.72.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.72.100/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe9a:9275/64 scope link
valid_lft forever preferred_lft forever
Konfigurieren Sie auf dem Computer, der auf Minio zugreifen muss, die Hostauflösung
echo "192.168.72.100 minio.example.com" >>/etc/hosts
Browserzugriff auf die Minio-Konsole
http://minio.example.com/minio/ui/
Metrikinformationen anzeigen:
Installieren Sie den Minio-Client auf einem beliebigen Computer
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
Konfigurieren Sie den Minio-Client
mc alias set myminio http://minio.example.com minioadmin Minio@123456
Clusterstatus über die API-Schnittstelle anzeigen
root@ubuntu:~# mc admin info myminio
● minio1.example.com:9000
Uptime: 25 minutes
Version: 2024-07-04T14:25:45Z
Network: 4/4 OK
Drives: 4/4 OK
Pool: 1
● minio2.example.com:9000
Uptime: 25 minutes
Version: 2024-07-04T14:25:45Z
Network: 4/4 OK
Drives: 4/4 OK
Pool: 1
● minio3.example.com:9000
Uptime: 25 minutes
Version: 2024-07-04T14:25:45Z
Network: 4/4 OK
Drives: 4/4 OK
Pool: 1
● minio4.example.com:9000
Uptime: 25 minutes
Version: 2024-07-04T14:25:45Z
Network: 4/4 OK
Drives: 4/4 OK
Pool: 1
Pools:
1st, Erasure sets: 1, Drives per erasure set: 16
16 drives online, 0 drives offline
root@ubuntu:~#
beziehen auf:https://elma365.com/en/help/minio-cluster.html