Clustered Deployments
CAS uses the Spring Cloud Bus to manage configuration in a distributed deployment. Spring Cloud Bus links nodes of a distributed system with a lightweight message broker. This can then be used to broadcast state changes (e.g. configuration changes) or other management instructions.
The bus supports sending messages to all nodes listening. Broadcasted events will attempt to update, refresh and reload each application’s configuration.
If CAS nodes are not sharing a central location for configuration properties such that each node contains a copy of the settings, any changes you make to one node must be replicated and synced across all nodes so they are persisted on disk. The broadcast mechanism noted above only applies changes to the runtime and the running CAS instance. Ideally, you should be keeping track of CAS settings in a shared (git) repository (or better yet, inside a private Github repository perhaps) where you make a change in one place and it’s broadcasted to all nodes. This model removes the need for synchronizing changes across disks and CAS nodes.
To see the relevant list of CAS properties, please review this guide.
The transport mechanism for the bus to broadcast events is handled via one of the following components.
Troubleshooting
To enable additional logging, modify the logging configuration file to add the following:
1
2
3
4
<AsyncLogger name="org.springframework.amqp" level="debug" additivity="false">
<AppenderRef ref="console"/>
<AppenderRef ref="file"/>
</AsyncLogger>
RabbitMQ
This is the default option for broadcasting change events to CAS nodes. RabbitMQ is open source message broker software (sometimes called message-oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP).
Support is enabled by including the following dependency in the final overlay:
1
2
3
4
5
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core-configuration-cloud-amqp</artifactId>
<version>${cas.version}</version>
</dependency>
Kafka
Apache Kafka is an open-source message broker project developed by the Apache Software Foundation. The project aims to provide a unified, high-throughput, low-latency platform for handling real-time data feeds. It is, in its essence, a “massively scalable pub/sub message queue architected as a distributed transaction log”, making it highly valuable for enterprise infrastructures to process streaming data.
Support is enabled by including the following dependency in the final overlay:
1
2
3
4
5
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core-configuration-cloud-kafka</artifactId>
<version>${cas.version}</version>
</dependency>