Ограничение времени простоя соединения в IBM Cloud LBaaS вызывает проблемы в наших приложениях - PullRequest
0 голосов
/ 04 марта 2020

Мы - команда IBM, использующая IBM Cloud LBaaS (сервис балансировки нагрузки) для наших приложений, работающих в инфраструктуре IBM Cloud. Мы получили некоторые жалобы клиентов на неспособность получить ожидаемые ответы на внешний интерфейс нашего продукта, которых они никогда не встречали ранее при предыдущем развертывании нашего продукта на AWS. Мы исследовали эту проблему и обнаружили, что соединения запросов клиентов были разорваны балансировщиком нагрузки IBM Cloud, потому что эти запросы занимали более 50 секунд, чтобы получить ответ от бэкэнда (это некоторые из наших сценариев использования с долго выполняющимися задачами).

Мы нашли 50-секундное ограничение времени ожидания соединения здесь https://cloud.ibm.com/docs/infrastructure/loadbalancer-service?topic=loadbalancer-service-advanced-traffic-management-with-ibm-cloud-load-balancer#connection -timeouts . Нам интересно, можно ли настроить время простоя, чтобы мы могли выполнять наши долгосрочные задачи? Если это пока не поддерживается, есть ли план реализовать это в будущем или возможно увеличить это ограничение до разумного большего значения?

БЮР, максимальное время простоя AWS Служба балансировки нагрузки: 3600 секунд : https://aws.amazon.com/blogs/aws/elb-idle-timeout-control/.

Любые предложения о том, как решить / устранить эту проблему, приветствуются. Не стесняйтесь, пишите мне напрямую (yang. zhang3@ibm.com), если у вас есть, чем поделиться. Спасибо!

Ян

1 Ответ

0 голосов
/ 06 марта 2020

Если вы ссылаетесь на время ожидания простоя, оно упоминается в той же ссылке документации, что вы можете установить время ожидания сервера и клиента до 7200 секунд (2 часа).

Время ожидания простоя соединения на стороне сервера и на стороне клиента теперь можно настроить с помощью API. Пользователь может настроить время ожидания сервера (ParameterName: serverTimeout) и время ожидания клиента (ParameterName: clientTimeout) в секундах до 2 часов (диапазон: от 1 до 7200 секунд) с помощью метода «UpdateLoadBalancerProtocols» службы «SoftLayer_Network_LBaaS_Listener». Если пользователь не предоставляет значение времени ожидания сервера или клиента, балансировщик нагрузки будет использовать значение по умолчанию (упомянутое в таблице) для соответствующего времени ожидания.

Например, как использовать метод UpdateLoadBalancerProtocols, проверьте этот пример клиента softlayer- python, упомянутый в справочной документации API

import SoftLayer
from pprint import pprint

# Your load balancer UUID
uuid = 'set me'

# New protocols to add
protocolConfigurations = [
    {
        "backendPort": 1350,
        "backendProtocol": "TCP",
        "frontendPort": 1450,
        "frontendProtocol": "TCP",
        "loadBalancingMethod": "WEIGHTED_RR",    # ROUNDROBIN, LEASTCONNECTION, WEIGHTED_RR
        "maxConn": 500,
        "sessionType": "SOURCE_IP"
    },
    {
        "backendPort": 1200,
        "backendProtocol": "HTTP",
        "frontendPort": 1150,
        "frontendProtocol": "HTTP",
        "loadBalancingMethod": "ROUNDROBIN",    # ROUNDROBIN, LEASTCONNECTION, WEIGHTED_RR
        "maxConn": 1000,
        "sessionType": "SOURCE_IP",
        "serverTimeout": 70,
        "clientTimeout": 70
    }
]

# Create the api client
client = SoftLayer.Client()
listener_service = client['Network_LBaaS_Listener']

_mask = "mask[listeners]"

try:
    response = listener_service.updateLoadBalancerProtocols(uuid, protocolConfigurations, mask=mask)
    pprint(response)
except SoftLayer.SoftLayerAPIError as e:            
    print("Unable to add protocols: %s, %s" % (e.faultCode, e.faultString))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...