Activity log for bug #1154179

Date Who What changed Old value New value Message
2013-03-12 16:18:50 Marius B. Kotsbak bug added bug
2013-03-12 16:29:29 Marius B. Kotsbak description I have tried reusing one haproxy instance for serving different services with different virtual hosts (same IP address, all on port 80). What I have tried: * Using bind: haproxy-jenkins: services: | - service_name: node-app_service service_host: "0.0.0.0" service_port: 80 service_options: [balance leastconn, "bind a.virtual.hostname.com:80"] server_options: maxconn 100 - service_name: node-app2_service service_host: "0.0.0.0" service_port: 80 service_options: [balance leastconn, "bind another.virtual.hostname.com:80"] server_options: maxconn 100 does not work (gives "cannot bind socket") because the IP behind the hostname is not bound to the machine. * Using reqiallow: haproxy-jenkins: services: | - service_name: node-app_service service_host: "0.0.0.0" service_port: 80 service_options: [balance leastconn, "reqiallow ^Host:\\ a.virtual.hostname.com$"] server_options: maxconn 100 - service_name: node-app2_service service_host: "0.0.0.0" service_port: 80 service_options: [balance leastconn, "reqiallow ^Host:\\ a.virtual.hostname.com$"] server_options: maxconn 100 also does not work, since all entries must be set to "0.0.0.0" (same as with bind) and the second fail to bind to that address. The proper solution is probably to use frontend and backends with ACL: http://www.techrawr.com/2009/09/18/using-the-acl-in-haproxy-for-load-balancing-named-virtual-hosts/ but it is possible to do with the current configuration options. I have tried reusing one haproxy instance for serving different services with different virtual hosts (same IP address, all on port 80). What I have tried: * Using bind: haproxy-jenkins:     services: |         - service_name: node-app_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "bind a.virtual.hostname.com:80"]           server_options: maxconn 100         - service_name: node-app2_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "bind another.virtual.hostname.com:80"]           server_options: maxconn 100 does not work (gives "cannot bind socket") because the IP behind the hostname is not bound to the machine. * Using reqiallow: haproxy-jenkins:     services: |         - service_name: node-app_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "reqiallow ^Host:\\ a.virtual.hostname.com$"]           server_options: maxconn 100         - service_name: node-app2_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "reqiallow ^Host:\\ a.virtual.hostname.com$"]           server_options: maxconn 100 also does not work, since all entries must be set to "0.0.0.0" (same as with bind) and the second fail to bind to that address. * Use different IP addresses At least with Amazon EC2 this seems hard, as only local addresses are exposed to the machines, and it is not possible to attach multiple IPs except with in virtual private cloud: http://aws.typepad.com/aws/2012/07/multiple-ip-addresses-for-ec2-instances-in-a-virtual-private-cloud.html The proper solution is probably to use frontend and backends with ACL: http://www.techrawr.com/2009/09/18/using-the-acl-in-haproxy-for-load-balancing-named-virtual-hosts/ but it is possible to do with the current configuration options.
2013-03-12 16:41:58 Marius B. Kotsbak description I have tried reusing one haproxy instance for serving different services with different virtual hosts (same IP address, all on port 80). What I have tried: * Using bind: haproxy-jenkins:     services: |         - service_name: node-app_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "bind a.virtual.hostname.com:80"]           server_options: maxconn 100         - service_name: node-app2_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "bind another.virtual.hostname.com:80"]           server_options: maxconn 100 does not work (gives "cannot bind socket") because the IP behind the hostname is not bound to the machine. * Using reqiallow: haproxy-jenkins:     services: |         - service_name: node-app_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "reqiallow ^Host:\\ a.virtual.hostname.com$"]           server_options: maxconn 100         - service_name: node-app2_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "reqiallow ^Host:\\ a.virtual.hostname.com$"]           server_options: maxconn 100 also does not work, since all entries must be set to "0.0.0.0" (same as with bind) and the second fail to bind to that address. * Use different IP addresses At least with Amazon EC2 this seems hard, as only local addresses are exposed to the machines, and it is not possible to attach multiple IPs except with in virtual private cloud: http://aws.typepad.com/aws/2012/07/multiple-ip-addresses-for-ec2-instances-in-a-virtual-private-cloud.html The proper solution is probably to use frontend and backends with ACL: http://www.techrawr.com/2009/09/18/using-the-acl-in-haproxy-for-load-balancing-named-virtual-hosts/ but it is possible to do with the current configuration options. I have tried reusing one haproxy instance for serving different services with different virtual hosts (same IP address, all on port 80). What I have tried: * Using bind: haproxy-jenkins:     services: |         - service_name: node-app_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "bind a.virtual.hostname.com:80"]           server_options: maxconn 100         - service_name: node-app2_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "bind another.virtual.hostname.com:80"]           server_options: maxconn 100 does not work (gives "cannot bind socket") because the IP behind the hostname is not bound to the machine. * Using reqiallow: haproxy-jenkins:     services: |         - service_name: node-app_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "reqiallow ^Host:\\ a.virtual.hostname.com$"]           server_options: maxconn 100         - service_name: node-app2_service           service_host: "0.0.0.0"           service_port: 80           service_options: [balance leastconn, "reqiallow ^Host:\\ a.virtual.hostname.com$"]           server_options: maxconn 100 also does not work, since all entries must be set to "0.0.0.0" (same as with bind) and the second fail to bind to that address. * Use different IP addresses At least with Amazon EC2 this seems hard, as only local addresses are exposed to the machines, and it is not possible to attach multiple IPs except with in virtual private cloud: http://aws.typepad.com/aws/2012/07/multiple-ip-addresses-for-ec2-instances-in-a-virtual-private-cloud.html The proper solution is probably to use frontend and backends with ACL: http://www.techrawr.com/2009/09/18/using-the-acl-in-haproxy-for-load-balancing-named-virtual-hosts/ but it is possible to do with the current configuration options. WORKAROUND: 17:37 < sidnei> mariusko: im using haproxy to proxy different sites, the difference is that we're using apache in front of haproxy (for ssl termination) and apache forwards to haproxy on a specific port 17:37 < sidnei> mariusko: i understand that your use case is different and you want haproxy on port 80 proxying to multiple backends 17:40 < mariusko> sidnei: using vhost templates? 17:40 < sidnei> mariusko: yup
2013-07-08 11:54:02 maarten ectors branch linked lp:charms/haproxy
2014-10-06 15:41:52 Edward Hope-Morley tags openstack
2014-11-27 12:54:29 Johan Ehnberg bug added subscriber Johan Ehnberg
2015-03-03 09:45:08 James Page tags openstack