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

Reply via email to