Skip to content

Instantly share code, notes, and snippets.

@tempusfrangit
Last active November 29, 2015 15:04
Show Gist options
  • Save tempusfrangit/c9b73fcd2b76d3a95b14 to your computer and use it in GitHub Desktop.
Save tempusfrangit/c9b73fcd2b76d3a95b14 to your computer and use it in GitHub Desktop.
How OpenStack's Catalog should *really* look.
+-------------+----------------+-----------------------------------------------------------------------------------+
| Name | Type | Endpoints |
+-------------+----------------+-----------------------------------------------------------------------------------+
| nova | compute | RegionOne |
| | | publicURL: http://192.168.1.181/compute/v2.1/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | internalURL: http://192.168.1.181/compute/v2.1/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | adminURL: http://192.168.1.181/compute/v2.1/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | |
| cinderv2 | volumev2 | RegionOne |
| | | publicURL: http://192.168.1.181/volume/v2/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | internalURL: http://192.168.1.181/volume/v2/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | adminURL: http://192.168.1.181/volume/v2/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | |
| glance | image | RegionOne |
| | | publicURL: http://192.168.1.181/image |
| | | internalURL: http://192.168.1.181/image |
| | | adminURL: http://192.168.1.181/image |
| | | |
| nova_legacy | compute_legacy | RegionOne |
| | | publicURL: http://192.168.1.181/compute/v2/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | internalURL: http://192.168.1.181/compute/v2/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | adminURL: http://192.168.1.181/compute/v2/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | |
| cinder | volume | RegionOne |
| | | publicURL: http://192.168.1.181/volume/v1/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | internalURL: http://192.168.1.181/volume/v1/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | adminURL: http://192.168.1.181/volume/v1/a9d75052b9a54a26a5feec6a20fbcc3b |
| | | |
| ec2 | ec2 | RegionOne |
| | | publicURL: http://192.168.1.181:8773/ |
| | | internalURL: http://192.168.1.181:8773/ |
| | | adminURL: http://192.168.1.181:8773/ |
| | | |
| keystone | identity | RegionOne |
| | | publicURL: http://192.168.1.181/identity/v2.0 |
| | | internalURL: http://192.168.1.181/identity/v2.0 |
| | | adminURL: http://192.168.1.181/identity/v2.0 |
| | | |
+-------------+----------------+-----------------------------------------------------------------------------------+
Notice that the services (mostly) are mounted under the API site's URI, and on port 80. This is how it should work.
This is gratuitous abuse of some HAProxy Magic, but I can access Horizon and perform many tasks. It isn't hard,
it is less than an afternoon's work.
Yes. openstackclient works with this as well! :)
A lot of the servers have configurations that point to the specific other services they rely on.
In this case once those are all updated, nova will no longer be able to access glance (since it does not
handle the URI path-prefix that we have added). Nova must be patched with https://review.openstack.org/#/c/251138/
to be able to get images again.
vagrant@vagrant-ubuntu-trusty-64:~$ cat /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend api_site
bind 192.168.1.181:80
mode http
option http-server-close
acl url_keystone path_beg /identity
acl url_nova path_beg /compute
acl url_glance path_beg /image
acl url_horizon path_beg /dashboard
acl url_cinder path_beg /volume
use_backend keystone if url_keystone
use_backend nova if url_nova
use_backend glance if url_glance
use_backend horizon if url_horizon
use_backend cinder if url_cinder
backend keystone
reqrep ^([^\ :]*)\ /identity/(.*) \1\ /\2
server keystone-1 localhost:35357
backend nova
reqrep ^([^\ :]*)\ /compute/(.*) \1\ /\2
server nova-1 localhost:8774
backend glance
reqrep ^([^\ :]*)\ /image/(.*) \1\ /\2
server glance-1 localhost:9292
backend horizon
server horizon-1 localhost:80
backend cinder
reqrep ^([^\ :]*)\ /volume/(.*) \1\ /\2
server cinder-1 localhost:8776
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment