That is my requirement !!!. i'm using the same IP address for both hosts, and need to do the load-balancing between two servers. thats what i wanted to know, Actually i'm playing with different varnish configs :) on my virtual box., thought to give this config a try....but that didnt work. it is working perfectly with different IP's, or IP based Vhosts. Thanks Thierry for the response. cheers, Tharanga
On Fri, Aug 30, 2013 at 10:46 PM, MAGNIEN, Thierry <[email protected]>wrote: > Hi, > > I think I understood the point : > - you have 2 backends hosted under the same IP address : www.backend1.comand > www.backend2.com > - your varnish server gets requests (for example) for www.frontend.com > - you want requests to be load-balanced between your 2 backends BUT this > would need the bereq.host to be rewritten to either www.backend1.com or > www.backend2.com > - BUT you can't do this in your VCL because you don't know which backend > will be selected. > > In fact, this would need the director to rewrite the host header once the > real backend has been selected, which I don't think is possible. > > Anyway, I still wonder why the hell you need varnish for this, where a > HAProxy would certainly do the trick ;-) > > Regards, > Thierry > > > De : [email protected][mailto: > [email protected]] De la > part de Per Buer > Envoyé : vendredi 30 août 2013 13:36 > À : Tharanga Abeyseela > Cc : Varnish misc > Objet : Re: Varnish round-robin loadbalancing with Virtualhost (Namebased) > > Hi Tharanga, > > You seem not to understand. Varnish will just pass the host header in the > request to the backend you specify. Looking at the VCL you provided you put > both the backends into one director. This is probably not what you want to > do. > > Try removing the director. Name the directors xxx and yyy and have the VCL > look like. > > sub vcl_recv { > if (req.http.host ~ "xxx.com") { > req.backend = xxx; > } else if (.. > > } > Also the next bit doesn't make sense: > if (req.request) > { > return(pass); > } > > } > > On Fri, Aug 30, 2013 at 10:42 AM, Tharanga Abeyseela < > [email protected]> wrote: > Hi, > > Actually i tried that link, still it is not working. it should work for a > ip based virtual host, but namebased virtual host is not working. > becuase main request coming to varnish/80 and varnish should redirect the > traffic to the backend server based on my round-robin director. when you > resolve dns for those two hosts (xxx.com and yyy.com) it reuturns the > same IP. that is 192.168.0.100. But there should be a way to send the > host-header to apache. Not sure how it works here. But when i use different > server (192,168.0.200/ zzz.com) it works without any issue, it roundrobin > the traffic. This is an issue with namebased virtualhost. > varnish recevie the traffic (cluster.com is my varnish server), then it > use it vcl to redirect based on my round-robin setting. but how it can send > the traffic to the correct virtualhost. because it gets only the same IP > address from the DNS. I managed to change the default behaviour by > forcefully setting the host-header as follows to my other > virtualhost(yyy..com) > set.req.host="yyy.com" ; > then all request went to yyy.com instead of xxx.com. but what i want is > a round-robin fashio...to send traffic. first req to xxx.com/ 2nd req to > yyy.com and so on.. > > I was trying to find some resourses on the net, stackoverflow etc..but no > luck yet. > > Thanks again for your help > Cheers, > Tharanga > > On Fri, Aug 30, 2013 at 5:05 PM, Per Buer <[email protected]> > wrote: > Hi Tharanga, > > You seem to be a bit confused about how the directors and backends work in > Varnish. Please read this: > > > https://www.varnish-cache.org/docs/trunk/users-guide/vcl-backends.html#backends-and-virtual-hosts-in-varnish > > Note that the .host property of the backend has NOTHING to do with the > virtual host. > > On Fri, Aug 30, 2013 at 2:02 AM, Tharanga Abeyseela < > [email protected]> wrote: > Hi Per, > Thanks for the reply. Actually my set up looks like this. > > cluster.com - 192.168.0.200 (varnish/port 80) > xxx.com - 192.168.0.100 (apache,namebased vhost/8080 - backendname - > website) > yyy.com - 192.168.0.100 (apache,namebased vhost/8080 -backendname - api) > cluster.com is the varnish server and front-end connections coming to > this and rewrite to other defined back-ends (round-robin based balancing) > > > > backend website { > .host = "xxx.com"; > .port = "8080"; > > } > backend api { > .host = "yyy.com"; > .port = "8080"; > > } > > director clust round-robin { > { .backend = api; } > { .backend = website; } > > } > > sub vcl_recv { > set req.backend = clust; > if (req.request) > { > return(pass); > } > > } > > when i hit the cluster.com , it is always going to xxx.com, but what i > need to do is first request go to xxx.com second request yyy.com and so > on...when i add another server (different host/different IP say > 192.168.0.111/zzz.com, and a different backend) , it goes like this > first request - xxx.com > second request - xxxx.com > third request - zzz.com > > but i can change the default behavior by setting up set req.host = yyy.comand > then it will goes to > first request - yyy.com > second request - yyy.com > third request - zzz.com > this is something to do with the host-header forwarding to the correct > back-end. how should i add that functionality to the vcl_recv ? > appreciate your help on this, this is working perfectly with other servers > (different servers, not with namebased vhosts) > cheers, > Tharanga > > > > > > > > > > > > > On Thu, Aug 29, 2013 at 11:58 PM, Per Buer <[email protected]> > wrote: > Hi mate, > > On Thu, Aug 29, 2013 at 3:17 PM, Tharanga Abeyseela < > [email protected]> wrote: > (..) > > But how should i send host-headers to varnish to redirect to the correct > server, This is always going to xxx.com. > > You don't. :-) > > You need to dispatch the request to the right backend in vcl_recv and have > the backend handle that host. You could start rewriting the host in > vcl_recv, but I would advise against it. > > So, if you have two vhosts handled by "website" you just set that as the > backend in vcl_recv. > > -- > > Per Buer > CTO | Varnish Software AS > Phone: +47 958 39 117 | Skype: per.buer > We Make Websites Fly! > > Winner of the Red Herring Top 100 Europe Award 2013 > > > > > > > > -- > > Per Buer > CTO | Varnish Software AS > Phone: +47 958 39 117 | Skype: per.buer > We Make Websites Fly! > > Winner of the Red Herring Top 100 Europe Award 2013 > > > > > > > > -- > > Per Buer > CTO | Varnish Software AS > Phone: +47 958 39 117 | Skype: per.buer > We Make Websites Fly! > > Winner of the Red Herring Top 100 Europe Award 2013 > > > >
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
