Поделиться через


Балансировка нагрузки трафика клиента HPC Cache

В этой статье описываются некоторые основные методы балансировки трафика клиента ко всем точкам подключения в Azure HPC Cache.

Каждый HPC Cache имеет по крайней мере три разных IP-адреса, а кэши с большими значениями пропускной способности могут иметь до 12. Важно использовать все IP-адреса, чтобы получить все преимущества Azure HPC Cache.

Существуют различные варианты балансировки нагрузки для подключения клиента:

  • Вручную выберите другой IP-адрес подключения для каждого клиента.
  • Включение поворота IP-адресов в скрипты подключения клиента
  • Настройте систему DNS для автоматического маршрутизации клиентских запросов между всеми доступными адресами (циклический перебор DNS)

Правильная система балансировки нагрузки зависит от сложности рабочего процесса, количества IP-адресов в кэше и большого количества других факторов. Обратитесь к своему помощнику по Azure, если вам нужна помощь в принятии решения о том, какой подход лучше всего подходит для вас.

Назначение IP-адресов вручную

IP-адреса подключения кэша отображаются на страницах "Обзор кэша" и "Инструкции по подключению" в портал Azure и в сообщении об успешном выполнении, которое выводится при создании кэша с помощью Azure CLI или PowerShell.

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

Дополнительные сведения см. в разделе "Подключение кэша AZURE HPC".

Использование балансировки нагрузки с помощью скриптов

Существует несколько способов программного поворота подключений клиентов между доступными IP-адресами. Ниже приведены два примера.

Пример cksum скрипта для подключения команд

В этом примере команда подключения использует хэш-функцию cksum и имя узла клиента для автоматического распределения клиентских подключений между всеми доступными IP-адресами в HPC Cache. Если все клиентские компьютеры имеют уникальные имена узлов, можно выполнить эту команду на каждом клиенте, чтобы убедиться, что используются все доступные точки подключения.

mount -o hard,proto=tcp,mountproto=tcp,retry=30 $(X=(10.0.0.{1..3});echo ${X[$(($(hostname|cksum|cut -f 1 -d ' ')%3))]}):/${NAMESPACE} /mnt

Чтобы использовать этот пример в рабочем процессе, настройте следующие термины:

  • X= В выражении используйте разделенный пробелом список всех адресов подключения кэша в отсортированном порядке.

    Выражение (X=(10.0.0.{7..9}) задает переменную X в качестве этого набора адресов подключения: {10.0.0.7, 10.0.0.8, 10.0.0.9}. Используйте базовый IP-адрес кэша и точные адреса, отображаемые на странице обзора кэша. Если адреса не являются последовательными, перечислите их все в числовом порядке.

  • В термине %3 используйте фактическое число IP-адресов подключения, которые имеет кэш (обычно 3, 6, 9 или 12).

    Например, используйте %9 , если кэш предоставляет девять IP-адресов подключения клиента.

  • Для выражения ${NAMESPACE}используйте путь к целевому пространству имен хранилища, к которому будет обращаться клиент.

    Вы можете использовать определенную переменную (NAMESPACE в примере) или передать литеральное значение.

    В примере команды в конце этого раздела используется литеральное значение для пути пространства имен. /blob-target-1

  • Если вы хотите использовать пользовательский локальный путь на клиентских компьютерах, измените значение /mnt на нужный путь.

Ниже приведен пример заполненной команды подключения клиента:

mount -o hard,proto=tcp,mountproto=tcp,retry=30 $(X=(10.7.0.{1..3});echo ${X[$(($(hostname|cksum|cut -f 1 -d ' ')%3))]}):/blob-target-1 /hpc-cache/blob1 

Пример функции циклического перебора

В этом примере кода IP-адреса клиента используются в качестве случайного элемента для распространения клиентов на все доступные IP-адреса HPC Cache.

function mount_round_robin() {

  # to ensure the clients are spread out somewhat evenly the default
  # mount point is based on this client's IP octet4 % number of HPC cache mount IPs.

  declare -a MOUNT_IPS="($(echo ${NFS_IP_CSV} | sed "s/,/ /g"))"
  HASH=$(hostname | cksum | cut -f 1 -d ' ')
  DEFAULT_MOUNT_INDEX=$((${HASH} % ${#MOUNT_IPS[@]}))
  ROUND_ROBIN_IP=${MOUNT_IPS[${DEFAULT_MOUNT_INDEX}]}

  DEFAULT_MOUNT_POINT="${BASE_DIR}/default"

  # no need to write again if it is already there
  if ! grep --quiet "${DEFAULT_MOUNT_POINT}" /etc/fstab; then
      echo "${ROUND_ROBIN_IP}:${NFS_PATH} ${DEFAULT_MOUNT_POINT} nfs hard,proto=tcp,mountproto=tcp,retry=30 0 0" >> /etc/fstab
      mkdir -p "${DEFAULT_MOUNT_POINT}"
      chown nfsnobody:nfsnobody "${DEFAULT_MOUNT_POINT}"
  fi
  if ! grep -qs "${DEFAULT_MOUNT_POINT} " /proc/mounts; then
      retrycmd_if_failure 12 20 mount "${DEFAULT_MOUNT_POINT}" || exit 1
  fi
}

Использование балансировки нагрузки DNS

В этом разделе описаны основы настройки системы DNS для распространения клиентских подключений ко всем точкам подключения в Azure HPC Cache. Этот метод не учитывает объем трафика, генерируемого каждым клиентом, но гарантирует, что клиенты равномерно распределяются по всем интерфейсам кэша вместо того, чтобы использовать один или два.

В этом документе не содержатся инструкции по настройке и управлению DNS-сервером для клиентов в среде Azure.

DNS не требуется для подключения клиентов с помощью протокола NFS и IP-адресов. DNS требуется , если вы хотите использовать доменные имена вместо IP-адресов для доступа к аппаратным системам NAS или если рабочий процесс включает определенные расширенные параметры протокола.

Система DNS, используемая для распространения адресов клиентам, не требует доступа к HPC Cache. В некоторых ситуациях может потребоваться использовать пользовательскую систему DNS для самого кэша, но настройка этой системы гораздо сложнее, чем настройка такой системы циклического перебора клиента. Если вы думаете об изменении DNS-сервера HPC Cache на настраиваемую систему, обратитесь к поддержка Azure.

Настройка распределения циклического перебора для точек подключения кэша

Система DNS с циклическим перебором (RRDNS) автоматически направляет клиентские запросы между несколькими адресами.

Чтобы настроить эту систему, необходимо настроить файл конфигурации DNS-сервера таким образом, чтобы при получении запросов на подключение к основному домену HPC Cache он назначает трафик среди всех точек подключения системы HPC Cache. Клиенты подключают HPC Cache, используя его доменное имя в качестве аргумента сервера и перенаправляются в следующий IP-адрес подключения автоматически.

Для настройки RRNDS необходимо выполнить два основных действия:

  1. Измените файл DNS-сервера named.conf , чтобы задать циклический порядок запросов в HPC Cache. Если задан этот параметр, сервер циклически перебирает все доступные значения IP-адресов. Добавьте инструкцию следующим образом:

    options {
        rrset-order {
            class IN A name "hpccache.contoso.com" order cyclic;
        };
    };
    
  2. Настройте записи А и PTR для каждого доступного IP-адреса, как показано в приведенном ниже примере.

    Эти nsupdate команды содержат пример правильной настройки DNS для HPC Cache с доменным именем hpccache.contoso.com и тремя адресами подключения (10.0.0.10, 10.0.0.11 и 10.0.0.12):

    update add hpccache.contoso.com. 86400 A 10.0.0.10
    update add hpccache.contoso.com. 86400 A 10.0.0.11
    update add hpccache.contoso.com. 86400 A 10.0.0.12
    update add client-IP-10.contoso.com. 86400 A 10.0.0.10
    update add client-IP-11.contoso.com. 86400 A 10.0.0.11
    update add client-IP-12.contoso.com. 86400 A 10.0.0.12
    update add 10.0.0.10.in-addr.arpa. 86400 PTR client-IP-10.contoso.com
    update add 11.0.0.10.in-addr.arpa. 86400 PTR client-IP-11.contoso.com
    update add 12.0.0.10.in-addr.arpa. 86400 PTR client-IP-12.contoso.com
    

    Эти команды создают запись A для каждого адреса подключения HPC Cache, а также настраивают записи указателя для поддержки обратных проверка DNS.

    На приведенной ниже схеме показана базовая структура этой конфигурации.

    Diagram showing client mount point DNS configuration.

После настройки системы RRDNS попросите клиентские компьютеры использовать его для разрешения адреса HPC Cache в командах подключения.

Следующие шаги