У нас есть служба gRP C в Nomad, работающая по назначению. Затем мы запускаем Фабио как LB. Поэтому, когда мы запускаем наш клиент gRP C через Fabio, соединение неожиданно закрывается с сообщением на стороне клиента: grpc: the client connection is closing
или Cancelled: context canceled
, и мы получаем аналогичные проблемы на сервере. Происходит при потоковой передаче с сервера в течение пары минут.
РЕДАКТИРОВАТЬ: После TCPDump я вижу, что соединение от клиента к Fabio отключается, но не от Fabio к службе gRP C. В TCPDump я вижу, что сервер все еще отправляет строки в Fabio.
Эта проблема не возникает при запуске непосредственно на порт, указанный Nomad. Там мы можем выполнить запрос на 15+ минут и никаких проблем. Поэтому я думаю, что это проблема с Фабио.
Ценю любую помощь.
Это наша работа Фабио
job "lb" {
datacenters = ["dc1"]
type = "system"
group "fabio" {
restart {
attempts = 2
delay = "30s"
mode = "delay"
}
task "fabio" {
driver = "docker"
config {
image = "fabiolb/fabio:1.5.13-go1.13.4"
network_mode = "host"
}
env {
proxy_addr = ":8080;proto=http,:5160;proto=grpc"
ui_color = "blue lighten-1"
ui_title = "${NOMAD_DC}"
}
service {
name = "${NOMAD_TASK_NAME}-http"
tags = ["http", "lb"]
port = "http"
check {
name = "${NOMAD_TASK_NAME} http"
type = "tcp"
interval = "60s"
timeout = "15s"
}
}
service {
name = "${NOMAD_TASK_NAME}-ui"
tags = ["ui"]
port = "ui"
check {
name = "${NOMAD_TASK_NAME}-ui http"
type = "http"
path = "/health"
interval = "60s"
timeout = "15s"
check_restart {
limit = 3
grace = "90s"
ignore_warnings = false
}
}
}
resources {
cpu = 500
memory = 128
network {
mbits = 20
port "http" {
static = 8080
}
port "ui" {
static = 9998
}
port "grpc" {
static = 5160
}
}
}
}
}
}