моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Официальная документация:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html
В этом решении используется MinIO, развернутый в многоузловой многодрайверной (MNMD) или «распределенной» конфигурации. Развертывания MNMD обеспечивают производительность, доступность и масштабируемость корпоративного уровня и являются рекомендуемой топологией для всех производственных рабочих нагрузок.
Развертывания MNMD поддерживают конфигурации стирающего кодирования, которые могут допустить потерю до половины узлов или дисков в развертывании, продолжая при этом обслуживать операции чтения.
Требования к развертыванию кластера
Планирование узлов и дисков следующее. Каждый узел подготавливает четыре диска:
Имя узла | IP узла | мини-диск | Точка монтирования | Операционная система |
---|---|---|---|---|
minio1.example.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.example.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.example.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.example.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.example.com | 192.168.72.55 | - | - | Ubuntu22.04 |
lb2.example.com | 192.168.72.56 | - | - | Ubuntu22.04 |
ВИП | 192.168.72.100 | - | - | - |
Описание: VIP-адрес разрешаетсяminio.example.com
Доменное имя служит единым входом.
http://minio.example.com
http://minio.example.com/minio/ui
Архитектура кластера следующая:
Все узлы minio настраиваются соответственно с именами хостов.
hostnamectl set-hostname minio1.example.com
hostnamectl set-hostname minio2.example.com
hostnamectl set-hostname minio3.example.com
hostnamectl set-hostname minio4.example.com
Все узлы minio настраиваются с разрешением хостов отдельно.
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
Время настройки всех узлов minio синхронизировано.
Многоузловые системы Minio должны синхронизировать время и дату для обеспечения стабильной работы и взаимодействия между узлами.
apt install -y chrony
systemctl enable --now chrony
timedatectl set-timezone Asia/Shanghai
На каждом узле монтируется 4 диска, из которых sda является системным:
root@minio1:~# lsblk -d -n -o NAME | grep '^sd'
sda
sdb
sdc
sdd
sde
На каждом узле создайте четыре каталога для подключения четырех дисков:
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
На каждом узле отдельно отформатируйте диск в файловую систему 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
Настроить автоматическое монтирование
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
смонтировать все в /etc/fstab
Файловая система определена в файле, но еще не смонтирована
sudo mount -av
Убедитесь, что файловая система смонтирована правильно
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
Установите 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
использовать groupadd
иuseradd
Команды для создания пользователей и групп
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown -R minio-user:minio-user /var/lib/minio
существовать /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
Выполните следующую команду на каждом узле развертывания, чтобы запустить службу MinIO. Несколько узлов должны выполняться одновременно и последовательно.
sudo systemctl restart minio.service
Убедитесь, что служба подключена к сети и работает правильно, используя следующую команду:
sudo systemctl status minio.service
journalctl -f -u minio.service
Откройте браузер и получите доступ к порту :9001
любое имя хоста MinIO, чтобы открыть страницу входа в консоль MinIO.Например
http://minio1.example.com:9001
Использовать 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
Настройте разрешение хостов на узле 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
Установите nginx и поддержите активность на двух узлах:
apt install -y nginx keepalived
Создайте файл конфигурации 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
Запустить службу nginx
systemctl restart nginx
Создайте файл конфигурации поддержки активности и измените его в соответствии с реальной средой.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
Запустите службу Keepalvie.
systemctl restart keepalived
Посмотреть сгенерированный 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
На машине, которой требуется доступ к minio, настройте разрешение хостов.
echo "192.168.72.100 minio.example.com" >>/etc/hosts
Доступ к мини-консоли через браузер
http://minio.example.com/minio/ui/
Просмотр информации о показателях:
Установите клиент minio на любую машину
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
Настроить мини-клиент
mc alias set myminio http://minio.example.com minioadmin Minio@123456
Просмотр состояния кластера через интерфейс 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:~#
Ссылаться на:https://elma365.com/en/help/minio-cluster.html