-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hash load balancer #381
Hash load balancer #381
Conversation
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
Looks like your commits are using [email protected] right now, which hasn't signed the CLA. If you rebase down to a single commit, and make sure to use your work email, we should be good to go 🤞🏻 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your PR! This looks good to me, pretty nice solution. You mention it would be nice to add configuration, what would you want to configure about the hashing?
might be worth having an option to hash by source IP only if you want a mode where all sessions from a given user are routed to the same endpoint? will re-submit as a single commit with the correct email address - once I work out how to do that! |
Build Failed 😭 Build Id: c237ffad-373d-4a90-90d7-52dedefe1dce Status: FAILURE To get permission to view the Cloud Build view, join the quilkin-discuss Google Group. |
1 similar comment
Build Failed 😭 Build Id: c237ffad-373d-4a90-90d7-52dedefe1dce Status: FAILURE To get permission to view the Cloud Build view, join the quilkin-discuss Google Group. |
I might be missing something, but isn't that what setting |
ah sorry. Didn't explain myself well. the current solution hashes on the source SocketAddr. So all traffic from the same IP/port will go to the same endpoint. My guess is that for most games that will ensure that all of a given user's traffic will go to the same endpoint, whilst also giving optimal hashing if e.g. multiple users are behind a NAT, and ensuring that a user can reconnect and get a different endpoint if one endpoint has an issue. the other approach would be to hash on source IpAddr. that way all traffic from given IP will go to one endpoint. So if a game has multiple flows per user that will ensure that they land on the same endpoint. |
6c7458b
to
c168215
Compare
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
Build Failed 😭 Build Id: 99a55882-9bd7-4bd1-8214-f2c84aed316d Status: FAILURE To get permission to view the Cloud Build view, join the quilkin-discuss Google Group. |
c168215
to
51f8aaf
Compare
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
51f8aaf
to
0c8ca55
Compare
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
Build Failed 😭 Build Id: 241eb6ec-7ed0-471f-ba03-96d02a50fdda Status: FAILURE To get permission to view the Cloud Build view, join the quilkin-discuss Google Group. |
Build Succeeded 🥳 Build Id: 72940302-5709-4ea3-8fc1-5909d057d0ca To build this version:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thanks!
We were tracking this on Discord, but @thisisnotapril is looking into what the situation is with the CLA. |
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
Build Succeeded 🥳 Build Id: 4f900e4d-9246-41e4-9b11-76cc79b3ebb2 To build this version:
|
Manual approval on the CLA - so merging 👍🏻 |
First cut of a hashed load-balancer for Quilkin so all requests from one session go to the same endpoint.
Note that hashes by source IP/port. Might be good to make it configurable.
Also doesn't implement a consistent hash (so if the set of endpoints changes all flows will re-hash).