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
называется сервером хранения.
Сервер имеет две роли:Tracker
: управлять кластером,tracker
Кластеризация также может быть реализована. каждыйtracker
Статус узла равен. собиратьStorage
Состояние кластера.Storage
: На самом деле сохранение файлаStorage
Разделенные на несколько групп, файлы, сохраненные в каждой группе, отличаются. В каждой группе есть несколько членов, и содержимое членов группы одинаково, и статус члена группы непротиворечив, и нет концепции мастера.
2. Процесс загрузки файла
После того, как клиент загружает файл, сервер хранения сохраняет файлID
возвращается клиенту, этот файлID
Индексная информация для будущего доступа к файлу. Информация индекса файла включает: имя группы, путь к виртуальному диску, двухуровневый каталог данных и имя файла.
Формат имени файла следующий
group1/M00/00/00/rBAABVzRPC-AJVSQAAHqEHLGutU563.jpg
-
Название группы: где находится файл после загрузки
storage
Имя группы после успешной загрузки файлаstorage
Сервер возвращается, и клиенту нужно сохранить его самостоятельно. -
Путь к виртуальному диску:
storage
Настроенные виртуальные пути с параметрами дискаstore_path*
соответствовать. Если настроеноstore_path0
являетсяM00
, если настроеноstore_path1
являетсяM01
, и так далее. -
Двухуровневый каталог данных:
storage
Двухуровневый каталог, созданный сервером для каждого пути виртуального диска для хранения файлов данных. -
Имя файла: отличается от того, когда файл был загружен. Он генерируется сервером хранения в соответствии с определенной информацией, а имя файла содержит: исходный сервер хранения
IP
Такая информация, как адрес, отметка времени создания файла, размер файла, случайное число и расширение файла.
3. Процесс загрузки файла
4. Простая архитектура FastDFS
5. Установка FastDFS
- Адреса загрузки FastDFS и соответствующих модулей Nginx указаны ниже.
ссылка для скачиванияКод извлечения: nw6t
5.1 Установите зависимости fastdfs
- распаковать
libfastcommon-master.zip
- Входить
libfastcommon-master
в каталоге - воплощать в жизнь
./make.sh
- воплощать в жизнь
sudo ./make.sh install
5.2 Установите фастдфс
- распаковать
fastdfs-master.zip
- Входить
fastdfs-master
в каталоге - воплощать в жизнь
./make.sh
- воплощать в жизнь
sudo ./make.sh install
5.3 Настройка трекера сервера отслеживания
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
- существует
/home/python/
создать каталогfastdfs/tracker
- редактировать
/etc/fdfs/tracker.conf
конфигурационный файлsudo vim /etc/fdfs/tracker.conf
Исправлятьbase_path=/home/python/fastdfs/tracker
5.4 Настройка хранилища сервера хранения
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
- существует
/home/python/fastdfs/
создать каталогstorage
- редактировать
/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 Проверьте, прошла ли установка успешно
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
- редактировать
/etc/fdfs/client.conf
конфигурационный файлsudo vim /etc/fdfs/client.conf
Модификации:base_path=/home/python/fastdfs/tracker
tracker_server=自己ubuntu虚拟机的ip地址:22122
- Загрузить тестовый файл:
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
- Установите библиотеку зависимостей pcre (woohoo.usualhot.org/)
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
- распаковать
nginx-1.8.1.tar.gz
- распаковать
fastdfs-nginx-module-master.zip
- Входить
nginx-1.8.1
в каталоге - воплощать в жизнь
sudo ./configure --prefix=/usr/local/nginx --add-module=/home/ubuntu/fastdfs-nginx-module-master解压后的目录的绝对路径/src
-
sudo make
sudo make install
sudo cp fastdfs-nginx-module-master解压后的目录中src下的mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
-
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
sudo cp 解压缩的fastdfs-master目录conf目录中的http.conf /etc/fdfs/http.conf
sudo cp 解压缩的fastdfs-master目录conf目录中的mime.types /etc/fdfs/mime.types
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