0

我正在一个项目中移动我们的 SIP 基础设施。到 GCP。

我正在使用带有私有 IP 的 UDP 内部负载均衡器将呼叫从 Asterisk 路由到我的 Kamailio SBC,Asterisk 配置了负载均衡器的地址 IP 作为单个传出端点。

在此处输入图像描述

我的内部 UDP 负载均衡器在 5060 前端运行,后端有 2 个 SBC 和端口 80 上的基本 http 健康检查。

在每个 kamailio SBC 上,我在端口 5060 上列出了我的应用程序,在端口 80 上列出了 apache 服务器以进行健康检查,因此停止 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 分钟才能考虑并开始接收流量。

当我使用带有外部地址 IP 的 UDP 负载均衡器时,我没有遇到这个问题,因为我发送流量的星号地址是指定的,因此每次调用的 5 元组哈希值都会不同。

但是对于使用内部 IP 的 UDP LB,5 元组哈希将始终相同(相同的 src/dst IP:Port),因此我如何配置会话亲和性(持久性)规则的超时或强制刷新我的内存磅。

也许这是一个错误!有没有人遇到同样的问题?感谢并期待是否有人可以帮助我解决这个问题?

BR,奥斯

4

1 回答 1

1

这是内部负载平衡器 (UDP) 上的错误

https://groups.google.com/forum/#!topic/gce-discussion/1uYmNoLgdGw

https://issuetracker.google.com/issues/72491707

于 2018-02-02T09:01:58.173 回答