github / glb-director

GitHub Load Balancer Director and supporting tooling.
Other
2.38k stars 229 forks source link

Enable GLB Healthcheck to announce VIP/Bind status into BGP #92

Open robloxrob opened 4 years ago

robloxrob commented 4 years ago

This pull request adds a new feature to GLB healthcheck. It allows it to locally announce the status of a VIP/bind into BGP using a local instance of GoBGP. It integrates with a locally deployed GoBGP daemon to announce the VIP/Bind into BGP when at least one backend is marked healthy. This allows you to prevent a statically announced route via BIRD to black hole traffic for a GLB instance that is unable to talk to its backends. In the event that all backends are marked either inactive or marked as unhealthy GLB healthcheck will withdraw the route. The feature is configurable (see included documentation) and defaults to off. We have been running this in production for a while and it simplified our integration with BGP. We have been running this for a while in prod, but I have been busy and been unable to issue a pull request.

I needed to change how some of the testing works to get the full suite to run correctly.

Worked with @ravisinghsfbay on correcting parts of the testing. We both work in the same team here at Roblox.

mcarbonneaux commented 4 years ago

it would be very practical. this allows better exploitation and faster bgb convergence.

Slepwin commented 1 year ago

Hi GitHub folks, could you please merge thisPR.

newerdog commented 1 year ago

Hi GitHub folks, could you please merge thisPR.

Withdrawing the route is the best practice used in commercial LB like F5\Netscaller, but also in Google SeeSawV2 project. However, I prefer the method with redistribute kerner routes. It is native way without any config changing

In GObgp is redistribute-route-type-list = ["connect"]

Also i`d recommend setting up BFD to remove routes in a tick when Director goes Down