[squid-users] Switch cache peer Parent server for every 30 minutes
Alex Rousskov
rousskov at measurement-factory.com
Fri Jun 12 13:17:48 UTC 2020
On 6/11/20 11:52 PM, Prem Chand wrote:
> It's working as expected. I tried to allow only specific domains during
> the time by adding below acl but I'm getting HTTP status code 503
> acl usePeerB time 00:30-00:59
> acl usePeerB time 02:00-02:29
> acl alloweddomains dstdomain google.com facebook.com
> cache_peer_access peerA allow usePeerA allowedomains
> cache_peer_access peerB allow usePeerB allowedomains
> cache_peer_access peerC allow !usePeerA !userPeerB alloweddomains
Assuming there are no other cache peers, the above rules leave no
forwarding path for a request to a banned domain. If you want to ban
such requests, http_access instead of cache_peer_access.
HTH,
Alex.
> On Thu, Jun 11, 2020 at 4:54 AM Alex Rousskov wrote:
>
> On 6/10/20 12:20 PM, Antony Stone wrote:
> > On Wednesday 10 June 2020 at 18:11:03, Prem Chand wrote:
> >
> >> Hi Alex,
> >>
> >> Thanks for responding to my issue . I didn't get how the math
> was done(why
> >> it's multiplied by 2) to get 16 slots if possible could you
> please elaborate
> >> with an example.
> >
> > I believe what Alex meant was:
> >
> > You want 30 minute timeslots for each of 3 peers, which is 48
> half-hour
> > timeslots throughout the day.
> >
> > However, you only need to define 48/3 of these for peer A, and
> 48/3 of them for
> > peer B, and then let peer C deal with anything not already handled
> (so it
> > doesn't need its own definitions).
> >
> > 48/3 = 16, therefore you define 16 half-hour periods when you want
> peer A to do
> > the work, 16 half-hour periods for peer B, and then just say "peer
> C, handle
> > anything left over".
>
> Thank you, Antony! Here is an untested sketch:
>
> acl usePeerA time 00:00-00:29
> acl usePeerA time 01:30-01:59
> ... a total of 16 ORed lines for the first peer ...
> ... each line matches a unique 30 minute period ...
>
>
> acl usePeerB time 00:30-00:59
> acl usePeerB time 02:00-02:29
> ... a total of 16 ORed lines for the second peer ...
> ... each line matches a unique 30 minute period ...
>
> # and now match peer to its time slots
> cache_peer_access peerA allow usePeerA
> cache_peer_access peerB allow usePeerB
> cache_peer_access peerC allow !usePeerA !userPeerB
>
>
> The above may need further adjustments and polishing. For example, I am
> not sure how Squid will round these time values. The above assumes that
> 00:29 limit includes all 60 seconds up to (but excluding) 00:30:00.
>
>
> HTH,
>
> Alex.
>
>
> >> On Wed, Jun 10, 2020 at 7:12 PM Alex Rousskov wrote:
> >>> On 6/10/20 6:09 AM, Prem Chand wrote:
> >>>> My squid cache peer has 3 parent IP’s configured. I need to
> send HTTPS
> >>>> requests to the first parent IP for 30 minutes and after to the 2nd
> >>>> parent IP for 30 minutes and then to 3rd IP for 30 minutes and this
> >>>> switching needs to happen continuously .Could you please let us
> know
> >>>> how I can achieve this?
> >>>
> >>> If you are OK with hard-coded usage time slots for each peer, then I
> >>> would use two[1] "time" ACLs and cache_peer_access rules. Look for
> >>> "aclname time" in squid.conf.documented. You will have to generate a
> >>> list of (24*2/3=16) staggered time slots for each of the two
> ACLs, but
> >>> it should work. This may be the simplest solution.
> >>>
> >>> [1] You need two ACLs for three peers because the third peer
> should get
> >>> the requests that the first two peers were not allowed to get.
> >>>
> >>> ----
> >>>
> >>> With a modern Squid, you could also implement this using a more
> flexible
> >>> (and more expensive, on several layers!) architecture with two ACLs:
> >>>
> >>> 1. An external ACL that returns the right cache peer name to use
> via a
> >>> keyword=value annotation API. This always-matching ACL should be
> >>> attached to http_access or a similar directive that supports
> slow ACLs.
> >>> Its goal is to annotate the request. You will need to write a
> >>> script/program that will compute the right annotations based on
> time or
> >>> some other factors. This is where the flexibility of this
> solution is
> >>> coming from.
> >>>
> >>> 2. A "note" ACL attached to cache_peer_access directives, allowing
> >>> access to peer X if the external ACL in item 1 returned
> >>> use_cache_peer_=X. The "note" ACL is a fast ACL and, hence, can be
> >>> reliably used with cache_peer_access.
> >>>
> >>> If you already have another external ACL, you may be able to
> piggyback
> >>> annotations in item 1 to whatever that ACL is already doing.
> >>>
> >>> For more information, search for "keyword=value" and "acl
> aclname note"
> >>> in your squid.conf.documented and see
> >>>
> https://wiki.squid-cache.org/Features/AddonHelpers#Access_Control_.28ACL.
> >>> 29
> >>>
> >>>
> >>> HTH,
> >>>
> >>> Alex.
> >
>
>
>
> --
> prem
More information about the squid-users
mailing list