Hi all. We are running a highly available CAS deployment. We have 3 different zones. Each zone has non-presistant distributed data store to share the tickets. The tickets are partitioned by zone. We have logic in the load balancers to route the requests to the correct zone.
We have been discussing recently to move towards a non-partitioned model, where we have a persistent replicated data store in the back. Obviously there are some challenges around the, but let's assume we have those figured out. My biggest concern about using a distributed shared store behind our CAS servers is that CAS stores the tickets as java serialized objects. That increases the coupling between the servers that share the data store. We have already ran into issues with java serialization within a zone, but the incidents have been limited to a single zone. When the data is shared globally, I'm concerned about java serialization issues having a bigger impact on availability. We don't generally run different version of CAS in the same cluster, but during deployments this will be the case. Even if we managed update all the nodes simultaneously, the new version will have to read the data the old version wrote. Personally, I feel that storing a serialized java object is too loose of a contract. I would feel much more confirmable of the ticket data would be more defined. It's not trivial to implement the ticket storage interface without using java serialization, because the TGT can reference objects of type Object (trough the authentication I believe). Because of this, it's also hard to audit if an update will break serial compatibility. Has there been any consideration or discussion about defining a stricter ticket storage contract? Thanks HÃ¥var -- You are currently subscribed to cas-dev@lists.jasig.org as: arch...@mail-archive.com To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-dev