Фабио случайным образом отключает соединение gRP C - PullRequest
0 голосов
/ 30 марта 2020

У нас есть служба 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
          }
        }
      }
    }
  }
}
...