Crowd load-balancing
Asked by Onesto Services Oy:

Based on [unofficial](http://forums.atlassian.com/thread.jspa?messageID=257246104&#257246104)(?) [information](http://forums.atlassian.com/thread.jspa?forumID=104&threadID=25359) it would seem that while Crowd does not officially support clustering, there might be some setups where it can be made to work.

The set-up that we have in mind is:

* Two MySQL servers with failover. The cluster has a virtual IP that always points to the active node.
* Two Crowd servers behind a load balancer. The Crowd instances would be configured to use the database server's virtual IP for database connections.
* Applications only perform authentication through the load balancer. For administration tasks we can directly connect to just one of the Crowd nodes.

So my questions are:

* Can we expect Crowd to work reliably in this kind of setup?
* Do we need to disable authorization caching in Crowd?
* Are there other caching considerations?
* Do we need separate licenses for the load-balanced Crowd instances?


Answers:
author: Graham Bakay
body: We do exactly this, except we also do administration tasks through the LB.

Answers:

1. Yes, although multi-step wizards (adding an application) don't work correctly if passed back through different servers (via LB). We turn off LB for the minute or so it takes to add a new application. Modifying an applicaiton works through the LB.

2. No.

3. Yes, you need to make sure you are using a Database Cache (not Memory) for Authentication Token Storage.

4. No, or at least that was what was mentioned in the forums years ago when I asked.

Cheers,

Graham.


author: Hao Doan
body: I know this question was back in 2012, but I just wanted to give everyone else who is looking for the solution just like me. Here's how I solved it.

The way I solved it is to add the load balancer IP address(es) that it trying to connect. If you look at the crowd log, you'll see the ip from the load balancer to the application, see below. Once I added the IP it's coming from in the crowd application/confluence/remote addresses and then restart confluence. I was able to login.

++example log from Crowd:++ Client with address '10.0.15.210' is forbidden from making requests to application 'confluence'

I'm using AWS Load Balancer and EC2. It's connecting to my Confluence via internal IP instead of the DNS name. You don't need to change the crowd.properties and I have it set to the DNS name. You just need to add the internal IP that load balancer is requesting.

comments: author: jj1978
body: And when the load balancer IP changes your configuration fails.


author: Hao Doan
body: Load Balancer shouldn't get new IPs randomly. It's set once you created one. If you worried, then add the entire VPC like 10.0.0.0./16.


author: jj1978
body: Depends on your LB, NLB can have static IPs (but only public IP and one per AZ), ALB's and Classic can't. If an LB becomes unhealthy etc you will be switched seamlessly to a healthy one with new IPs (it's the cloud and how AWS guarantee high levels of availability), hence why you should use your LB DNS.

Your suggestion of using VPC CIDR is a valid alternative.


author: Ivar
body: FYI: [https://answers.atlassian.com/questions/5379/load-balancing-crowd](/questions/5379/load-balancing-crowd)


Tags: data-center

load-balancer