Κοινή χρήση τεχνολογίας

Αναπτύξτε το minio cluster στο ubuntu

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Εισαγωγή στο minio cluster

Επίσημη τεκμηρίωση:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html

Αυτή η λύση χρησιμοποιεί MinIO που έχει αναπτυχθεί σε διαμόρφωση πολλαπλών προγραμμάτων οδήγησης πολλαπλών κόμβων (MNMD) ή "κατανεμημένη" διαμόρφωση. Οι αναπτύξεις MNMD παρέχουν απόδοση, διαθεσιμότητα και επεκτασιμότητα εταιρικού επιπέδου και είναι η συνιστώμενη τοπολογία για όλους τους φόρτους εργασίας παραγωγής.

Οι αναπτύξεις MNMD υποστηρίζουν διαμορφώσεις κωδικοποίησης διαγραφής που μπορούν να ανεχθούν την απώλεια έως και των μισών κόμβων ή μονάδων δίσκου στην ανάπτυξη ενώ συνεχίζουν να εξυπηρετούν λειτουργίες ανάγνωσης.
Εισαγάγετε την περιγραφή της εικόνας εδώ

Απαιτήσεις ανάπτυξης συμπλέγματος

  • Η επίσημα προτεινόμενη ελάχιστη ρύθμιση παραμέτρων είναι 4 διακομιστές, κάθε διακομιστής έχει 4 δίσκους, έτσι ώστε το minio να είναι εξαιρετικά διαθέσιμο.
  • Συνιστάται να χρησιμοποιήσετε ένα ξεχωριστό διαμέρισμα ως κατάλογο αποθήκευσης δεδομένων του minio Δεν μπορείτε να χρησιμοποιήσετε τον κατάλογο του ριζικού διαμερίσματος ως κατάλογο αποθήκευσης δεδομένων του minio, αλλά μπορείτε να δημιουργήσετε τέσσερις κανονικούς καταλόγους με έναν μόνο ανεξάρτητο δίσκο ανά κόμβο.
  • Το MinIO δεν υποστηρίζει μη διαδοχικά ονόματα κεντρικών υπολογιστών ή διευθύνσεις IP για κατανεμημένες αναπτύξεις. Μπορείτε να χρησιμοποιήσετε το /etc/hosts σε κάθε κόμβο για να ρυθμίσετε ένα απλό σχήμα DNS που υποστηρίζει εκτεταμένη σημείωση.
  • Τα συστήματα πολλαπλών κόμβων πρέπει να διατηρούν την ώρα και την ημερομηνία συγχρονισμένα για να διατηρούν σταθερή λειτουργία και αλληλεπίδραση μεταξύ των κόμβων.

Αναπτύξτε το minio cluster στο ubuntu

Ο σχεδιασμός του κόμβου και ο σχεδιασμός του δίσκου είναι οι εξής: Κάθε κόμβος προετοιμάζει τέσσερις δίσκους:

Όνομα κόμβουΚόμβος IPMinio δίσκοςσημείο προσάρτησηςλειτουργικό σύστημα
minio1.example.com192.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/data4Ubuntu22.04
minio2.example.com192.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/data4Ubuntu22.04
minio3.example.com192.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/data4Ubuntu22.04
minio4.example.com192.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/data4Ubuntu22.04
lb1.example.com192.168.72.55--Ubuntu22.04
lb2.example.com192.168.72.56--Ubuntu22.04
πολύ σπουδαίο πρόσωπο192.168.72.100---

Περιγραφή: Η διεύθυνση VIP καταλήγει σεminio.example.comΤο όνομα τομέα χρησιμεύει ως ενοποιημένη είσοδος.

  • Η διεύθυνση πρόσβασης στο Minio API είναι:http://minio.example.com
  • Η διεύθυνση πρόσβασης της κονσόλας Minio είναι:http://minio.example.com/minio/ui

Η αρχιτεκτονική του συμπλέγματος έχει ως εξής:
Εισαγάγετε την περιγραφή της εικόνας εδώ

Προετοιμασία κόμβου

Όλοι οι μίνι κόμβοι έχουν ρυθμιστεί με ονόματα κεντρικών υπολογιστών αντίστοιχα.

hostnamectl set-hostname minio1.example.com
hostnamectl set-hostname minio2.example.com
hostnamectl set-hostname minio3.example.com
hostnamectl set-hostname minio4.example.com
  • 1
  • 2
  • 3
  • 4

Όλοι οι μίνι κόμβοι έχουν διαμορφωθεί με ανάλυση κεντρικών υπολογιστών ξεχωριστά.

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Όλοι οι χρόνοι διαμόρφωσης κόμβων μίνι συγχρονίζονται.
Τα συστήματα πολλαπλών κόμβων Minio πρέπει να διατηρούν την ώρα και την ημερομηνία συγχρονισμένα για να διατηρούν σταθερή λειτουργία και αλληλεπίδραση μεταξύ των κόμβων.

apt install -y chrony
systemctl enable --now chrony
timedatectl set-timezone Asia/Shanghai
  • 1
  • 2
  • 3

Προετοιμασία δίσκου

Κάθε κόμβος τοποθετεί 4 δίσκους, εκ των οποίων το sda είναι ο δίσκος συστήματος:

root@minio1:~# lsblk -d -n -o NAME | grep '^sd'
sda
sdb
sdc
sdd
sde
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Σε κάθε κόμβο, δημιουργήστε τέσσερις καταλόγους για να προσαρτήσετε τις τέσσερις μονάδες δίσκου:

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
  • 1
  • 2
  • 3
  • 4

Σε κάθε κόμβο, μορφοποιήστε το δίσκο στο σύστημα αρχείων 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
  • 1
  • 2
  • 3
  • 4

Διαμόρφωση αυτόματης τοποθέτησης

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

τοποθετήστε όλα μέσα /etc/fstab Το σύστημα αρχείων έχει οριστεί στο αρχείο αλλά δεν έχει ακόμη προσαρτηθεί

sudo mount -av
  • 1

Επιβεβαιώστε ότι το σύστημα αρχείων έχει τοποθετηθεί σωστά

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Εγκαταστήστε το Minio

Εγκαταστήστε το MinIO χρησιμοποιώντας το πακέτο deb σε κάθε κόμβο ξεχωριστά

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
  • 1
  • 2

χρήση groupadd καιuseradd Εντολές για τη δημιουργία χρηστών και ομάδων

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown -R minio-user:minio-user /var/lib/minio
  • 1
  • 2
  • 3

Δημιουργία αρχείου περιβάλλοντος υπηρεσίας

υπάρχει /etc/default/minio Δημιουργία αρχείων περιβάλλοντος. Η υπηρεσία MinIO χρησιμοποιεί αυτό το αρχείο ως MinIO καιminio.service Η πηγή όλων των μεταβλητών περιβάλλοντος που χρησιμοποιούνται από το αρχείο.

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Εκδώστε την ακόλουθη εντολή σε κάθε κόμβο στην ανάπτυξη για να ξεκινήσετε την υπηρεσία MinIO Πολλοί κόμβοι πρέπει να εκτελούνται με τη σειρά ταυτόχρονα.

sudo systemctl restart minio.service
  • 1

Επιβεβαιώστε ότι η υπηρεσία είναι συνδεδεμένη και εκτελείται σωστά χρησιμοποιώντας την ακόλουθη εντολή:

sudo systemctl status minio.service
journalctl -f -u minio.service
  • 1
  • 2

Ανοίξτε την κονσόλα MinIO

Ανοίξτε ένα πρόγραμμα περιήγησης και αποκτήστε πρόσβαση στη θύρα :9001 οποιοδήποτε όνομα κεντρικού υπολογιστή MinIO για να ανοίξετε τη σελίδα σύνδεσης της κονσόλας MinIO.Για παράδειγμα

http://minio1.example.com:9001
  • 1

Χρησιμοποιήστε το minio_root_user καιminio_root_password Σύνδεση.

Μπορείτε να χρησιμοποιήσετε την κονσόλα MinIO για να εκτελέσετε εργασίες γενικής διαχείρισης, όπως διαχείριση ταυτότητας και πρόσβασης, παρακολούθηση μετρήσεων και αρχείων καταγραφής ή διαμόρφωση διακομιστή. Κάθε διακομιστής MinIO περιέχει τη δική του ενσωματωμένη κονσόλα MinIO.

Διαμόρφωση εξισορρόπησης φορτίου

Επίσημη τεκμηρίωση:https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html

χρήσηnginxκαιkeepalivedΓια να επιτύχετε εξισορρόπηση φορτίου, προετοιμάστε 2 διακομιστές ως κόμβους εξισορρόπησης φορτίου.

Διαμορφώστε το όνομα κεντρικού υπολογιστή στον κόμβο lb αντίστοιχα.

hostnamectl set-hostname lb1.example.com
hostnamectl set-hostname lb2.example.com
  • 1
  • 2

Διαμορφώστε την ανάλυση κεντρικών υπολογιστών στον κόμβο 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Εγκαταστήστε το nginx και το keepalived σε 2 κόμβους:

apt install -y nginx keepalived
  • 1

Δημιουργήστε αρχείο διαμόρφωσης nginx, τροποποιήστε τη διεύθυνση διακομιστή και προσαρμόστε τη θύρα ακρόασης, δώστε προσοχή στις τροποποιήσειςserver_nameπαράμετρος:

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
  • 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
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73

Ξεκινήστε την υπηρεσία nginx

systemctl restart nginx
  • 1

Δημιουργήστε ένα αρχείο ρύθμισης παραμέτρων διατήρησης και τροποποιήστε το σύμφωνα με το πραγματικό περιβάλλονinterfaceκαιvirtual_ipaddressΠαράμετροι, οι δύο κόμβοι έχουν την ίδια διαμόρφωση:

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
  • 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

Ξεκινήστε την υπηρεσία keepalvied

systemctl restart keepalived
  • 1

Δείτε τη διεύθυνση VIP που δημιουργήθηκε

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

ΔΟΚΙΜΗ ΣΥΝΔΕΣΗΣ

Στο μηχάνημα που χρειάζεται πρόσβαση στο minio, διαμορφώστε την ανάλυση κεντρικών υπολογιστών

echo "192.168.72.100 minio.example.com" >>/etc/hosts
  • 1

Minio κονσόλα πρόσβασης προγράμματος περιήγησης

http://minio.example.com/minio/ui/
  • 1

Προβολή πληροφοριών μετρήσεων:
Εισαγάγετε την περιγραφή της εικόνας εδώ

Εγκαταστήστε το minio client σε οποιοδήποτε μηχάνημα

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
  • 1
  • 2
  • 3

Διαμόρφωση προγράμματος-πελάτη μίνι

mc alias set myminio http://minio.example.com minioadmin Minio@123456
  • 1

Προβολή κατάστασης συμπλέγματος μέσω της διεπαφής 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:~#  
  • 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

αναφέρομαι σε:https://elma365.com/en/help/minio-cluster.html