Date
1 - 5 of 5
feedback request: extracting a common route-registrar job
Amit Kumar Gupta
Hi all,
Several components within cf-release, as well as many jobs in different releases, register a route with the gorouter: - *doppler* registers the "doppler" and "loggregator" routes - the *hm9000* API server registers the "hm9000" route - *UAA* registers "uaa", "*.uaa", "login", and "*.login" routes - *CC* registers the "api" route - Many *service brokers* also register a route. All these components register their routes in different ways. They also all use the existing NATS flow, and will all need to switch their implementations to use the routing API once that goes live and we start to phase out NATS. We have been working on extracting a route-registrar job which can be colocated with other jobs and register routes on their behalf. Currently it naively just always advertises the configured routes, and relies on the gorouter's behaviour around knowing not to route requests to addresses that aren't currently up. One might require more sophisticated logic than this, however. For example, a server may be "up" and theoretically capable of handling requests, but not actually ready yet. Perhaps the router-registrar should have some contract with its colocated jobs where those jobs can define a health check script, and the route-registrar will only update the route registration if the check succeeds. Another requirement may exist around shutdown behaviour. Jobs may only want to stop having its routes registered at a certain point in its drain lifecycle. *We would like feedback* from anyone maintaining a job or release that does some sort of route registration to gather requirements that would be desired of a generic route-registration component. Thanks, Amit, CF OSS Release Integration team |
|
Zach Robinson
i think it's a great idea, but I would wait until the routing api goes live
toggle quoted message
Show quoted text
(waiting on consul stability) and use that tooling to create something re-usable. I think the job for that could have some sort of health checky thing where it would run a script with an agreed upon name to decide when to register/unregister. -Zach On Tue, Sep 8, 2015 at 12:53 PM, Amit Gupta <agupta(a)pivotal.io> wrote:
Hi all, |
|
Lyle Franklin
The mysql and riak services register routes with this guy:
toggle quoted message
Show quoted text
https://github.com/cloudfoundry-incubator/route-registrar. At a glance, the option to run a healthcheck script to determine whether the service was healthy would be our only real requirement in addition to the routing API interaction. We'd love to be guinea pigs for any extracted library. - Lyle On Tue, Sep 8, 2015 at 1:38 PM, Zach Robinson <zrobinson(a)pivotal.io> wrote:
i think it's a great idea, but I would wait until the routing api goes |
|
Amit Kumar Gupta
Hey all,
toggle quoted message
Show quoted text
The router already has some health check behaviour -- you can naively register routes with it and it's smart about knowing whether to actually route traffic or not. I'd like to understand what the specific use cases are that would require a route-registration job to support additional custom health check logic provided by the various colocated jobs. Here's the set of things that are being done/need to be done for this track of work: 1. extract route-registration process from UAA job in cf-release into its own job in cf-release (note that the new uaa-release doesn't have this process) [story done, needs acceptance] 2. use this route-registration job colocated with UAA in the cf manifests. [story done, needs acceptance] 3. use this route-registration job colocated with CC, HM9k, and doppler in the cf manifests. [stories in flight] 4. discover additional requirements for a generic route-registration job to be useful [this email thread] 5. implement features in route-registration job to satisfy requirements 6. wait for consul to be declared stable, and enable the routing-api as a default part of cf deployments [next couple final versions of cf-release will validate consul] 7. all things doing route-registration should use routing-api 8. extract route-registration job out of cf-release (and put it where?) in order to make it usable by other things like Gemfire, MySQL, Riak, etc. 9. discover more additional requirements for a generic route-registration job to be useful 10. implement more features in route-registration job to satisfy requirements 11. implement more features in routing-api to satisfy requirements This isn't necessarily an ordered list, however we want to extract and start using the route-registration stuff early to discover requirements, and whether it's even a feasible idea, rather than waiting on consul and routing-api to validate it. A nice additional consequence of doing this extraction early is that once we want to switch over to routing-api, it only needs to be done in one place. Jens, Here is a story in the Routing backlog to enable the routing-api to support sticky-session route registrations: https://www.pivotaltracker.com/story/show/100327146 Best, Amit On Tue, Sep 8, 2015 at 3:43 PM, Lyle Franklin <lfranklin(a)pivotal.io> wrote:
The mysql and riak services register routes with this guy: |
|
Dieu Cao <dcao@...>
Agree with Zach, that for the CAPI team we would prefer to just wait for
toggle quoted message
Show quoted text
the routing-api to be ready before prioritizing work to change the way CC registers its routes. Dieu On Tuesday, September 8, 2015, Amit Gupta <agupta(a)pivotal.io> wrote:
Hey all, |
|