url-downloader
url-downloader is a Squid non-caching proxy for HTTP requests. It was originally created for MediaWiki's upload-by-URL functionality, these days it is being used by any service that wants to access resources outside the boundaries of the wikimedia production realm.
There are some critical production services that depend on url-downloaders being operational, such as hCaptcha, citoid, and MediaModeration, among others. A complete list can be found in codesearch.
urldownloader low-traffic service
We have a total of four URL downloader VMs running in eqiad and codfw (urldownloader[12]00[56].wikimedia.org), which are load-balanced behind LVS.The endpoints to access them are:
- urldownloader.discovery.wmnet (discovery DNS record)
- urldownloader.svc.eqiad.wmnet (site-specific endpoint in eqiad)
- urldownloader.svc.codfw.wmnet (site-specific endpoint in codfw)
In the past only of the URL downloader nodes was accessed via CNAME DNS records; url-downloader.$DC.wikimedia.org and url-downloader.wikimedia.org. These legacy endpoints still point to individual nodes, but should no longer be used as they will eventually be removed entirely.
For technical details please also refer to url_downloader the Puppet profile.
Troubleshooting
The service runs on port 8080 and is provided by Squid as packaged in Debian Bookworm. Cache access is logged to /var/log/squid/access.log and potential errors would end up in the journald of squid.service or /var/log/squid/cache.log. The URL downloader nodes are behind LVS, so if there's any load issues also make sure to validate if one of the nodes listed in conf-tool might be depooled (accidentally or intentionally).
To check the currently pooled servers in the cluster:
sukhe@puppetserver1001:~$ sudo confctl select 'cluster=urldownloader' get
{"urldownloader2005.wikimedia.org": {"weight": 0, "pooled": "no"}, "tags": "dc=codfw,cluster=urldownloader,service=squid"}
{"urldownloader2003.wikimedia.org": {"weight": 0, "pooled": "yes"}, "tags": "dc=codfw,cluster=urldownloader,service=squid"}
{"urldownloader2004.wikimedia.org": {"weight": 0, "pooled": "yes"}, "tags": "dc=codfw,cluster=urldownloader,service=squid"}
{"urldownloader2006.wikimedia.org": {"weight": 0, "pooled": "no"}, "tags": "dc=codfw,cluster=urldownloader,service=squid"}
The cumin alias that is used to reference the urldownloaders is A:url-downloader:
sukhe@cumin1004:~$ sudo cumin "A:url-downloader" 8 hosts will be targeted: urldownloader[1003-1006,2003-2006].wikimedia.org DRY-RUN mode enabled, aborting
There are is a cookbook, which can be used to perform a rolling restart/reboot: sre.misc-clusters.roll-restart-reboot-urldownloaders
Dashboards
Please see the dashboards for Host Overview and filter for urldownloader hosts, or see the Squid dashboard. There is no dashboard for the service itself yet.
See also
- HTTP proxy (another set of squid proxies for slightly different use cases)
- T254011: Why do we have 2 sets of squid proxies?