minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Documentação oficial:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html
Esta solução usa MinIO implantado em uma configuração multi-node multi-driver (MNMD) ou "distribuída". As implantações MNMD fornecem desempenho, disponibilidade e escalabilidade de nível empresarial e são a topologia recomendada para todas as cargas de trabalho de produção.
As implantações MNMD suportam configurações de codificação de eliminação que podem tolerar a perda de até metade dos nós ou unidades na implantação enquanto continuam a atender às operações de leitura.
Requisitos de implantação de cluster
O planejamento do nó e o planejamento do disco são os seguintes. Cada nó prepara quatro discos:
Nome do nó | IP do nó | disco minio | ponto de montagem | sistema operacional |
---|---|---|---|---|
minio1.exemplo.com | 192.168.72.51 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/dados1 /var/lib/minio/dados2 /var/lib/minio/dados3 /var/lib/minio/dados4 | Ubuntu22.04 |
minio2.exemplo.com | 192.168.72.52 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/dados1 /var/lib/minio/dados2 /var/lib/minio/dados3 /var/lib/minio/dados4 | Ubuntu22.04 |
minio3.exemplo.com | 192.168.72.53 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/dados1 /var/lib/minio/dados2 /var/lib/minio/dados3 /var/lib/minio/dados4 | Ubuntu22.04 |
minio4.exemplo.com | 192.168.72.54 | /dev/sdb /dev/sdc /dev/sdd /dev/sde | /var/lib/minio/dados1 /var/lib/minio/dados2 /var/lib/minio/dados3 /var/lib/minio/dados4 | Ubuntu22.04 |
lb1.exemplo.com | 192.168.72.55 | - | - | Ubuntu22.04 |
lb2.exemplo.com | 192.168.72.56 | - | - | Ubuntu22.04 |
VIP | 192.168.72.100 | - | - | - |
Descrição: O endereço VIP resolve paraminio.example.com
O nome de domínio serve como uma entrada unificada.
http://minio.example.com
http://minio.example.com/minio/ui
A arquitetura do cluster é a seguinte:
Todos os nós minio são configurados com nomes 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 os nós minio são configurados com resolução de hosts separadamente.
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 os tempos de configuração do nó minio são sincronizados.
Os sistemas multi-nós Minio devem manter a hora e a data sincronizadas para manter a operação e a interação entre nós estáveis.
apt install -y chrony
systemctl enable --now chrony
timedatectl set-timezone Asia/Shanghai
Cada nó monta 4 discos, dos quais sda é o disco do sistema:
root@minio1:~# lsblk -d -n -o NAME | grep '^sd'
sda
sdb
sdc
sdd
sde
Em cada nó, crie quatro diretórios para montar as quatro 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
Em cada nó separadamente, formate o disco no sistema de arquivos 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 montagem automática
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
monte tudo em /etc/fstab
Sistema de arquivos definido no arquivo, mas ainda não montado
sudo mount -av
Confirme se o sistema de arquivos está montado 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
Instale o MinIO usando o pacote deb em cada nó separadamente
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
euseradd
Comandos para criar usuários e 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
Crie arquivos de ambiente. O serviço MinIO usa este arquivo como MinIO eminio.service
A origem de todas as variáveis de ambiente usadas pelo arquivo.
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 o seguinte comando em cada nó na implantação para iniciar o serviço MinIO. Vários nós precisam ser executados em sequência ao mesmo tempo.
sudo systemctl restart minio.service
Confirme se o serviço está online e funcionando corretamente usando o seguinte comando:
sudo systemctl status minio.service
journalctl -f -u minio.service
Abra um navegador e acesse a porta :9001
qualquer nome de host MinIO para abrir a página de login do console MinIO.Por exemplo
http://minio1.example.com:9001
Use o minio_root_user
eminio_root_password
Conecte-se.
Você pode usar o console MinIO para executar tarefas gerais de gerenciamento, como gerenciamento de identidade e acesso, monitoramento de métricas e logs ou configuração de servidor. Cada servidor MinIO contém seu próprio console MinIO integrado.
Documentação oficial:https://min.io/docs/minio/linux/integrations/configuração-nginx-proxy-com-minio.html
usarnginx
ekeepalived
Para obter balanceamento de carga, prepare 2 servidores como nós de balanceamento de carga.
Configure o nome do host no nó lb respectivamente.
hostnamectl set-hostname lb1.example.com
hostnamectl set-hostname lb2.example.com
Configure a resolução de hosts no nó 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 o nginx e mantenha-o ativo em 2 nós:
apt install -y nginx keepalived
Crie o arquivo de configuração nginx, modifique o endereço do servidor e personalize a porta de escuta, preste atenção nas modificaçõesserver_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 serviço nginx
systemctl restart nginx
Crie um arquivo de configuração keepalived e modifique-o de acordo com o ambiente realinterface
evirtual_ipaddress
Parâmetros, os dois nós têm a mesma configuração:
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
Inicie o serviço keepalvied
systemctl restart keepalived
Veja o endereço VIP gerado
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
Na máquina que precisa acessar o minio, configure a resolução dos hosts
echo "192.168.72.100 minio.example.com" >>/etc/hosts
Console minio de acesso ao navegador
http://minio.example.com/minio/ui/
Ver informações de métricas:
Instale o cliente minio em qualquer 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
Visualize o status do cluster por meio da interface 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:~#