<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
> <span style="font-family: "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 12px; display: inline !important; background-color: rgb(255, 255, 255);" class="ContentPasted0">Shouldn't
 your DNS entries be clean? ;-)</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<span style="font-family: "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 12px; display: inline !important; background-color: rgb(255, 255, 255);" class="ContentPasted0"><br>
</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<span style="font-family: "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 12px; display: inline !important; background-color: rgb(255, 255, 255);" class="ContentPasted0">Preferably,
 but I blame Microsoft here <span id="🙂">🙂</span></span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<span style="font-family: "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 12px; display: inline !important; background-color: rgb(255, 255, 255);" class="ContentPasted0"><span><br>
</span></span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<span style="font-family: "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 12px; display: inline !important; background-color: rgb(255, 255, 255);" class="ContentPasted0"><span>The
 problem went away by itself when I tried starting again like half an hour later or so, so I guess it was a temporary glitch in the matrix.</span></span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<span style="font-family: "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 12px; display: inline !important; background-color: rgb(255, 255, 255);" class="ContentPasted0"><span><br>
</span></span></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<font face="Segoe UI Web (West European), Segoe UI, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif"><span style="font-size: 12px;">As far as I understand it, the IPs of these machines only change if they are deleted and created again.
 We do it occasionally in test/staging, and there we can live with Varnish needing to be restarted. In production we don't really delete them once they are properly setup, unless there is some major problem and then a restart of the load balanced varnish servers
 should not be a concern.</span></font></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<font face="Segoe UI Web (West European), Segoe UI, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif"><span style="font-size: 12px;"><br>
</span></font></div>
<div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<font face="Segoe UI Web (West European), Segoe UI, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif"><span style="font-size: 12px;">Thanks for your vmod suggestions! I will check them out. The </span></font><span style="font-size: 12px;">dynamic
 one seems like the only one that supports community edition LTS 6.0. The documentation seems a bit lacking (no full VCL example), but I guess I could use their test cases as examples.</span></div>
<div id="appendonsend"></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size: 11pt; color: rgb(0, 0, 0);"><b>From:</b> Guillaume Quintard <guillaume.quintard@gmail.com><br>
<b>Sent:</b> Wednesday, April 19, 2023 4:42 PM<br>
<b>To:</b> Batanun B <batanun@hotmail.com><br>
<b>Cc:</b> varnish-misc@varnish-cache.org <varnish-misc@varnish-cache.org><br>
<b>Subject:</b> Re: Varnish won't start because backend host resolves to too many addresses, but they are all identical IPs</font>
<div> </div>
</div>
<div>
<div dir="ltr">
<div>The fact the IPs are identical is weird, but I wouldn't be surprised if the dns entry actually contained 3 identical IPs.</div>
<div><br>
</div>
<div>> Shouldn't Varnish be able to figure out that in that case it can just choose any one and it will work as expected?</div>
<div class="elementToProof"><br>
</div>
<div class="elementToProof">Shouldn't your DNS entries be clean? ;-)</div>
<div><br>
</div>
<div>Honestly, if the IP(s) behind the service name is liable to change, you shouldn't use a dynamic backend because Varnish resolves the IP when the VCL is loaded, so if the IP changes behind your back, Varnish won't follow it, and you'll be screwed.</div>
<div>Instead, you should use dynamic backends, of which there are a handful:</div>
<div>- <a href="https://github.com/nigoroll/libvmod-dynamic" data-auth="NotApplicable">
dynamic</a>, by UPLEX: it's been around for ages, it's battle-tested, and it's included in the
<a href="https://hub.docker.com/_/varnish" data-auth="NotApplicable">oficial Varnish Docker image</a><br>
</div>
<div>- <a href="https://docs.varnish-software.com/varnish-enterprise/vmods/udo/#subscribe" data-auth="NotApplicable">
udo+activedns</a>, by Varnish Software: the design is slightly different and allows you to specify pretty much any load-balancing policy you might need. You'll need a subscription but you'll get excellent support (disclaimer, I'm an ex employee)</div>
<div>- <a href="https://github.com/gquintard/vmod_reqwest#backend-https-following-up-to-5-redirect-hops-and-brotli-auto-decompression" data-auth="NotApplicable">
reqwest</a>, by yours truly: the interface focuses on providing a simple experience and a few bells and whistles (HTTPS, HTTP2, brotli, following redirects)<br>
</div>
<div><br>
</div>
<div>As you can see, the static backend's reluctance to fully handle DNS has been a fertile ground for vmods :-)<br>
</div>
<div><br>
</div>
<div>-- <br>
</div>
<div>
<div>
<div dir="ltr" class="x_gmail_signature" data-smartmail="gmail_signature">
<div dir="ltr">
<div>Guillaume Quintard<br>
</div>
</div>
</div>
</div>
<br>
</div>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Wed, Apr 19, 2023 at 1:49 AM Batanun B <<a href="mailto:batanun@hotmail.com" data-auth="NotApplicable">batanun@hotmail.com</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div class="x_msg1361981827130200355">
<div dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
All of the sudden Varnish fails to start in my development environment, and gives me the following error message:</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Message from VCC-compiler:
<div>Backend host "redacted-hostname": resolves to too many addresses.</div>
<div>Only one IPv4 and one IPv6 are allowed.</div>
<div>Please specify which exact address you want to use, we found all of these:</div>
<div>     555.123.123.3:80</div>
<div>     555.123.123.3:80</div>
     555.123.123.3:80<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
I have changed the hostname and the IP above to not expose our server, but all three IP numbers are 100% identical. Shouldn't Varnish be able to figure out that in that case it can just choose any one and it will work as expected? It really should remove duplicates,
 and only if there are more than one non-duplicate IP then it should fail.</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
The problem is that the backend host is a so called "app service" in Microsoft Azure, which is basically a platform as a service (PaaS), where Microsoft handles the networking including the domain name (no user access it directly). I have no idea why it suddenly
 resolves to multiple duplicate IPs.</div>
</div>
_______________________________________________<br>
varnish-misc mailing list<br>
<a href="mailto:varnish-misc@varnish-cache.org" data-auth="NotApplicable">varnish-misc@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" data-auth="NotApplicable">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc</a><br>
</div>
</blockquote>
</div>
</div>
</body>
</html>