fabiolb / fabio

Consul Load-Balancing made simple
https://fabiolb.net
MIT License
7.27k stars 616 forks source link

UDP support coming? #394

Open pjebs opened 6 years ago

magiconair commented 6 years ago

Yeah, I had thought about this a while ago. Shouldn't be too difficult. What's your use case?

pjebs commented 6 years ago

I have a program in a docker container that listens to udp

magiconair commented 6 years ago

Any special requirements in terms of performance and throughput?

pjebs commented 6 years ago

It would be nice if it could match nginx

magiconair commented 6 years ago

What does that mean? Can you provide numbers?

pjebs commented 6 years ago

Just a joke. As fast as possible is nice.

pjebs commented 6 years ago

Not expecting nginx performance in immediate future

kelvinji2009 commented 6 years ago

UDP proxy support is good for IoT. :)

magiconair commented 6 years ago

Indeed

tomwganem commented 6 years ago

+1

discobean commented 6 years ago

It might come or it might not :P

magiconair commented 6 years ago

I'll do it. Can't be that hard, can it? (famous last words)

Verdoso commented 6 years ago

As for use cases, I just came up with one. I'm planning on sending logs from my apps to logstash using GELF, and it uses UDP. Having Fabio in front of the Logstash cluster so I don't lose the logs while doing some maintentance or due to one node going down would be nice đź‘Ť

LordFPL commented 6 years ago

For information, i have a similary use case... and found this : http://gobetween.io/ It's just work... stable since one month... but not very active project.

Verdoso commented 6 years ago

Good to know, LordFPL. I'd rather not add another element to the mix, but if I have to, it's nice to see there are alternatives. But yeah, it doesn't seem to be very active, so I'll keep an eye on it just in case.

But if we had this and the GELF logger (PR 246), Fabio would be sending its logs through itself, hehehe.

magiconair commented 6 years ago

@Verdoso Since UDP is a connectionless protocol fabio wouldn't buffer the data since it wouldn't know when data didn't get to the upstream server. I can have a look at the GELF logger in #246 and see if that is still ready to be merged.

Verdoso commented 6 years ago

Yes, I guess the balancing part is just using the consul stated to decide if one server should be sent or not packets. UDP being as it is, I doubt other proxies are doing more than that. That could be enough. I'm checking also if going the tcp route would be performant enough.

pjebs commented 6 years ago

I would like to respectfully ask if there was any progress on this issue (L4 UDP)?

magiconair commented 6 years ago

I’m still in the middle of moving my family to another country and meeting a deadline. If someone from the community wants to jump in then this is a good opportunity. This should not be too difficult.

— Frank Schröder

On 12. Jul 2018, at 06:30, pj notifications@github.com wrote:

I would like to respectfully ask if there was any progress on this issue (L4 UDP)?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

joshuaclausen commented 5 years ago

This would be a really interesting solution for video game servers, especially with the ACLs we can set on remote IPs. Being able to update in realtime which remote IPs should be permitted to even talk into a gameserver instance UDP port would be useful. I'd seriously consider running all gameserver traffic through a Fabio instance running locally on a host.

Another use case is sending telemetry to statsd relays/servers (over UDP 8125, for instance). Being able to provide high availability for those would make me sleep better at night ;)

braunsonm commented 5 years ago

Hey @magiconair was this still something you were interested in doing? I would really like this feature. Perhaps if you still don't have time I might find some time to work on it. I don't have a lot of experience with Go but I could try if you could point me in the right direction. Thank you :)

nmaludy commented 4 years ago

+1 would like to load balance UDP for Syslog, DNS, Kerberos.

sbrl commented 4 years ago

Another use-case: I'm hoping to migrate a Minetest Server to my new Nomad + Consul Raspberry Pi cluster, which uses UDP.

steveww commented 4 years ago

+1 for UDP support

nathanpalmer commented 3 years ago

I just ran into this issue when I encountered my first service that uses UDP. My use-case was a Terraria server, which needs port 7777 on both TCP and UDP. The initial connection seems to be made using TCP, but then it stops there, unless I'm not routing it through fabio.

AdrienneCohea commented 2 years ago

Quake

mier85 commented 2 years ago

If nobody is working on this yet, I'd like to give it a try

sbrl commented 2 years ago

I doubt anyone's working on it at the moment - it would be awesome if you could give it a go @mier85!

jeanphilipperuijs commented 1 year ago

Would like UDP support for Consul + AlertManager mesh.

Forked...need time. @mier85 is maybe faster?

CRASH-Tech commented 9 months ago

Any news?

sbrl commented 9 months ago

@CRASH-Tech I think the answer is that it won't be happening unless someone steps up and implements it

You don't have to ask - I'd just work on it. If you finish the implementation and make a PR and that PR goes ignored for more than a week or two, I'd fork