MinIO è uno storage ad oggetti open source compatibile con S3 che può essere utilizzato come “Object Storage Repository” su Veeam Backup.
È possibile installare MinIO su diverse piattaforme, tra cui Debian, Kubernetes e Windows ed è possibile effettuare l’upgrade alla versione enterprise (a pagamento) in caso di necessità di features avanzate.
In questo articolo verranno mostrati gli step di installazioene e configurazione di base di MinIO su Debian 12.
PREREQUISITI
MinIO, per funzionare tramite HTTPS, necessita che venga effettuato SSL offloading; a questo scopo si consiglia di utilizzare HAProxy, poiché è il bilanciatore di carico più performante.
In questo articolo verranno mostrate le configurazioni di HAProxy necessarie, tuttavia non verranno mostrati gli step di installazione del bilanciatore.
AGGIORNAMENTO DEL SISTEMA OPERATIVO
Per aggiornare il sistema operativo e rimuovere i pacchetti obsoleti eseguire:
0 1 2 |
apt update apt upgrade -y apt autoremove -y |
DISABILITAZIONE DELL’IPV6
Se non viene utilizzato è consigliato disabilitare IPv6 eseguendo i seguenti comandi:
0 1 |
echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf sysctl -p |
CONFIGURAZIONE DEL VOLUME iSCSI
Installare Open iSCSI con il comando:
0 |
apt install open-iscsi -y |
Modificare l’IQDN nel file “/etc/iscsi/initiatorname.iscsi” (opzionale).
Riavviare il servizio
systemctl restart iscsid.service
Abilitare il servizio all’avvio:
0 |
systemctl enable iscsid.service |
ATTENZIONE: Sostituire nei seguenti comandi il parametro “portal” con l’IP dello storage o del NAS con la pubblicazione iSCSI e il parametro “target” con l’IQDN della LUN.
Verificare che il target iSCSI sia disponibile (con questo comando è anche possibile visualizzare gli IQDN dei target iSCSI):
0 |
iscsiadm --mode discovery --type sendtargets --portal 192.168.1.25 |
Per inizializare la sessione, eseguire:
0 |
iscsiadm --mode node --targetname "iqn.2024-10.com.raffaelechiatto.marcovalle:bckimm01" --portal 192.168.1.25 --login |
Abilitare l’avvio automatico della sessione iSCSI:
0 1 2 |
iscsiadm --mode node --targetname "iqn.2024-10.com.raffaelechiatto.marcovalle:bckimm01" --portal 192.168.1.25 --op update -n node.startup -v automatic iscsiadm -m node --op=update -n node.conn[0].startup -v automatic iscsiadm -m node --op=update -n node.startup -v automatic |
Verificare che la LUN iSCSI venga mostrata tra i dischi disponibili:
0 |
lsblk |
Annotarsi il path su cui è stata mappata la LUN (nel mio caso /dev/sdb).
CREAZIONE DEL FILESYSTEM
Partizionare il volume iSCSI (sostituire “/dev/sdb” con il path su cui è stata mappata la LUN):
0 |
# fdisk /dev/sdb |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Welcome to fdisk (util-linux 2.38.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. The size of this disk is 20 TiB (21990232555520 bytes). DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT). Created a new DOS (MBR) disklabel with disk identifier 0x80a55ab8. Command (m for help): g Created a new GPT disklabel (GUID: B89E5D6A-CFE6-CF44-B150-BE159901516B). Command (m for help): n Partition number (1-128, default 1): First sector (2048-42949672926, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-42949672926, default 42949670911): Created a new partition 1 of type 'Linux filesystem' and of size 20 TiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. |
Installare il pacchetto xfsprogs:
0 |
apt install xfsprogs -y |
Creare il filesystem XFS (sostituire /dev/sdb1 con la partizione appena creata):
0 |
mkfs.xfs /dev/sdb1 -L LUN01 |
Aggiungere la seguente riga al file /etc/fstab (sostituire /dev/sdb1 con la partizione appena creata):
0 |
/dev/sdb1 /mnt/lun01 xfs defaults,noatime,noquota,_netdev 0 2 |
Ricaricare il file fstab:
0 |
systemctl daemon-reload |
Creare la directory su cui montare il filesystem:
0 |
mkdir -p /mnt/lun01 |
Montare il filesystem:
0 |
mount /mnt/lun01 |
INSTALLAZIONE DELLA UTILITY MC
Scaricare il binario mc:
0 1 2 |
curl https://dl.min.io/client/mc/release/linux-amd64/mc \ --create-dirs \ -o $HOME/minio-binaries/mc |
Rendere eseguibile il binario ed aggiungerlo al PATH:
0 1 |
chmod +x $HOME/minio-binaries/mc export PATH="$PATH:$HOME/minio-binaries/" |
Provare ad eseguirlo:
0 |
mc --help |
Modificare il profilo bash:
0 |
echo 'export PATH="$PATH:$HOME/minio-binaries/"' >> /root/.profile |
CONFIGURAZIONE DELL’UTENZA DI MINIO
Creare l’utenza ed il gruppo per MinIO:
0 1 |
groupadd -r minio-user useradd -M -r -g minio-user minio-user |
Assegnare minio-user come owner della directory su cui viene montata la LUN iSCSI:
0 |
chown minio-user:minio-user /mnt/lun01 |
INSTALLAZIONE DI MINIO SERVER
Scaricare il pacchetto per Debian di MinIO ed installarlo:
0 1 |
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20240913202602.0.0_amd64.deb -O minio.deb dpkg -i minio.deb |
Modificare il servizio MinIO:
0 |
systemctl edit minio.service |
Quando si apre l’editor di testo, aggiungere il seguente contenuto:
0 1 |
[Unit] RequiresMountsFor=/mnt/lun01 |
Aggiungere il file /etc/default/minio (sostituire la password):
0 1 2 3 |
MINIO_OPTS="--console-address :8080" MINIO_VOLUMES="/mnt/lun01" MINIO_ROOT_USER="admin" MINIO_ROOT_PASSWORD="ADMIN-PASSWORD-HERE" |
Se si volesse utilizzare una porta privilegiata (<= 1024) per la dashboard, è necessario aggiungere la capability all’eseguibile:
0 |
setcap 'cap_net_bind_service=+ep' /usr/local/bin/minio |
Assegnare i permessi corretti al file:
0 1 |
chown root:root /etc/default/minio chmod 640 /etc/default/minio |
Ricaricare il servizio:
0 |
systemctl daemon-reload |
Avviare il servizio:
0 |
systemctl start minio.service |
Abilitare il servizio:
0 |
systemctl enable minio.service |
CONFIGURAZIONE HAPROXY
ATTENZIONE
:
Nella configurazione di HAProxy effettuare le seguenti sostituzioni:
– 192.168.1.17: sostituire con l’IP su cui fare il bind delle porte (0.0.0.0 per indicare di effettuare il bind su tutte le interfacce IPv4)
– 192.168.1.5: sostituire con l’IP del server di MinIO
– minio01: sostituire con l’hostname del server di MinIO
– star.mydomain.local: sostituire con il nome del certificato da utilizzare
Su HAProxy aggiungere la seguente configurazione:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
frontend frontend_minio mode http maxconn 50 option httpslog option http-keep-alive option forwardfor # Bind bind 192.168.1.17:80 name bck_http bind 192.168.1.17:8080 ssl crt star.mydomain.local name bck_https_high bind 192.168.1.17:443 ssl crt star.mydomain.local name bck_https # ACL Host acl minio_request hdr(host) -i minio.mydomain.local acl s3_request hdr(host) -i s3.mydomain.local # Redirect to MinIO Dashboard http-request redirect prefix https://minio.mydomain.local code 301 if { dst_port 8080 } # Redirect to HTTPS http-request redirect scheme https if !{ ssl_fc } # Set HTTP request headers http-request set-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Forwarded-Proto http if !{ ssl_fc } http-request set-header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload;" # Requests routing use_backend backend_minio_dashboard if minio_request # MinIO Dashboard use_backend backend_minio_s3 if s3_request # MinIO S3 # Default backend default_backend backend_minio_dashboard backend backend_minio_dashboard # Backend MinIO Dashboard mode http option httpchk option forwardfor server minio01 192.168.1.5:8080 weight 10 maxconn 200 check backend backend_minio_s3 # Backend MinIO S3 mode http option httpchk option forwardfor server minio01 192.168.1.5:9000 weight 10 maxconn 200 check |
CONFIGURAZIONE DI BASE DI MINIO
Alcuni applicativi, come ad esempio Veeam Backup, necessitano che venga specificata la regione geografica dello storage.
Per configurarla è necessario accedere alla sotto sezione Region della sezione Configuration e modificare il parametro Server Location:
Si consiglia di utilizzare una region esistente; ad esempio l’Italia rietra nella regione eu-south-1.
In seguito è possibile creare una IAM Policy per autorizzare gli accessi di Veeam; per farlo è necessario accedere alla sezione Policies e cliccare Create Policy:
Assegnare un nome alla policy, modificare il contenuto e cliccare Save per salvare:
In seguito viene mostrato un esempio di policy che autorizza Veeam ad effettuare qualsiasi operazione sul bucket bucket01:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::bucket01/*" ] } ] } |
La data della Version non è riferita a quando è stata scritta la policy, ma alla versione della sinstassi.
È possibile modificare nella policy la stringa bucket01 per applicarla ad un altro bucket, oppure aggiungere una risorsa per applicarla a più buckets.
Per agggiungere un’utenza, è necessario accedere alla sotto sezione “Users” della sezione Identity e cliccare su Create User:
Compilare il campo username e password, selezionare la IAM Policy da applicare all’utenza e cliccare su Save per salvare:
Nella sezione Buckets è possibile creare un bucket cliccando su Create Bucket:
Compilare il nome del bucket (ricordarsi di utilizzare lo stesso specificato nella IAM Policy) ed abilitare il Versioning ed il Object Locking:
Infine, è necessario creare l’API key che verrà utilizzata da Veeam per autenticarsi, per farlo cliccare sull’utenza appena creata, navigare nella sezione Service Accounts e cliccare su Create Access Key:
Copiare la Access Key e la Secret Key, eventualmente compilare il nome e la descrizione ed infine salvare cliccando su Create:
Dopo aver confermato la creazione della chiave, MinIO permette di effettuarne il download in formato JSON.
Nel caso che sia necessario effettuare modifiche alla IAM Policy, è necessario modificarla anche relativamente alla Access Key.
Per modificare la policy relativa ad una chiave è necessario selezionare l’utenza a cui appartiene, accedere alla sezione Service Accounts, cliccare sulla chiave ed effettuare le modifiche alla policy.
0 Comments