Автор: Бинхэ Планета: http://m6z.cn/6aeFbs Краткое содержание статьи: https://binghe.gitcode.host/md/all/all.html.
Ускоряйтесь, растите, прорывайтесь, помогайте другим и достигайте себя.
Привет всем, я Бинхэ~~
Minio — это высокопроизводительный сервер объектного хранения с открытым исходным кодом, подходящий для создания распределенных систем хранения. Он обладает механизмами высокой доступности, масштабируемости и защиты данных, совместим с API Amazon S3 и широко используется в больших данных, облачных вычислениях и контейнерных средах, предоставляя надежные и эффективные услуги объектного хранения для приложений.
Распределенная система обмена мгновенными сообщениями IM обеспечивает функции одиночного и группового чата.,Нужна поддержка для отправки и получения сообщенийТекст, смайлики, картинки, файлы, голоса и видеои т. д.。В процессе отправки сообщения,Как хранить картинки, файлы, голоса и другие ресурсы? Очень эффективный способ хранения,Это сохранение его в высокопроизводительном распределенном хранилище.документв системе。
После сравнения других распределенных файловых систем мы наконец выбрали Minio для хранения ресурсов сообщений, таких как изображения, файлы и голоса. В основном учитывая, что файловая система Minio обладает высокой производительностью, высокой масштабируемостью, простой установкой и эксплуатацией, а также возможностью стирающего кодирования. Вы можете узнать больше о конкретных функциях в Интернете, здесь мы не будем вдаваться в подробности.
Установить среду docker-compose относительно просто. Запустите следующую команду в командной строке, чтобы загрузить и установить docker-compose.
curl -SL https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
После успешной загрузки и установки используйте следующую команду, чтобы создать программную ссылку docker-compose.
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Затем проверьте версию docker-compose, как показано ниже.
[root@binghe102]# docker-compose version
Docker Compose version v2.17.3
Вы можете видеть, что установлена версия docker-compose — 2.17.3, что указывает на то, что docker-compose установлен успешно.
Здесь устанавливаются и запускаются четыре контейнера Minio, а Nginx предоставляет унифицированные внешние адреса для доступа к ресурсам, таким как изображения или файлы. Поэтому помимо написания конфигурации для установки контейнера Minio на основе docker-compose вам также необходимо написать конфигурацию для установки Nginx на основе docker-compose. Кроме того, вам также необходимо настроить файл nginx.conf.
И файловая система Minio, и Nginx устанавливаются на основе docker-compose. Поэтому при написании конфигурации контейнера прописываем установку контейнера Minio и контейнера Nginx в один файл конфигурации и называем его: docker-compose-minio.yml.
Подробности об исходном коде см. в разделе Environment/docker-compose-minio.yml.
version: '3.2'
# Общие настройки для всех контейнеров и Конфигурация.
x-minio-common: &minio-common
image: minio/minio
command: server --console-address ":9001" http://minio{1...4}/data
expose:
- "9000"
environment:
MINIO_ROOT_USER: binghe
MINIO_ROOT_PASSWORD: binghe123
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
# Запустите 4 докер-контейнера, на которых работают экземпляры миниосервера.
# Используйте порт обратного прокси-сервера nginx 9000, балансировку нагрузки
# Доступ к их сети можно получить через порты 9001, 9002, 9003 и 9004. console
services:
minio1:
<<: *minio-common
hostname: minio1
ports:
- "9001:9001"
volumes:
- ./data/data1:/data
minio2:
<<: *minio-common
hostname: minio2
ports:
- "9002:9001"
volumes:
- ./data/data2:/data
minio3:
<<: *minio-common
hostname: minio3
ports:
- "9003:9001"
volumes:
- ./data/data3:/data
minio4:
<<: *minio-common
hostname: minio4
ports:
- "9004:9001"
volumes:
- ./data/data4:/data
nginx:
image: nginx:1.19.2-alpine
hostname: nginx
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- "9000:9000"
depends_on:
- minio1
- minio2
- minio3
- minio4
В приведенной выше конфигурации будут установлены и запущены четыре сервисных контейнера Minio, а порты, сопоставленные контейнерами Minio с хостом: 9001~9004. Кроме того, следует отметить, что в приведенной выше конфигурации учетная запись внутреннего терминала управления Minio настроена как binghe, а пароль настроен как binhe123.
После запуска четырех контейнеров Minio Nginx осуществляет доступ к внешнему миру с балансировкой нагрузки. При написании файла конфигурации контейнера мы также указали соответствующую связь между файлом nginx.conf в контейнере и файлом nginx.conf на хосте. , мы также должны настроить файл nginx.conf на хост-компьютере.
Подробную информацию об исходном коде см. в: Environment/nginx.conf.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
# include /etc/nginx/conf.d/*.conf;
upstream minio {
server minio1:9000;
server minio2:9000;
server minio3:9000;
server minio4:9000;
}
server {
listen 9000;
listen [::]:9000;
server_name localhost;
# To 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;
# To disable buffering
proxy_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 http://minio;
}
}
}
Загрузите каталог среды на сервер, переключите командную строку сервера на каталог среды и введите следующие команды, чтобы создать и запустить контейнер Minio и контейнер Nginx.
docker-compose -f docker-compose-minio.yml up -d
Процесс создания и запуска контейнера выглядит следующим образом.
[root@binghe102 environment]# docker-compose -f docker-compose-minio.yml up -d
[+] Running 17/17
✔ minio2 Pulled 219.5s
✔ minio3 Pulled 219.5s
✔ minio1 7 layers [⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 219.5s
✔ d46336f50433 Pull complete 45.3s
✔ be961ec68663 Pull complete 45.7s
✔ 44173c602141 Pull complete 46.1s
✔ a9809a6a679b Pull complete 46.2s
✔ df29d4a76971 Pull complete 46.3s
✔ 2b5a8853d302 Pull complete 46.3s
✔ 84f01ee8dfc1 Pull complete 210.3s
✔ minio4 Pulled 219.5s
✔ nginx 5 layers [⣿⣿⣿⣿⣿] 0B/0B Pulled 54.9s
✔ df20fa9351a1 Pull complete 5.3s
✔ 3db268b1fe8f Pull complete 31.6s
✔ f682f0660e7a Pull complete 31.7s
✔ 7eb0e8838bc0 Pull complete 31.7s
✔ e8bf1226cc17 Pull complete 32.1s
[+] Running 6/6
✔ Network environment_default Created 14.3s
✔ Container environment-minio1-1 Started 140.1s
✔ Container environment-minio3-1 Started 140.2s
✔ Container environment-minio2-1 Started 140.1s
✔ Container environment-minio4-1 Started 140.0s
✔ Container environment-nginx-1 Started
После завершения запуска введите в командной строке сервера docker ps
команда для просмотра запущенных контейнеров, как показано на рисунке 4-1.
Когда вы видите состояние работоспособности в столбце СТАТУС контейнера minio, это означает, что контейнер Minio был создан и успешно запущен.
Открыть браузер,Введите в адресную строкуhttp://192.168.106.102:9001
,Как показано на рисунке 4-2.
Введите учетную запись binghe и пароль binghe123 для входа в Minio, как показано на рисунке 4-3.
Страница после входа в систему показана на рисунке 4-4.
Как видите, всего существует 4 экземпляра сервиса Minio.
Передвигая полосу прокрутки в правой части страницы в разделе «СЕРВЕРЫ», мы можем увидеть информацию о четырех конкретных экземплярах службы, как показано на рис. 4-5.
Переключитесь на опцию ДИСКОВ, и вы увидите информацию о ДИСКЕ четырех экземпляров службы, как показано на рисунке 4-6.
Создайте корзину с именем bh-im в файловой системе Minio для хранения таких ресурсов, как изображения, файлы и голоса, во время процесса отправки сообщений распределенной системы обмена мгновенными сообщениями IM, как показано на рисунке 4-7.
Затем введите bh-im в столбце Имя сегмента, как показано на рисунке 4-8.
Нажмите кнопку «Создать сегмент», чтобы создать сегмент. Затем щелкните меню «Корзины», чтобы просмотреть информацию о сегменте, как показано на рисунке 4-9.
После нажатия кнопки «Управление» вы увидите, что бакет с именем bh-im был успешно создан, как показано на рисунке 4-10.
Измените политику доступа сводки в бакете bh-im, то есть политику доступа, с частной на общедоступную, как показано на рисунке 4-11.
После завершения модификации это показано на рисунке 4-12.
После создания сегментов давайте оптимизируем производительность синхронизации между несколькими узлами файловой системы Minio. Выберите меню «Настройки» — подменю «Сканер» и настройте значения множителя задержки, максимального ожидания и цикла, как показано на рисунке 4-13.
Как видите, здесь мы настраиваем множитель задержки на 10, а Макс. ожидание и цикл на 1 с, чтобы повысить эффективность синхронизации между несколькими узлами Minio.
Выберите Buckets-Browse, как показано на рисунке 4-14.
После входа на страницу обзора, как показано на рисунке 4-15.
Здесь мы нажимаем кнопку со стрелкой вверх, чтобы загрузить изображение, как показано на рисунке 4-16, после завершения загрузки.
Затем нажмите на изображение, чтобы ввести детали, как показано на рисунке 4-17.
После входа на страницу сведений об изображении нажмите кнопку «Поделиться», как показано на рисунке 4-18.
После нажатия кнопки «Поделиться», как показано на рисунке 4-19.
Как вы можете видеть, на странице обмена указана ссылка для доступа к изображению. Здесь мы нажимаем кнопку «Копировать», чтобы скопировать ссылку на изображение, как показано ниже.
http://172.18.0.4:9000/bh-im/2.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=9X4104YB84KCT5XGQKSW%2F20231224%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231224T073947Z&X-Amz-Expires=604800&X-Amz-Security-Token=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiI5WDQxMDRZQjg0S0NUNVhHUUtTVyIsImV4cCI6MTcwMzQwNDY3MCwicGFyZW50IjoiYmluZ2hlIn0.h611ez9SqsGcw-pEeXLp59_IpotFGmx1LeNzgGQdjJdAiYXm4f0EQ-ADgkxlr3UPIbR6-hQxYR__As_oo02BHg&X-Amz-SignedHeaders=host&versionId=null&X-Amz-Signature=4d2128b0da332fbbba8dfedea4ede07051c9376365e76bf12e4e658b8020747f
Поскольку у нас есть Конфигурацияможет быть основано наNginxединый доступMinioраспределенныйдокументв системересурсы,так,здесь,мы будемIPадрес172.18.0.4
Изменить на192.168.106.102
,Откройте следующую ссылку в адресной строке браузера.
http://192.168.106.102:9000/bh-im/2.jpg
Откройте адрес ссылки после изменения IP-адреса в адресной строке браузера, как показано на рисунке 4-20.
Как видите, загруженное нами изображение нормально отображается в браузере.
На этом этапе создание среды распределенной файловой системы Minio с несколькими узлами в собственном облачном режиме завершено.
Для разработки проекта и реализации этих реальных сценариев, помимо распределенной системы обмена мгновенными сообщениями IM, у Knowledge Planet of Glacier также есть 5 других проектов. Требования, планы, архитектура, реализация и т. д. этих проектов взяты из реальных условий. бизнес-сценарии в Интернете, позволяющие Вам по-настоящему изучить бизнес-планы внедрения технологий крупнейших Интернет-компаний и эффективно превратить их в собственные резервы знаний.