le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Documentazione ufficiale:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html
Questa soluzione utilizza MinIO distribuito in una configurazione multi-nodo multi-driver (MNMD) o "distribuita". Le distribuzioni MNMD forniscono prestazioni, disponibilità e scalabilità di livello aziendale e rappresentano la topologia consigliata per tutti i carichi di lavoro di produzione.
Le distribuzioni MNMD supportano configurazioni di codifica di cancellazione che possono tollerare la perdita fino alla metà dei nodi o delle unità nella distribuzione continuando a servire le operazioni di lettura.
Requisiti di distribuzione del cluster
La pianificazione del nodo e la pianificazione del disco sono le seguenti. Ciascun nodo prepara quattro dischi:
Nome del nodo | IP del nodo | mini disco | punto di montaggio | sistema operativo |
---|---|---|---|---|
minio1.esempio.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.esempio.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.esempio.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.esempio.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.esempio.com | 192.168.72.55 | - | - | Ubuntu22.04 |
lb2.esempio.com | 192.168.72.56 | - | - | Ubuntu22.04 |
Persona di spicco | 192.168.72.100 | - | - | - |
Descrizione: l'indirizzo VIP si risolve inminio.example.com
Il nome di dominio funge da ingresso unificato.
http://minio.example.com
http://minio.example.com/minio/ui
L'architettura del cluster è la seguente:
Tutti i nodi Minio sono configurati rispettivamente con nomi host.
hostnamectl set-hostname minio1.example.com
hostnamectl set-hostname minio2.example.com
hostnamectl set-hostname minio3.example.com
hostnamectl set-hostname minio4.example.com
Tutti i nodi Minio sono configurati con la risoluzione degli host separatamente.
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
Tutti i tempi di configurazione del minio nodo sono sincronizzati.
I sistemi multinodo Minio devono mantenere sincronizzati l'ora e la data per mantenere stabili il funzionamento e l'interazione tra i nodi.
apt install -y chrony
systemctl enable --now chrony
timedatectl set-timezone Asia/Shanghai
Ogni nodo monta 4 dischi, di cui sda è il disco di sistema:
root@minio1:~# lsblk -d -n -o NAME | grep '^sd'
sda
sdb
sdc
sdd
sde
Su ciascun nodo, crea quattro directory per montare le quattro unità:
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
Su ciascun nodo separatamente, formatta il disco nel file system XFS:
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
Configurare il montaggio automatico
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
montare tutto dentro /etc/fstab
File system definito nel file ma non ancora montato
sudo mount -av
Confermare che il file system sia montato normalmente
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
Installa MinIO utilizzando il pacchetto deb su ciascun nodo separatamente
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
utilizzo groupadd
Euseradd
Comandi per creare utenti e gruppi
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown -R minio-user:minio-user /var/lib/minio
esistere /etc/default/minio
Creare file di ambiente. Il servizio MinIO utilizza questo file come MinIO eminio.service
L'origine di tutte le variabili di ambiente utilizzate dal file.
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
Emettere il comando seguente su ciascun nodo della distribuzione per avviare il servizio MinIO. È necessario eseguire più nodi in sequenza contemporaneamente.
sudo systemctl restart minio.service
Conferma che il servizio è online e funziona correttamente utilizzando il seguente comando:
sudo systemctl status minio.service
journalctl -f -u minio.service
Apri un browser e accedi alla porta :9001
qualsiasi nome host MinIO per aprire la pagina di accesso della console MinIO.Per esempio
http://minio1.example.com:9001
Usa il minio_root_user
Eminio_root_password
Login.
È possibile utilizzare la console MinIO per eseguire attività di gestione generale come la gestione di identità e accessi, il monitoraggio di parametri e log o la configurazione del server. Ogni server MinIO contiene la propria console MinIO incorporata.
Documentazione ufficiale:https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html
utilizzonginx
Ekeepalived
Per ottenere il bilanciamento del carico, preparare 2 server come nodi di bilanciamento del carico.
Configurare rispettivamente il nome host sul nodo lb.
hostnamectl set-hostname lb1.example.com
hostnamectl set-hostname lb2.example.com
Configura rispettivamente la risoluzione degli host sul nodo lb.
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
Installa nginx e keepalived su 2 nodi:
apt install -y nginx keepalived
Crea un file di configurazione nginx, modifica l'indirizzo del server e personalizza la porta di ascolto, presta attenzione alle modificheserver_name
parametro:
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
Avvia il servizio nginx
systemctl restart nginx
Crea un file di configurazione keepalive e modificalo in base all'ambiente realeinterface
Evirtual_ipaddress
Parametri, i due nodi hanno la stessa configurazione:
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
Avvia il servizio keepalvied
systemctl restart keepalived
Visualizza l'indirizzo VIP generato
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
Sulla macchina che deve accedere a minio, configura la risoluzione degli host
echo "192.168.72.100 minio.example.com" >>/etc/hosts
Accesso tramite browser alla console Mini
http://minio.example.com/minio/ui/
Visualizza le informazioni sulle metriche:
Installa minio client su qualsiasi macchina
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
Configura il client minio
mc alias set myminio http://minio.example.com minioadmin Minio@123456
Visualizza lo stato del cluster tramite l'interfaccia API
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:~#
fare riferimento a:https://elma365.com/it/aiuto/minio-cluster.html