Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Documentación oficial:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html
Esta solución utiliza MinIO implementado en una configuración multinodo y multicontrolador (MNMD) o "distribuida". Las implementaciones de MNMD brindan rendimiento, disponibilidad y escalabilidad de nivel empresarial y son la topología recomendada para todas las cargas de trabajo de producción.
Las implementaciones de MNMD admiten configuraciones de codificación de borrado que pueden tolerar la pérdida de hasta la mitad de los nodos o unidades en la implementación mientras continúan brindando servicio a las operaciones de lectura.
Requisitos de implementación del clúster
La planificación de nodos y la planificación de discos son las siguientes. Cada nodo prepara cuatro discos:
Nombre del nodo | IP del nodo | mini disco | punto de montaje | Sistema operativo |
---|---|---|---|---|
minio1.ejemplo.com | 192.168.72.51 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/datos1 /var/lib/minio/datos2 /var/lib/minio/datos3 /var/lib/minio/datos4 | Ubuntu22.04 |
minio2.ejemplo.com | 192.168.72.52 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/datos1 /var/lib/minio/datos2 /var/lib/minio/datos3 /var/lib/minio/datos4 | Ubuntu22.04 |
minio3.ejemplo.com | 192.168.72.53 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/datos1 /var/lib/minio/datos2 /var/lib/minio/datos3 /var/lib/minio/datos4 | Ubuntu22.04 |
minio4.ejemplo.com | 192.168.72.54 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/datos1 /var/lib/minio/datos2 /var/lib/minio/datos3 /var/lib/minio/datos4 | Ubuntu22.04 |
lb1.ejemplo.com | 192.168.72.55 | - | - | Ubuntu22.04 |
lb2.ejemplo.com | 192.168.72.56 | - | - | Ubuntu22.04 |
VIP | 192.168.72.100 | - | - | - |
Descripción: La dirección VIP se resuelve enminio.example.com
El nombre de dominio sirve como entrada unificada.
http://minio.example.com
http://minio.example.com/minio/ui
La arquitectura del clúster es la siguiente:
Todos los nodos minio están configurados con nombres de host respectivamente.
hostnamectl set-hostname minio1.example.com
hostnamectl set-hostname minio2.example.com
hostnamectl set-hostname minio3.example.com
hostnamectl set-hostname minio4.example.com
Todos los nodos minio se configuran con resolución de hosts por separado.
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
Todos los tiempos de configuración de los nodos minio están sincronizados.
Los sistemas de múltiples nodos de Minio deben mantener la fecha y la hora sincronizadas para mantener una operación e interacción estables entre nodos.
apt install -y chrony
systemctl enable --now chrony
timedatectl set-timezone Asia/Shanghai
Cada nodo monta 4 discos, de los cuales sda es el disco del sistema:
root@minio1:~# lsblk -d -n -o NAME | grep '^sd'
sda
sdb
sdc
sdd
sde
En cada nodo, cree cuatro directorios para montar las cuatro unidades:
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
En cada nodo, formatee el disco en el sistema de archivos 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
Configurar el montaje automático
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
montar todo en /etc/fstab
Sistema de archivos definido en el archivo pero aún no montado
sudo mount -av
Confirme que el sistema de archivos esté montado correctamente
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
Instale MinIO usando el paquete deb en cada nodo por separado
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
usar groupadd
yuseradd
Comandos para crear usuarios y grupos.
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown -R minio-user:minio-user /var/lib/minio
existir /etc/default/minio
Crear archivos de entorno. El servicio MinIO utiliza este archivo como MinIO yminio.service
La fuente de todas las variables de entorno utilizadas por el archivo.
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
Emita el siguiente comando en cada nodo de la implementación para iniciar el servicio MinIO. Se deben ejecutar varios nodos en secuencia al mismo tiempo.
sudo systemctl restart minio.service
Confirme que el servicio esté en línea y ejecutándose correctamente usando el siguiente comando:
sudo systemctl status minio.service
journalctl -f -u minio.service
Abra un navegador y acceda al puerto. :9001
cualquier nombre de host MinIO para abrir la página de inicio de sesión de la consola MinIO.Por ejemplo
http://minio1.example.com:9001
Utilizar el minio_root_user
yminio_root_password
Acceso.
Puede utilizar la consola MinIO para realizar tareas de administración generales, como administración de identidades y acceso, monitoreo de registros y métricas o configuración del servidor. Cada servidor MinIO contiene su propia consola MinIO integrada.
Documentación oficial:https://min.io/docs/minio/linux/integrations/configurar-nginx-proxy-con-minio.html
usarnginx
ykeepalived
Para lograr el equilibrio de carga, prepare 2 servidores como nodos de equilibrio de carga.
Configure el nombre de host en el nodo lb respectivamente.
hostnamectl set-hostname lb1.example.com
hostnamectl set-hostname lb2.example.com
Configure la resolución de los hosts en el nodo lb respectivamente.
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
Instale nginx y keepalived en 2 nodos:
apt install -y nginx keepalived
Cree un archivo de configuración nginx, modifique la dirección del servidor y personalice el puerto de escucha, preste atención a las modificacionesserver_name
parámetro:
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
Iniciar el servicio nginx
systemctl restart nginx
Cree un archivo de configuración keepalived y modifíquelo de acuerdo con el entorno realinterface
yvirtual_ipaddress
Parámetros, los dos nodos tienen la misma configuración:
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
Iniciar el servicio keepalvied
systemctl restart keepalived
Ver la dirección VIP generada
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
En la máquina que necesita acceder a minio, configure la resolución de los hosts
echo "192.168.72.100 minio.example.com" >>/etc/hosts
Acceso al navegador a la consola minio
http://minio.example.com/minio/ui/
Ver información de métricas:
Instale el cliente minio en cualquier máquina
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
Configurar cliente minio
mc alias set myminio http://minio.example.com minioadmin Minio@123456
Ver el estado del clúster a través de la interfaz 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:~#
Referirse a:https://elma365.com/es/ayuda/cluster-minio.html