问题描述
我在 GKE 集群上运行了一个 odoo 14 应用。已通过设置 workers = 2
启用多处理器模式。我选择了默认的 GKE 入口将匹配 /longpolling/*
的请求路由到长轮询端口,其余的路由到普通端口。
这是我配置 GKE 入口的方法。
ingress.tf
resource "kubernetes_ingress" "ingress_service" {
Metadata {
name = "ingress-service"
annotations = {
"networking.gke.io/managed-certificates": "subdomain-company-com"
"networking.gke.io/v1beta1.FrontendConfig": "frontend-config" # for https redirection
}
}
spec {
rule {
host = "dev.company.com"
http {
path {
path = "/*"
backend {
service_name = kubernetes_service.core_service.Metadata.0.name
service_port = kubernetes_service.core_service.spec.0.port.0.port
}
}
}
}
rule {
host = "dev.company.com"
http {
path {
path = "/longpolling/*"
backend {
service_name = kubernetes_service.core_service.Metadata.0.name
service_port = kubernetes_service.core_service.spec.0.port.1.port
}
}
}
}
}
wait_for_load_balancer = true
}
Kubernetes 服务如下所示。
resource "kubernetes_service" "core_service" {
Metadata {
name = "core-service"
annotations = {
"cloud.google.com/backend-config" = jsonencode({
"ports" = {
"longpolling" = "long-polling-be-config"
}
})
}
}
spec {
type = "NodePort"
selector = {
app = "core"
}
port {
name = "normal"
port = 8080
protocol = "TCP"
target_port = "8069"
}
port {
name = "longpolling"
port = 8081
protocol = "TCP"
target_port = "8072"
}
}
}
自定义后端配置 long-polling-be-config
如下。
apiVersion: cloud.google.com/v1
kind: BackendConfig
Metadata:
name: long-polling-be-config
spec:
healthCheck:
checkIntervalSec: 30
healthyThreshold: 5
type: HTTP
requestPath: /web/database/selector
port: 8081
端口 8069
的运行状况检查在 Kubernetes Deployment 中定义如下。
readiness_probe {
http_get {
path = "/web/database/selector"
port = "8069"
}
initial_delay_seconds = 15
period_seconds = 30
}
后端运行良好,但我仍然每分钟左右看到一次此错误。
2021-07-10 12:41:24,014 15 INFO odoo werkzeug: 10.2.0.1 - - [10/Jul/2021 12:41:24] "POST /longpolling/poll HTTP/1.1" 200 - 1 0.001 0.010
2021-07-10 12:41:24,739 15 INFO ? werkzeug: 10.2.0.1 - - [10/Jul/2021 12:41:24] "GET /web/database/selector HTTP/1.1" 200 - 6 0.008 0.102
2021-07-10 12:41:29,106 15 INFO ? werkzeug: 10.2.0.1 - - [10/Jul/2021 12:41:29] "GET /web/database/selector HTTP/1.1" 200 - 6 0.009 0.076
2021-07-10 12:41:54,054 14 ERROR odoo odoo.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py",line 237,in _dispatch
result = request.dispatch()
File "/usr/lib/python3/dist-packages/odoo/http.py",line 683,in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py",line 359,in _call_function
return checked_call(self.db,*args,**kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py",line 94,in wrapper
return f(dbname,**kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py",line 347,in checked_call
result = self.endpoint(*a,**kw)
File "/usr/lib/python3/dist-packages/odoo/http.py",line 912,in __call__
return self.method(*args,line 531,in response_wrap
response = f(*args,**kw)
File "/usr/lib/python3/dist-packages/odoo/addons/bus/controllers/main.py",line 35,in poll
raise Exception("bus.Bus unavailable")
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py",line 639,in _handle_exception
return super(JsonRequest,self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py",line 315,in _handle_exception
raise exception.with_traceback(None) from new_cause
Exception: bus.Bus unavailable
我遵循了 question 中的解决方案,这是通过 Nginx 反向代理。我如何使用 GKE 入口复制它?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)