Облачная платформаAdvanced

Подключение файловой системы

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Сценарии

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

Notice

Перед монтированием файловых систем включите доступ через следующие порты:

  1. 111, 445, 2049, 2051, 2052, and 20048
  2. Три дополнительных порта для Ubuntu. Чтобы получить номера портов, выполните следующую команду:
    rpcinfo -p|grep mountd|grep tcp

Для получения подробной информации см. What Resources Does SFS Occupy?.

FunctionGraph поддерживает следующие типы файловых систем:

  • SFS

    Scalable File Service (SFS) — это сервис сетевого хранилища (NAS), предоставляющий масштабируемое высокопроизводительное файловое хранилище. С помощью SFS можно обеспечить совместный доступ между несколькими ECS, Bare Metal Server (BMS) и контейнерами Cloud Container Engine (CCE) и Cloud Container Instance (CCI). SFS масштабируется до петабайт и предоставляет полностью управляемое совместное файловое хранилище. Он обладает высокой доступностью и надёжностью и беспрепятственно обрабатывает приложения с интенсивным использованием данных и пропускной способности. SFS подходит для высокопроизводительных вычислений (HPC), обработки медиа, совместного использования файлов, управления контентом и веб‑сервисов.

  • SFS Turbo

    SFS Turbo масштабируется до 320 ТБ и предоставляет полностью управляемое совместное файловое хранилище. Он обладает высокой доступностью и надёжностью и поддерживает огромное количество небольших файлов и приложений, требующих низкой задержки и высокой пропускной способности ввода‑вывода (IOPS). SFS Turbo подходит для высокопроизводительных веб‑сайтов, хранения логов, сжатия и распаковки, DevOps, офисов предприятий и контейнеризованных приложений.

  • ECS

    Каталог на ECS указывается как общая файловая система (см. Creating an NFS Shared Directory on ECS) с помощью сервиса сетевой файловой системы (NFS). Затем каталог можно смонтировать к функции в том же VPC, что и ECS, чтобы функция могла читать и записывать данные в каталоге. Файловые системы ECS позволяют динамически расширять вычислительные ресурсы. Этот тип файловой системы подходит для сценариев с низким уровнем нагрузки.

Преимущества использования этих файловых систем:

  • Пространство выполнения каждой функции можно расширить помимо каталога /tmp (512 MB).
  • Файловая система может использоваться несколькими функциями.
  • Вычислительные ресурсы ECS можно динамически расширять, а существующую ёмкость хранилища ECS использовать для повышения вычислительной производительности.
    Note

    Во временном каталоге /tmp можно записывать временные файлы. Общий размер этих файлов не может превышать 10 240 MB.

Creating an Agency

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

Существует ограничение на максимальное количество создаваемых агентств, и агентства облачных сервисов нельзя изменять. Поэтому рекомендуется создать агентство с правами высокого уровня, например, Tenant Administrator, чтобы функция могла получать доступ ко всем ресурсам в выбранном регионе. Подробнее см. Creating an Agency.

Mounting an SFS File System

Setting an Agency

На странице вкладки Configuration выберите агентство, которому предоставлены права SFS Administrator или Tenant Administrator в выбранном регионе.

Если доступных агентств нет, создайте одно в IAM.

Mounting a File System

На странице сведений о функции выберите Configuration → Disk Mounting и нажмите Mount File System. При первом монтировании файловой системы к целевой функции необходимо задать User ID и group ID.

User ID и group ID (аналогично uid и gid в Linux) позволяют функции получать доступ к конкретной файловой системе.

Note

User ID: введите –1 или целое число от 1 до 65 534, кроме 1000 и 1002. Значение по умолчанию –1 указывает, что бекенд FunctionGraph автоматически выделяет идентификатор.

Group ID: Введите –1 или целое число от 1 до 65,534, кроме 1000 и 1002. Значение по умолчанию –1 указывает, что бекенд FunctionGraph автоматически выделяет идентификатор.

Например, ECS смонтирован с файловой системой SFS, и владельцем каталога в файловой системе является test-user. Затем вы можете выполнить команду id test-user, чтобы запросить uid и gid.

Выберите файловую систему SFS и задайте путь доступа.

Notice

Путь доступа функции может содержать не более двух уровней. /mnt и /home являются существующими путями. Рекомендуется задать путь доступа, начинающийся с /mnt или /home. Если задать путь /mnt или /home, будет отображено сообщение "failed to mount exist system path".

Монтирование файловой системы SFS Turbo

Настройка Agency

Перед монтированием файловой системы SFS Turbo к функции укажите агентство, которому предоставлены разрешения SFS Administrator и VPC Administrator для функции. Если доступных агентств нет, создайте его в IAM. Подробнее см. Creating an Agency.

Настройка доступа VPC

Файловая система SFS Turbo доступна только в VPC, в которой она была создана. Перед монтированием такой файловой системы к функции включите доступ VPC для функции.

  1. В консоли SFS получите информацию о VPC и подсети, в которой файловая система будет смонтирована к вашей функции. Подробнее см. File System Management.
  2. Включите доступ VPC, обратившись к Configuring VPC Access и введите VPC и подсеть, полученные в 1.

Монтирование файловой системы SFS Turbo

Файловые системы SFS Turbo можно монтировать так же, как файловые системы SFS. Выберите файловую систему и задайте путь доступа.

Монтирование общей директории ECS

Указание Agency

Перед монтированием общей директории ECS к функции укажите agency, которой предоставлены Tenant Guest и VPC Administrator разрешения для функции. Если доступных agency нет, создайте её в IAM. Для подробностей см. Creating an Agency.

Настройка доступа к VPC

Перед добавлением общей директории ECS укажите VPC, в которой развернут ECS. Просмотрите информацию о VPC на странице сведений ECS. Нажмите VPC name, чтобы перейти на страницу сведений VPC, и просмотрите подсеть.

Установите полученные VPC и подсеть для функции.

Монтирование директории ECS

Введите общую директорию и путь доступа функции.

Последующие операции

Функция может читать и записывать данные в пути доступа так же, как в смонтированной файловой системе.

Function logs могут сохраняться, настроив log path как поддиректорию в пути доступа.

Ниже используется SFS Turbo и шаблон Web-Server-Access-Log-Statistics в качестве примера для описания того, как анализировать логи серверов, работающих в облаке.

  1. Войдите в консоль FunctionGraph. В панели навигации выберите Templates.
  2. В правом верхнем углу страницы Templates введите Web-Server-Access-Log-Statistics в поле поиска и нажмите Enter.
  3. В результатах поиска нажмите Configure. Появится страница конфигурации. Установите параметры следующим образом:

    • Region: Выберите тот же регион, что и созданный VPC и файловая система. Подробности о том, как создать VPC и файловую систему, см. Configuring VPC Access и Creating a File System.
    • Project: Используйте default.
    • Function Name: Введите пользовательское имя.
    • Agency: Выберите агентство с правами доступа к файловой системе, VPC и APIG. Подробности о том, как создать агентство, см. Creating an Agency.
    • Enterprise Project: Выберите enterprise project по необходимости.
    • Environment Variables: access_log_path указывает адрес файла журнала. Установите этот параметр в /home/test/access_log.log.
      Note

      Для указания путей к файлам в файловой системе используйте абсолютные пути, начинающиеся со слеша (/). Однако если файловая система не смонтирована, можно опустить слеш (/) и просто задать параметр code/access_log.log.

    • Trigger Type: Значение по умолчанию — API Gateway (APIG). Подробности о настройке APIG см. в Using an APIG (Dedicated) Trigger.
    • API Name: Введите пользовательское имя.
    • API Group: Выберите группу в соответствии с реальной службой.
    • Environment: Выберите RELEASE.
    • Security Authentication: Выберите None.
    • Protocol и Timeout (ms): Сохраните значения по умолчанию.

  4. После завершения настройки параметров нажмите Create Function.
  5. На странице сведений о функции нажмите вкладку Code, добавьте следующий код в файл index.py и нажмите Deploy.

    import shutil
    shutil.copyfile('/opt/function/code/access_log.log', '/home/test/access_log.log')

    Кроме того, добавьте публичную зависимость Jinja2-2.10. Подробности см. в How Do I Add a Dependency to a Function?

    Note

    Если файловая система не смонтирована, добавлять предыдущий код не требуется.

  6. На странице сведений о функции выберите Configuration > Network и включите VPC Access. Установите VPC и Subnet в созданный VPC и подсеть и нажмите Save.
  7. Выберите Disk Mounting, нажмите Mount File System и выберите SFS Turbo.

    • File System: Выберите существующую файловую систему SFS Turbo.
    • Access Path: Установите этот параметр в /home/test.
    • Shared Directory: путь к общей директории файловой системы. Если этот параметр оставлен пустым по умолчанию, функция может получать доступ ко всем директориям файловой системы. Если указать конкретный путь к директории, функция будет иметь доступ только к этому пути.

  8. Нажмите вкладку Code, выберите Configure Test Event, создайте Blank Template и нажмите Create.
  9. Выберите созданное тестовое событие и нажмите Test.

    Рисунок 1 Результат теста


  10. Выберите Configuration > Triggers, скопируйте URL триггера APIG и откройте URL в браузере.

    Рисунок 2 Отображение результатов