Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for opentracing #429

Closed
sara4dev opened this issue Jan 29, 2018 · 14 comments
Closed

Support for opentracing #429

sara4dev opened this issue Jan 29, 2018 · 14 comments
Milestone

Comments

@sara4dev
Copy link

Fabio needs to emit the opentracing standard headers, and so it can participate in the distributed tracing.

@magiconair
Copy link
Contributor

magiconair commented Jan 29, 2018 via email

@sara4dev
Copy link
Author

yes, I am planning to work on this.

Here's a quickstart on how to do it in golang. http://opentracing.io/documentation/pages/quick-start#go

@galen0624
Copy link
Collaborator

@magiconair - A team and I have been working on this request. We have a working demo and are in the process of load testing. Would you still be interested in seeing a PR? Our OpenTrace Support currently is for a ZipKin collector. Jaeger could easily be added at a later date.

@magiconair
Copy link
Contributor

@galen0624 of course! This would be quite cool.

@galen0624
Copy link
Collaborator

Sounds good. We should have something ready in the next few days. Load testing today showed about a 1 millisecond of added latency sampling 100% of traffic. (10,000 RPS)

I would like to say we are not developers by trade so the govendor and other git components are a little new to us. I'm not sure how to add each vendor package individually yet.

On a side note we have incorporated BGP into each of the Fabio boxes in order to provide HA. BGP announces the "VIPs" into the underlying network Fabric. If you are interested we can chat further about the details.

@magiconair
Copy link
Contributor

Adding BGP support was on my list. Started working on a go bgp library and had something working but that stalled. I'm curious about your approach.

You can run govendor add +e to add all missing packages and check that in as a single commit as long as the vendored packages are separate from the code.

Looking forward to this :)

@aaronhurt
Copy link
Member

aaronhurt commented Mar 19, 2018

We currently run gobgp as a route reflector and quagga on our load balancers and use anycast BGP for our HA as well. We've been talking internally about linking fabio with the gobgp library or weather it makes more sense to have a generic fabio like service that publishes BGP routes based on Consul data rather than HTTP routes.

On the other hand if you think of fabio as a generic routing table with multiple publishing options (HTTP, HTTPS, TCP, TCP+SNI) maybe BGP is just one more publishing method that could be used with a similar routing table syntax.

We've had alot of discussions on how this would work and would like the solution to be able to not only publish fabio itself but also publish containers for direct access on the LAN.

@galen0624
Copy link
Collaborator

Our setup for HA is to also use Quagga on our Fabio VMs then have the BGPD and Fabio processes dependent on each other through systemD. We announce /32 or host routes into our Spine/Leaf Fabric which allows for ECMP (Equal Cost MultiPath). We have the timers set in BGP to re-converge quickly. This enables us to support A/B data center constructs. We will also have Fabio baked into an Image so we can destroy/recreate new Fabio instances at will.

galen0624 added a commit to galen0624/fabio that referenced this issue Mar 20, 2018
Co-authored-by: Kristina Fischer <[email protected]>
Co-authored-by: Michael Murphy <[email protected]>
Co-authored-by: Nathan West <[email protected]>
Co-authored-by: Austin Hartzheim <[email protected]>
Co-authored-by: Jacob Hansen <[email protected]>
galen0624 added a commit to galen0624/fabio that referenced this issue Mar 20, 2018
Co-authored-by: Kristina Fischer <[email protected]>
Co-authored-by: Michael Murphy <[email protected]>
Co-authored-by: Nathan West <[email protected]>
Co-authored-by: Austin Hartzheim <[email protected]>
Co-authored-by: Jacob Hansen <[email protected]>
galen0624 added a commit to galen0624/fabio that referenced this issue Mar 20, 2018
@aaronhurt
Copy link
Member

aaronhurt commented Mar 20, 2018

To elaborate further we have a pair of upstream Cisco devices that are the authoritative peers that we call service routers. These pair with a set of GoBGP VMs that act as route reflectors for applications participating in anycast BGP advertisements. The load balancers, dns cache, etc. currently run quagga and advertise a /32 route up to the route reflectors. This works very well to provide HA within and across datacenters for our public services. We want to expand this system internally to expose our Docker network in a simpler manner.

Today our Docker hosts are running with a fixed CIDR block carved our of a larger super block. Each host is part of a VXLAN that terminates to a pair of machines acting as the gateway for the superblock. The VXGs (VXLAN Gateways) advertise a route for the superblock upstream and in turn know where to send a request for any particular container because it is aware of the fixed CIDR assigned to each Docker host. We would like to eliminate the VXGs and the need for fixed CIDR blocks per Docker host by having a service on each host that would directly advertise /32 routes for each container up to the route reflectors. I think this is a case fabio could handle and give us a familiar interface for HTTP, TCP and BGP services.

@galen0624
Copy link
Collaborator

@leprechau have you looked at Calico? -- https://www.projectcalico.org/

We are currently investigating how that fits with Containers and routable POD IPs.

@aaronhurt
Copy link
Member

@galen0624 yes, we have looked at Calico and that is what we're currently playing with in the lab. Calico goes far further and is far more complex however than what we actually need for our environment. That being said we are also looking at k8s which again is far more complex than anything we actually need.

@murphymj25
Copy link
Contributor

murphymj25 commented Aug 10, 2018

@leprechau Are you still using gobgp for your route reflectors? We are looking to stand up some route reflectors as well in the near future and gobgp looks like a good option. Just wondering how your experience has been.

magiconair added a commit that referenced this issue Oct 29, 2018
#429 issue - OpenTrace zipKin Support
@magiconair magiconair added this to the 1.5.11 milestone Oct 29, 2018
@magiconair
Copy link
Contributor

Just merged this.

@aaronhurt
Copy link
Member

@leprechau Are you still using gobgp for your route reflectors? We are looking to stand up some route reflectors as well in the near future and gobgp looks like a good option. Just wondering how your experience has been.

@murphymj25 sorry for the late reply. Yes we are still using gobgp in combination with fabio and aardvark (an application we wrote) to expose our containers on a weave network via bgp. Feel free to reach out via email if you want to discuss further.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants