1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fastdfs100-FastCFS

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
cluster-expansion-zh_CN.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 15.03.2025 23:09 7748a78

Руководство по расширению кластера FastCFS

Кластер FastCFS состоит из трёх компонентов: fauth (сервис аутентификации), fdir (сервис каталога) и fstore (система хранения данных). Ниже приведены методы и шаги по расширению каждого из этих компонентов.

1. Fauth (Сервис аутентификации)

Данные пользователей и права доступа в сервисе аутентификации хранятся в fdir. Сервис работает в режиме горячего резерва, рекомендуется использовать от двух до трёх серверов (узлов). При отказе основного узла система автоматически переключается на резервный узел.

Поскольку сам сервис аутентификации данные не хранит, его можно увеличивать или уменьшать в зависимости от потребностей.

2. Fdir (Сервис каталога)

Сервис каталога FastCFS используется для управления метаданными файлов. В настоящее время поддерживаются группы серверов, используемые обычные серверы (например, с 64 ГБ оперативной памяти и SSD) могут поддерживать миллиарды файлов.

Подробнее см. Обзор высокопроизводительного масштабируемого распределённого сервиса каталога FastDIR.

Рекомендуется развернуть fdir на трёх серверах. Количество серверов fdir может быть увеличено или уменьшено в соответствии с требованиями. Fdir будет автоматически синхронизировать данные на основе binlog.## 3. Fstore (Система хранения данных)

Fstore использует групповое хранение содержимого файлов. Для удобства расширения FastCFS ввел концепцию групп данных (DG).

Фрагменты файлов размером 4 МБ маршрутизируются в соответствующие группы данных на основе их хеш-кода (идентификатор файла + смещение блока). Формула расчета следующая:

DGI = HashCode % DGC

DGI: Индекс группы данных
HashCode: Хеш-код фрагмента файла
DGC: Общее количество групп данных

Группы данных являются логическими или виртуальными понятиями, которые отображаются на физические или реальные понятия — группы серверов (SG). Это отношение многих ко одному, то есть одна группа серверов (SG) может содержать несколько групп данных (DG).

Общее количество групп серверов в кластере fstore обозначается как SGC.

Отношение DG и SG настраивается в конфигурационном файле cluster.conf системы fstore. Пример конфигурации (для простоты показана только одна группа серверов с тремя репликами):

# SGC
server_group_count = 1

# DGC
data_group_count = 256

# Настройка SG1
[server-group-1]
server_ids = [1-3]
data_group_ids = [1, 256]

Расширение кластера fstore можно выполнять путем добавления одной группы серверов за раз. Когда размер кластера небольшой (например, SGC ≤ 4), рекомендуется удвоить количество групп серверов (SGC).Число групп данных (DGC) после установки остаётся постоянным, за исключением случаев создания нового кластера. Поэтому при первоначальной настройке кластера следует заранее определить общее число групп данных (DGC), учитывая прогноз развития бизнеса.Например, если предположить, что через пять лет потребуется 20 групп серверов (SGC), чтобы обеспечить эффективное использование многоядерных процессоров, каждая группа серверов должна обслуживать 32 группы данных (DG), то DGC составит 20 * 32 = 640. Чтобы максимально использовать производительность, DGC округляется до ближайшей степени двойки, то есть до 1024. Приведение ниже дружественного совета: рекомендуется в производственной среде установить значение DGC как минимум равным 256.

Динамическое расширение fstore состоит из двух шагов модификации файла cluster.conf:

  1. Добавление новых SG для расширения и миграция DG в новые SG;
  2. После завершения автоматической синхронизации новых SG удалите старое отображение DG для существующих SG.

После выполнения вышеописанных шагов необходимо распространить изменения в cluster.conf на все серверы fstore и fuseclient, а затем перезапустить эти компоненты. Рекомендованный порядок перезапуска следующий:

 1. Остановить fuseclient
 2. Перезапустить fstore
 3. Запустить fuseclient

Пример того, как увеличить количество SG с одного до двух (оба используют три реплики) и как это отразится на конфигурации cluster.conf:

Шаг 1

Модифицированный фрагмент cluster.conf выглядит так:

# Количество групп серверов увеличивается с OnClickListener.ONE до OnClickListener.TWO
server_group_count = 2

# Количество данных групп
data_group_count = 256
```# Изменение отображения DG, перемещение [129, 256] в SG2
[server-group-1]
server_ids = [1-3]
data_group_ids = [1, 128]

# Настройка SG2
# Необходимо добавить серверы [1-3] для синхронизации существующих данных
[server-group-2]
server_ids = [1-6]
data_group_ids = [129, 256]

Разместите cluster.conf на всех серверах fstore и fuseclient, после чего перезапустите fstore и fuseclient.

Приступайте ко второму шагу после завершения синхронизации новых SG.

  • Примечание:
    • Во время синхронизации данные продолжают обслуживание;
    • Можно использовать инструмент fs_cluster_stat для проверки состояния fstore, например:
# Просмотр активных серверов, убедитесь что все серверы имеют состояние ACTIVE, проверьте последнюю строку вывода
fs_cluster_stat -A

# Просмотр неактивных серверов, убедитесь что вывод пустой
fs_cluster_stat -N

# Проверка активности конкретной группы данных (например ID=256)
fs_cluster_stat -g 256

# Просмотр справочной информации
fs_cluster_stat -h

Шаг 2

Модифицированный фрагмент cluster.conf выглядит следующим образом:

# Количество групп серверов
server_group_count = 2

# Количество данных групп
data_group_count = 256

[server-group-1]
server_ids = [1-3]
data_group_ids = [1, 128]

# Удаление серверов [1-3]
[server-group-2]
server_ids = [4-6]
data_group_ids = [129, 256]

Разместите cluster.conf на всех серверах fstore и fuseclient, после чего перезапустите fstore и fuseclient.### Удаление перемещённых данных После завершения миграции данных, чтобы освободить место, занятое перемещёнными данными, начиная с версии V3.2, можно использовать параметр --migrate-clean при запуске fs_serverd, пример использования:

/usr/bin/fs_serverd /etc/fastcfs/fstore/server.conf restart --migrate-clean

Обратите внимание: Для предотвращения случайных действий при запуске fs_serverd не следует использовать --migrate-clean!* Дополнительно:

  • Распределение конфигурационных файлов и управление запуском/остановкой программы можно выполнить с помощью fcfs.sh. Инструкция по использованию см. в FastCFS операционных инструментах.
  • Шаги 1 и 2, связанные с перезапуском кластера fstore и fuseclient, могут привести к недоступности сервиса. Рекомендуется выполнять эти шаги в период низкой нагрузки на бизнес.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fastdfs100-FastCFS.git
git@api.gitlife.ru:oschina-mirror/fastdfs100-FastCFS.git
oschina-mirror
fastdfs100-FastCFS
fastdfs100-FastCFS
master