User:Yuvipanda/Dynamic http routing
Appearance
Dynamic HTTP routing is the ability to route incoming HTTP traffic for various hostnames to arbitrary ports on arbitrary hosts. This is primarily intended for labs.
Use Cases
The primary use cases are
- Replacement for instanceproxy!
- Let tools on the Grid Engine serve the web
Progress
- Acquire an instance, with a public IP
Done (Instance proxy-project on project project-proxy) - Setup puppet on it
Done - Install Redis on it (via puppet)
Done - Install latest and greatest nginx
Done - Install latest and greatest lua modules for nginx
Done - Install lua-nginx modules for accessing redis
Done - Make nginx route to different hosts/ports (upstreams) based on data from redis
Done - Add a wikitech interface for managing this service
- Create a new special page in OpenStackManager called Special:LoadBalancer
- Manage tenancy via projects and roles via OpenStackNovaUser::inRole and OpenStackNovaUser::inProject functions; see other OpenStackManager special pages for an example
- Make calls directly to redis, managing per-project service information elsewhere in redis
- Eventually replace direct redis access with API calls, passing keystone tokens
- Create a basic API with keystone support
- Using OAuth support in keystone (lands in havana) allow tools service to modify config for tools services