by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Pitangueiras
@Pitangueiras
Sorry, I mean [servers.sample.discovery], because in my use case, it is kind = "static".
Lucas Vargas Noronha
@dracoboros
Hello, I am trying to install GB from source in my macos, however when I ran "make" it complains about depencies:
go: github.com/yyyar/gobetween@v0.0.0-00010101000000-000000000000 requires
        github.com/flosch/pongo2@v0.0.0-20181225140029-79872a7b2769 requires
        github.com/go-check/check@v1.0.0-20180628173108-788fd7840127: invalid pseudo-version: major version without preceding tag must be v0, not v1
how can I solve this?
Lucas Vargas Noronha
@dracoboros
I am using go 1.13.4
Lucas Vargas Noronha
@dracoboros
The problem is version 1.13. Managed to successfully install with 1.12.4
Jobin Joseph
@jobinparayil_twitter
@Hi all,
Currently we are using HA proxy as load balancer and planing to migrating to gobetween. From the documentation page i could see that gobetween support proxy Mode.Will gobetween does like HA proxy does SSL Pass through where no encryption/decryption in LB side . We dont want the load balancer to do the encryption/decryption of data again, instead of that we want the data to be passed to the backend server without looking into anything.Will it support as pure TCP load balancer.
Thanks.
Shantanu Gadgil
@shantanugadgil
Gobetween is a L4 ONLY load balancer for now.
So yes, it does SSL pass through, though I have forgotten if PROXY v2 is supported by GB. I definitely know that PROXY v1 is supported
Btw, could you elaborate on your existing HAProxy config , so as to know which all options of HAProxy you are currently using. (Be sure to remove sensitive information from the config)
Jobin Joseph
@jobinparayil_twitter
hi Shanthanu,
Thanks for the reply. im using HA proxy , proxy relay mode
bind *:443
mode tcp
Jobin Joseph
@jobinparayil_twitter
hi Shanthanu,
Also similar to HA proxy what is the sample config for SSL passthrough in GB,Is it the TLS proxy config in the Toml config file.
Thanks.
Jobin Joseph
@jobinparayil_twitter
Hi Shanthanu,
One more query may i know TLS proxy and TLS pass through are same in GB.
Rob Alfonso
@ralfonso-directnic
Hello, I keep getting "dial tcp X.X.X.X:80: i/o timeout" in my log every 6 hours or so on my gobetween instance and then it stops responding until I restart it. I can't seem to find any issue on github, does anyone know what is causing this or what I can do to mitigate?
shahidkratin
@shahidkratin
Hello,
can I achieve the HA of redis using gobetween
?
Hello,
shahidkratin
@shahidkratin

Following is the Scenario I need to achieve:
A Redis master-slave replication setup with sentinel which will be load balanced by gobetween where gobetween will direct all write hits to the master.

This is possible with HAProxy as it checks which node is master internally.
link-> https://karlstoney.com/2015/07/23/redis-sentinel-behind-haproxy/

Can gobetween Do the same?

Natalio
@NcGatti_twitter
Hi, good morning for everyone. I am testing gobetween as a UDP reverse proxy, for load balancing and failover. The load balancing is working good, but it isn't doing failover. I added a custom healthcheck, I can see that it is marking a backend as failed, but it doesn't re-routing the requests
Can I share with you my config and see what am I missing?
Ronny Trommer
@indigo423

Hello everyone, I try to get a minimal gobetween UDP sample up and running. I get the error message:

udp-lb    | 2020-02-09 19:30:35 [FATAL] (manager): udp protocol requires to specify at least one of (client|backend)_idle_timeout, udp.max_requests, udp.max_responses

I ran out of ideas why this happens. This here is my configuration file and the docker-compose.yml. Any hints would be appreciated.

Nick Doikov
@nickdoikov
try to move defaults to the server section , also you still need
udp.max_requests=
udp.max_responses=
Ronny Trommer
@indigo423

@nickdoikov Got it to work, thanks a lot for your help. My next goal is to test the transparent transport. I moved to the latest docker image cause the docs mention it is available in 0.8.0+. Here is my configuration file. There is a hint in the docs which means:

if true - work in transparent mode, when forwarded udp packets have client source address (requires additional host configuration) (since 0.8.0)

Anyone with some hints where I can read which additional host configurations are required? Thank you in advance

jrAtAustin
@jrAtAustin
When I enable health check I get the following error:
gobetween v0.7.0
2020-02-10 09:55:02 [INFO ] (manager): Initializing...
2020-02-10 09:55:02 [INFO ] (api): Starting up API
2020-02-10 09:55:02 [INFO ] (server): Creating 'sample': 0.0.0.0:3000 weight static none
2020-02-10 09:55:02 [INFO ] (metrics): Metrics disabled
2020-02-10 09:55:02 [INFO ] (scheduler): Starting scheduler sample
2020-02-10 09:55:02 [INFO ] (api): Starting HTTP server :8888
2020-02-10 09:55:02 [FATAL] (manager): No bind specified
Here is my health check configuration:

-------------------- healthchecks -------------------------

#
[servers.default.healthcheck]
kind = "exec"
interval = "2s"
timeout = "1s"
exec_command = "/Users/me/bin/healthcheck.sh"
exec_expected_positive_output = "1"
exec_expected_negative_output = "0"
fails = 2
passes = 2
Here is the script:

!/bin/bash

nc -z $1 $2

if [ $? -eq 0 ]
then
echo -n 1 ;
else
echo -n 0 ;
fi

When I comment out the health check setting go-between works. Any ideas what's wrong?
mw-0
@mw-0
@jrAtAustin pipe nc to null as it doesn't like anything returned from nc
Is there any way to bind to Nic? I have been testing and using a floating vip the service will not start if the ip in my config is not on that host currently. I cannot bind to * as there are other services there
Mark Davidson
@MDavidson01

Hi everyone I just started using Gobetween I have two webservers running on port 91 and 92 on the same server i use roundrobin for the servers so that it will evenly distribute the traffic between the two webservers but i am having an issue. when you login to the site and then try to go to a different page it will sometimes move you to the next server in the list my config file is the following :[servers.website]
protocal = "tcp"
bind = "0.0.0.0:90"
balance = "roundrobin"

maxconnections = 10000
client_idle_timeout = "40m"
backend_idle_timeout = "40m"
backend_connection_timeout = "2m"

[servers.website.discovery]
kind = "static"
static_list = [
"127.0.0.1:91",
"127.0.0.1:92"
]

have i got something wrong
Mark Davidson
@MDavidson01
sorry made a mistake with the copy of the paste the config i am using is

[servers.website]
protocal = "tcp"
bind = "0.0.0.0:90"
balance = "roundrobin"

maxconnections = 10000
client_idle_timeout = "40m"
backend_idle_timeout = "40m"
backend_connection_timeout = "2m"

[servers.website.discovery]
kind = "static"
static_list = [
"127.0.0.1:91 weight=1",
"127.0.0.1:92 weight=1"
]

Yaroslav Pogrebnyak
@yyyar
Hi @MDavidson01 this is how roundrobin works, it selects next backend in a list for each new connection.
If you need to select always certain backend for the client, you can use balance = "iphash" or "iphash1"
Mark Davidson
@MDavidson01
Tried iphash still same issue will try iphash1 tomorrow with users and see if they complain
David W Purser
@dwpurser
I am trying to setup static routes and my connections via HTTPS 443 are working correctly, however for HTTP 80 I am getting "No matching sni [] found" however I know I am matching file below for mpm088.

[servers]

[servers.default]
protocol = "tcp"

bind = "0.0.0.0:3000"

bind = "0.0.0.0:443"

[servers.default.discovery]
kind = "static"
static_list = [
"192.168.198.10:8060 sni=sx10.mydomain.tld",
"192.168.198.11:443 sni=es011.mydomain.tld",
"192.168.198.17:1880 sni=nodered.mydomain.tld",
"192.168.198.17:18084 sni=emqx.mydomain.tld",
"192.168.198.28:443 sni=se8000.mydomain.tld",
"192.168.198.85:443 sni=as085.mydomain.tld",
"192.168.198.86:443 sni=as086.mydomain.tld",
"192.168.198.87:443 sni=as087.mydomain.tld",
"192.168.198.88:443 sni=j8000.mydomain.tld"
]

[servers.default2]
protocol = "tcp"
bind = "0.0.0.0:80"

[servers.default2.discovery]
kind = "static"
static_list = [
"192.168.198.79:80 sni=basrtp.mydomain.tld",
"192.168.198.88:80 sni=mpm088.mydomain.tld"
]

so # is interpreted as bold, funny.
Illarion Kovalchuk
@illarion
Sni depends on "hostname" field, being sent by TLS client, during TLS handshake
cleints connecting to HTTP 80 are obvously not using TLS, so that there's no room for SNI
David W Purser
@dwpurser
so how do you purpose best config to direct traffic to the 2 servers listed above for HTTP?
image.png
Yaroslav Pogrebnyak
@yyyar
@dwpurser Just remove "sni=" tag in discovery that is used in your HTTP proxy server:
[servers.default2]
protocol = "tcp"
bind = "0.0.0.0:80"

[servers.default2.discovery]
kind = "static"
static_list = [
"192.168.198.79:80",
"192.168.198.88:80"
]
David W Purser
@dwpurser
These are completely different devices, how can I configure to proxy the one I want to access? Should I setup Acme Configuration to accept the connection with SNI and proxy appropriate HTTP connection to backend server?
sedov-e
@sedov-e
Hello! Is it possible to send info about request ip address through gobetween to backend service? I saw discussion about implementation adding header in request (X-Forwarded-For). It was in experimental branch. Has it been merged in master?