Skip to content

[TT-13402] Rate limit does not get reset when using more than 1 gateway pods in kubernetes #5919

Open
@utkarsh079

Description

Branch/Environment/Version

  • Branch/Version: Master
  • Environment: kubernetes

Describe the bug
I am configuring 100 rate per 60 seconds with a python plugin.
When I am using a single gateway pod everything is working fine. but when we scale up number of pods we are seeing that

for first 60 seconds we are getting 200
but after that, rate never gets reset. We are constantly getting 429s
My middleware is like this

from tyk.decorators import *
from gateway import TykGateway as tyk
from policies import policy
import datetime
import os
import sys

parent_dir = os.path.abspath(os.path.dirname(__file__))
vendor_dir = os.path.join(parent_dir, 'vendor')
sys.path.append(vendor_dir)

@Hook
def MyAuthMiddleware(request, session, metadata, spec):
    tyk.log("Starting Auth middleware", "info")
    default_policy = policy["voyages"]["default"]
    try:
        tyk.log(f"request ip is {request.get_header('X-Real-Ip')}", "info")
        if str(request.get_header('X-Real-Ip')) != '':
            metadata["token"] = request.get_header('X-Real-Ip')
            session.rate = default_policy["rate"]
            session.per = default_policy["per"]
            session.quota_max = default_policy["quota_max"]
            session.quota_renewal_rate = default_policy["quota_renewal_rate"]
            session.session_lifetime = 3600
    except:
        tyk.log("something went wrong", "info")
    return request, session, metadata

Reproduction steps
Steps to reproduce the behavior:

  1. Scale tyk gateway pods to 2
  2. Deploy the plugin to do rate limiting with ip

Actual behavior
API keeps on returning 429 even after the rate limit interval (60 seconds) has passed
Expected behavior
Rate limit for a particular ip should get reset after 60 seconds

Additional context
Tyk version: CE (v5.2.3)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions