[4.0] Rework haproxy config for stickiness and balance strategy#209
Merged
matelakat merged 7 commits intocrowbar:stable/4.0from Jul 16, 2017
matelakat:backport-haproxy-stickiness
Merged
[4.0] Rework haproxy config for stickiness and balance strategy#209matelakat merged 7 commits intocrowbar:stable/4.0from matelakat:backport-haproxy-stickiness
matelakat merged 7 commits intocrowbar:stable/4.0from
matelakat:backport-haproxy-stickiness
Conversation
We have haproxy 1.5.x now, so we can use persistence for SSL sessions. This matters as if we want to allow people to not use "source" as balance algorithm, then we need to make sure that sessions keep going to the same backend to avoid breakages. This reverts commit 32323b0. (cherry picked from commit ba2fd30)
This is done in the LWRP and in the template; let's just do it in the LWRP to simplify the template. (cherry picked from commit ba3d9fd)
This is useful to achieve persistence for web apps which have a session, which is important in order to allow using a different algorithm than "source" for balancing without breaking sessions. (cherry picked from commit 7411535)
This allows achieving persistence for a normal session, but also for the login form where there's usually a CSRF token (and which is not associated to a real session in the web app). (cherry picked from commit 8c3fdbf)
This enables customization of the balance strategy for each service. (cherry picked from commit 1c6dbf8)
The default in the haproxy cookbook is roundrobin, and this should actually work fine. In cases where this may be troublesome (like web apps), we can now configure stickiness to avoid issues. With roundrobin, we spread the load accross the various backends, which results in much improved performance. (cherry picked from commit 592b5d9)
(cherry picked from commit c07c255)
houndci-bot
reviewed
Jul 14, 2017
| attribute :port, kind_of: Integer, default: 0 | ||
| attribute :mode, kind_of: String, default: "http", equal_to: ["http", "tcp", "health"] | ||
| attribute :balance, kind_of: String, default: "", | ||
| equal_to: ["", "roundrobin", "static-rr", "leastconn", "first", "source"] |
There was a problem hiding this comment.
Layout/AlignHash: Align the elements of a hash literal if they span more than one line. (https://github.com/SUSE/style-guides/blob/master/Ruby.md#stylealignhash)
Itxaka
approved these changes
Jul 14, 2017
nicolasbock
approved these changes
Jul 15, 2017
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the backport of #208
We enable stickiness based on SSL sessions
We add the ability to do stickiness based on cookies
We allow to define the balance strategy on a per-resource basis
We stop overriding the default balance strategy (and therefore use roundrobin by default)