FastDFS+Nginx создает распределенное хранилище изображений

Nginx

1. Что такое FastDFS

FastDFSиспользуетсяcНаписано на языке распределенной файловой системы с открытым исходным кодом. FastDFS Adror-Made для Интернета, полный отзыв избыточнения, балансировки нагрузки и других механизмов линейного расширения, и сосредоточиться на высокой доступности, высокой производительности и других показателях, используяFastDFSЛегко создать высокопроизводительный кластер файловых серверов, обеспечивающий загрузку файлов, выгрузку и другие услуги.FastDFSАрхитектура включаетTracker serverиStorage server. запрос клиентаTracker serverЗагружать и скачивать файлы черезTracker serverЗапланированоStorage serverПолная загрузка файла и скачивание.Tracker serverРоль заключается в балансировке нагрузки и планировании черезTracker serverПри загрузке файлов можно обнаружить, что сервер хранилища предоставляет услуги загрузки файлов в соответствии с некоторыми стратегиями. можетtrackerВызывается сервером отслеживания или сервером планирования.Storage serverРоль - хранилище файлов, а файлы, загруженные клиентом, в конечном итоге сохраняются вStorageна сервере,StorageserverВместо реализации собственной файловой системы он использует файловую систему операционной системы для управления файлами. можетstorageназывается сервером хранения.

image

Сервер имеет две роли:Tracker: управлять кластером,trackerКластеризация также может быть реализована. каждыйtrackerСтатус узла равен. собиратьStorageСостояние кластера.Storage: На самом деле сохранение файлаStorageРазделенные на несколько групп, файлы, сохраненные в каждой группе, отличаются. В каждой группе есть несколько членов, и содержимое членов группы одинаково, и статус члена группы непротиворечив, и нет концепции мастера.

2. Процесс загрузки файла

EslS78.md.png
После того, как клиент загружает файл, сервер хранения сохраняет файлIDвозвращается клиенту, этот файлIDИндексная информация для будущего доступа к файлу. Информация индекса файла включает: имя группы, путь к виртуальному диску, двухуровневый каталог данных и имя файла.

Формат имени файла следующий
group1/M00/00/00/rBAABVzRPC-AJVSQAAHqEHLGutU563.jpg
  • Название группы: где находится файл после загрузкиstorageИмя группы после успешной загрузки файлаstorageСервер возвращается, и клиенту нужно сохранить его самостоятельно.

  • Путь к виртуальному диску:storageНастроенные виртуальные пути с параметрами дискаstore_path*соответствовать. Если настроеноstore_path0являетсяM00, если настроеноstore_path1являетсяM01, и так далее.

  • Двухуровневый каталог данных:storageДвухуровневый каталог, созданный сервером для каждого пути виртуального диска для хранения файлов данных.

  • Имя файла: отличается от того, когда файл был загружен. Он генерируется сервером хранения в соответствии с определенной информацией, а имя файла содержит: исходный сервер храненияIPТакая информация, как адрес, отметка времени создания файла, размер файла, случайное число и расширение файла.

3. Процесс загрузки файла

Es1iVK.png

4. Простая архитектура FastDFS

Es3iyn.png

5. Установка FastDFS

  • Адреса загрузки FastDFS и соответствующих модулей Nginx указаны ниже.

ссылка для скачиванияКод извлечения: nw6t

5.1 Установите зависимости fastdfs
  1. распаковатьlibfastcommon-master.zip
  2. Входитьlibfastcommon-masterв каталоге
  3. воплощать в жизнь./make.sh
  4. воплощать в жизньsudo ./make.sh install
5.2 Установите фастдфс
  1. распаковатьfastdfs-master.zip
  2. Входитьfastdfs-masterв каталоге
  3. воплощать в жизнь./make.sh
  4. воплощать в жизньsudo ./make.sh install
5.3 Настройка трекера сервера отслеживания
  1. sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
  2. существует/home/python/создать каталогfastdfs/tracker
  3. редактировать/etc/fdfs/tracker.confконфигурационный файлsudo vim /etc/fdfs/tracker.confИсправлятьbase_path=/home/python/fastdfs/tracker
5.4 Настройка хранилища сервера хранения
  1. sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
  2. существует/home/python/fastdfs/создать каталогstorage
  3. редактировать/etc/fdfs/storage.confконфигурационный файлsudo vim /etc/fdfs/storage.confМодификации:base_path=/home/python/fastdfs/storage store_path0=/home/python/fastdfs/storage tracker_server=自己ubuntu虚拟机的ip地址:22122
5.5 Запустить трекер и хранилище

sudo service fdfs_trackerd start

sudo service fdfs_storaged start

на облачном сервере

sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

5.6 Проверьте, прошла ли установка успешно
  1. sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
  2. редактировать/etc/fdfs/client.confконфигурационный файлsudo vim /etc/fdfs/client.confМодификации:base_path=/home/python/fastdfs/tracker tracker_server=自己ubuntu虚拟机的ip地址:22122
  3. Загрузить тестовый файл:fdfs_upload_file /etc/fdfs/client.confфайл изображения для загрузки Если он возвращает что-то вродеgroup1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpgдокументidЗагрузка файла прошла успешно
5.7 Установите веб-модуль nginx и fastdfs-nginx-module

Сначала установите библиотеку зависимостей nginx

  • Установите зависимости gcc g++
sudo apt-get install build-essential
sudo apt-get install libtool
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
  • Установите зависимости zlib (www.zlib.net)
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
  • Установите библиотеку зависимостей SSL (по умолчанию установлена ​​версия 16.04)
sudo apt-get install openssl
  1. распаковатьnginx-1.8.1.tar.gz
  2. распаковатьfastdfs-nginx-module-master.zip
  3. Входитьnginx-1.8.1в каталоге
  4. воплощать в жизньsudo ./configure --prefix=/usr/local/nginx --add-module=/home/ubuntu/fastdfs-nginx-module-master解压后的目录的绝对路径/src
  5. sudo make sudo make install
  6. sudo cp fastdfs-nginx-module-master解压后的目录中src下的mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
  7. sudo vim /etc/fdfs/mod_fastdfs.confМодификации:
connect_timeout=10
tracker_server=自己ubuntu虚拟机的ip地址:22122
url_have_group_name=true
store_path0=/home/python/fastdfs/storage
  1. sudo cp 解压缩的fastdfs-master目录conf目录中的http.conf /etc/fdfs/http.conf
  2. sudo cp 解压缩的fastdfs-master目录conf目录中的mime.types /etc/fdfs/mime.types
  3. sudo vim /usr/local/nginx/conf/nginx.conf

существуетhttpДобавьте информацию о конфигурации в раздел следующим образом:

server {
            listen       8888;
            server_name  localhost;
            location ~/group[0-9]/ {
                ngx_fastdfs_module;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }

11. Стартnginx

sudo /usr/local/nginx/sbin/nginx