Skip to content

Can Fabio to prefer one ethernet interface for proxy_addr? #802

@protocol6

Description

@protocol6

Hi,

I'm running a cluster where the worker nodes run Nomad and Consul.
Each node (on Digitalocean) has a public IP on eth0 and a private IP on eth1.
I schedule fabio onto this cluster via nomad jobspec like so,

  group "fabio" {
      task "fabio" {
      driver = "exec"
      config {
        command = "fabio-1.5.14-go1.15-linux_amd64"
        args = ["-proxy.addr", ":9999", "-ui.addr", ":9998"]
      }

Unfortunately the above stanza results in fabio proxy_addr binding to my public IPs and not the private ones, which results in an⋅
empty/non-working routing table on private:9998/routes.⋅

Based on issue #653 I tried the following argument format, but it causes the allocated job to fail.

args = ["-proxy.addr", "{{ GetInterfaceIP 'eth1' }}:9999", "-ui.addr", "{{ GetInterfaceIP 'eth1' }}:9998"]

Based on issue #283 I tried the following, but these too causes the fabio job to fail and/or to violate jobspec syntax..

args = ["-proxy.addr", "eth1:9999", "-ui.addr", "eth1:9998"]

and

`args = ["-proxy.addr", "${ifconfig eth1 | grep 'inet' | awk '{print $2}' | cut -d: -f2}:9999", "-ui.addr", "${ifconfig eth1 | grep 'inet' | awk '{print

Question: is there a working mechanism in Fabio that lets you prefer one ethernet interface over another (eth1 for me)
and which is compatible with job submission via Nomad jobspec?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions