Google Cloud: проверка работоспособности не удаляет сбойный экземпляр из UDP Internal Load Balancer
Я работаю в проекте, чтобы переместить наш SIP инфра. в GCP.
Я использую внутренний балансировщик нагрузки UDP с частным IP-адресом для маршрутизации вызовов от Asterisk к моему Kamailio SBC. Asterisk настроен с использованием IP-адреса балансировщика нагрузки в качестве единственной исходящей конечной точки.
мой Внутренний UDP Load Balancer работает на 5060 Frontend, Backend с 2 SBC и базовой проверкой работоспособности http на порту 80.
На каждом kamailio SBC у меня есть список приложений на порту 5060 и сервер apache на порту 80 для проверки работоспособности, поэтому остановка httpd изменяет состояние экземпляра на нездоровый.
экспедиционные-правила
# gcloud compute forwarding-rules describe ip-gateway-internal-lb-local-fontend --region=europe-west3
IPAddress: 10.156.0.15
IPProtocol: UDP
backendService: https://www.googleapis.com/compute/v1/projects/My-Project/regions/europe-west3/backendServices/My-gateway-internal-lb-bservices
creationTimestamp: '2018-01-30T10:20:19.564-08:00'
description: ''
id: 'XXXXXXXXXXXXX'
kind: compute#forwardingRule
loadBalancingScheme: INTERNAL
name: ip-gateway-internal-lb-local-fontend
network: https://www.googleapis.com/compute/v1/projects/My-Project/global/networks/default
ports:
- '5060'
region: https://www.googleapis.com/compute/v1/projects/My-Project/regions/europe-west3
selfLink: https://www.googleapis.com/compute/v1/projects/My-Project/regions/europe-west3/forwardingRules/ip-gateway-internal-lb-local-fontend
subnetwork: https://www.googleapis.com/compute/v1/projects/My-Project/regions/europe-west3/subnetworks/default
бэкенд-служба
# gcloud compute backend-services describe My-gateway-internal-lb-bservices --region=europe-west3
backends:
- balancingMode: CONNECTION
description: ''
group: https://www.googleapis.com/compute/v1/projects/My-Project/zones/europe-west3-a/instanceGroups/My-gateway-1xx
connectionDraining:
drainingTimeoutSec: 0
creationTimestamp: '2018-01-30T10:15:10.688-08:00'
description: ''
fingerprint: XXXXXXXXX
healthChecks:
- https://www.googleapis.com/compute/v1/projects/My-Project/global/healthChecks/basic-check-internal-http
id: 'XXXXXXXXX'
kind: compute#backendService
loadBalancingScheme: INTERNAL
name: My-gateway-internal-lb-bservices
protocol: UDP
region: https://www.googleapis.com/compute/v1/projects/My-Project/regions/europe-west3
selfLink: https://www.googleapis.com/compute/v1/projects/My-Project/regions/europe-west3/backendServices/My-gateway-internal-lb-bservices
sessionAffinity: NONE
timeoutSec: 3
проверка здоровья
# gcloud compute health-checks describe basic-check-internal-http
checkIntervalSec: 3
creationTimestamp: '2018-01-31T01:13:25.030-08:00'
description: ''
healthyThreshold: 2
httpHealthCheck:
host: ''
port: 80
proxyHeader: NONE
requestPath: /
id: 'XXXXXXXXXXXXXXXXXXXX'
kind: compute#healthCheck
name: basic-check-internal-http
selfLink: https://www.googleapis.com/compute/v1/projects/My-Project/global/healthChecks/basic-check-internal-http
timeoutSec: 3
type: HTTP
unhealthyThreshold: 2
Все тайм-ауты установлены на 3 с. Внутренние правила маршрутизации UDP LB, выполняемые схожестью сеанса (постоянством), не удаляются немедленно, для удаления требуется около 15 минут (без какого-либо трафика).
Тот же самый случай, когда экземпляр снова исправен, LB рассматривает 15 минут и начинает получать трафик.
У меня не было этой проблемы, когда я использовал балансировщик нагрузки UDP с IP-адресом внешнего адреса, потому что мой адрес звездочки, отправляющий трафик, указан так, что хэш из 5 кортежей будет отличаться для каждого вызова.
Но с UDP LB, использующим внутренний IP, хэш из 5-ти кортежей всегда будет одинаковым (один и тот же src/dst IP: порт), так как я могу настроить тайм-аут правил соответствия сеанса (постоянство) или принудительно очистить память моего ФУНТ.
Может быть, это ошибка! Кто-нибудь сталкивался с такой же проблемой? Спасибо и с нетерпением ждем, если кто-нибудь может помочь мне с этим вопросом?
BR, Ouss
1 ответ
Это ошибка внутреннего балансировщика нагрузки (UDP)