PowerFlex. Конфигурация высокой доступности шлюза может вызвать задержку при ретрансляции команд, когда основной шлюз не работает
Summary: Автоматизация API на стороне клиента или ручные операции на вторичном шлюзе (GW) занимают больше времени, чем на основном шлюзе.
Symptoms
После того, как Основная группа резервных копий переключается при отказе и получает запросы на Вторичную группу, отправка запроса занимает больше времени для завершения операции.
Пример сценария:
- Заказчик использует Cinder (OpenStack) в качестве клиентского приложения для обмена данными с хранилищем на стороне клиента.
- Пользователь отправляет запрос API для создания нового тома в системе.
- Запрос получен на P-GW (Primary), передан на MDM, и том успешно создан.
- Вся операция от клиента до успешного завершения занимает X секунд (в зависимости от сети и среды пользователя).
- Пользователь отправляет запрос отмены сопоставления для вновь созданного тома.
- Отработка отказа GW повышает S-GW (Вторичный) для получения запросов (переключение при отказе может быть выполнено вручную или в результате сбоя службы или сети Первичной Стороны).
- Пользователь отправляет еще один запрос API для создания нового тома в системе.
- Запрос принимается на S-GW, передается на MDM, и том успешно создан.
- Вся операция от клиента до успешного завершения занимает X+Y секунд.
Пример сценария состоит из трех операций: Команды «Create Volume», «Map Volume» и «Unmap Volume» выполняются одна за другой.
-ГВ
operations.log
2021-06-02 17:09:17,413 [https-jsse-nio-28443-exec-8] INFO audit - 1.1.1.1:/api/types/Volume/instances {volumeType=ThinProvisioned, name=9g/MBZDNTYioDl1bTD34cw==, storagePoolId=fa75c1c100000000, compressionMethod=Normal, protectionDomainId=0089dc6000000000, volumeSizeInKb=5242880}
2021-06-02 17:09:17,601 [https-jsse-nio-28443-exec-3] INFO audit - 1.1.1.1:/api/instances/Volume::5b273f9b00000005/action/addMappedSdc {guid=bb77b627-250b-457e-8a0b-fee221ceb941, allowMultipleMappings=TRUE}
2021-06-02 17:09:19,270 [https-jsse-nio-28443-exec-5] INFO audit - 1.1.1.1:/api/instances/Volume::5b273f9b00000005/action/removeMappedSdc {guid=bb77b627-250b-457e-8a0b-fee221ceb941}
cinder-volume.log
2021-06-02 17:09:17.428 136 DEBUG cinder.volume.drivers.dell_emc.powerflex.rest_client [req-747562dc-0abd-472f-bff4-f739c52d88d2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] REST Request: https://1.1.1.254:443/api/types/Volume/instances with params {"protectionDomainId": "0089dc6000000000", "storagePoolId": "fa75c1c100000000", "name": "9g/MBZDNTYioDl1bTD34cw==", "volumeType": "ThinProvisioned", "volumeSizeInKb": "5242880", "compressionMethod": "Normal"} _check_response /usr/lib/python3.6/site-packages/cinder/volume/drivers/dell_emc/powerflex/rest_client.py:518
2021-06-02 17:09:17.559 136 INFO os_brick.initiator.connectors.scaleio [req-747562dc-0abd-472f-bff4-f739c52d88d2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] map volume request: https://1.1.1.254:443/api/instances/Volume::5b273f9b00000005/action/addMappedSdc
2021-06-02 17:09:19.241 136 INFO os_brick.initiator.connectors.scaleio [req-747562dc-0abd-472f-bff4-f739c52d88d2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] Unmap volume request: https://1.1.1.254:443/api/instances/Volume::5b273f9b00000005/action/removeMappedSdc
С-ГВ
operations.log
2021-06-02 16:55:00,452 [https-jsse-nio-28443-exec-9] INFO audit - 1.1.1.2:/api/types/Volume/instances {volumeType=ThinProvisioned, name=Ik6i/JD8TeKrTHtUg9HQrw==, storagePoolId=fa75c1c100000000, compressionMethod=Normal, protectionDomainId=0089dc6000000000, volumeSizeInKb=5242880}
2021-06-02 16:55:09,665 [https-jsse-nio-28443-exec-4] INFO audit - 1.1.1.2:/api/instances/Volume::5b273f9a00000004/action/addMappedSdc {guid=bb77b627-250b-457e-8a0b-fee221ceb941, allowMultipleMappings=TRUE}
2021-06-02 16:55:20,373 [https-jsse-nio-28443-exec-9] INFO audit - 1.1.1.2:/api/instances/Volume::5b273f9a00000004/action/removeMappedSdc {guid=bb77b627-250b-457e-8a0b-fee221ceb941}
cinder-volume.log
2021-06-02 16:55:00.461 136 DEBUG cinder.volume.drivers.dell_emc.powerflex.rest_client [req-ece34b6a-497f-4826-9c47-13f76773eaf2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] REST Request: https://1.1.1.254:443/api/types/Volume/instances with params {"protectionDomainId": "0089dc6000000000", "storagePoolId": "fa75c1c100000000", "name": "Ik6i/JD8TeKrTHtUg9HQrw==", "volumeType": "ThinProvisioned", "volumeSizeInKb": "5242880", "compressionMethod": "Normal"} _check_response /usr/lib/python3.6/site-packages/cinder/volume/drivers/dell_emc/powerflex/rest_client.py:518
2021-06-02 16:55:00.594 136 INFO os_brick.initiator.connectors.scaleio [req-ece34b6a-497f-4826-9c47-13f76773eaf2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] map volume request: https://1.1.1.254:443/api/instances/Volume::5b273f9a00000004/action/addMappedSdc
2021-06-02 16:55:11.320 136 INFO os_brick.initiator.connectors.scaleio [req-ece34b6a-497f-4826-9c47-13f76773eaf2 8561f3a4fa914f0283bebe844eaae9ff 16f473111d914314aba5f4a3870a1ec7 - default default] Unmap volume request: https://1.1.1.254:443/api/instances/Volume::5b273f9a00000004/action/removeMappedSdc
Воздействие
Автоматизация API на стороне клиента или операции, выполняемые вручную, занимают больше времени, чем ожидалось.
Cause
Шлюз PowerFlex, работающий на Apache Tomcat, содержит несколько функций PowerFlex, в том числе шлюз REST, установщик PowerFlex и отправитель SNMP-ловушек. Для обеспечения высокой доступности при настройке двух экземпляров Apache Tomcat (серверов PowerFlex Gateway) используйте Apache httpd. Чтобы предотвратить возникновение единой точки отказа в Apache httpd, можно использовать экземпляр httpd для переключения при отказе, который кластеризуется с использованием одного из множества доступных стеков кластеризации.
В среде заказчика, использующей RHEL для шлюзов, правильная конфигурация использует Keepalive и HAProxy.
Общий (виртуальный) IP-адрес используется для обоих httpd-серверов Apache. Оба httpd-сервера Apache имеют одинаковую конфигурацию, за исключением того, что один из них определен в конфигурации Keepalived как Primary, а другой — как Secondary. В случае сбоя основной стороны дополнительная сторона становится первичной, что означает, что пользователи не замечают потери обслуживания.
В среде RHEL/CentOS служба Keepalived осуществляет мониторинг серверов PowerFlex Gateway и определяет, на какой сервер следует переслать клиентский запрос. HAProxy и Keepalived настроены на RHEL/CentOS для обеспечения высокой доступности PowerFlex Gateway.
Кипалайв
Инструмент с открытым исходным кодом используется для компонента keep-alive и отвечает за мониторинг состояния HAProxy и настройку виртуального IP-адреса по мере необходимости.
Дополнительные сведения о Keepalived см. в разделе http://www.keepalived.org.
Функция HAProxy
Инструмент с открытым исходным кодом, который служит в качестве балансировщика нагрузки для шлюза PowerFlex, отслеживает системы PowerFlex и перенаправляет трафик при выходе узла из строя.
Дополнительные сведения о HAProxy см. в разделе http://www.haproxy.org.
Конфигурация HAProxy по умолчанию настроена на то, чтобы иметь Secondary GW при владении виртуальным IP-адресом, чтобы повторить попытку передачи полученного запроса API на Primary (значение "retries" установлено в 3), а когда он не работает, чтобы перейти к отправке его на серверную часть (MDM).
Resolution
Как видно из приведенного ниже примера конфигурации HAProxy, файл HAProxy по умолчанию в Global settings , значение 'retries' установлено в 3, что означает, что он пытается повторить команды на Primary GW три раза по одной секунде каждый.
Он выполняет повторный вызов к основному объекту, потому что в backend siogateway 'balance' устанавливается в 'first', что будет Primary GW.
Изменение значений 'mode' и 'option', а также добавление характеристик 'server' также не имеет первостепенной важности:
- Значения 'mode' и 'option' должны быть изменены на 'http' и 'httpchk' соответственно.
- Характеристики 'сервер' должны быть добавлены с 'check fall 5 inter 2000 rise 2'.
После того, как упомянутые выше значения будут изменены и добавлены, задержка уменьшится, если не исчезнет полностью.
Настройки HAProxy настраиваются в соответствии с потребностями окружающей среды заказчика. Если клиенту нужно, чтобы вызовы приложений выполнялись быстрее, он может настроить параметры HAProxy в соответствии с потребностями своего бизнеса.
Файл конфигурации по умолчанию для HAProxy:
haproxy.cfg ДО редактирования:
...
defaults
retries 3
...
backend powerflexgateway
mode tcp
balance first
option ssl-hello-chk
server gateway1 1.1.1.1:28443 maxconn 256 ssl verify none
server gateway2 1.1.1.2:28443 maxconn 256 ssl verify none
haproxy.cfg ПОСЛЕ редактирования:
...
defaults
retries 1
...
backend powerflexgateway
mode http
balance first
option httpchk
server gateway1 1.1.1.1:28443 maxconn 256 ssl verify none check fall 5 inter 2000 rise 2
server gateway2 1.1.1.2:28443 maxconn 256 ssl verify none check fall 5 inter 2000 rise 2