博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CAS服务器端集群
阅读量:6506 次
发布时间:2019-06-24

本文共 3117 字,大约阅读时间需要 10 分钟。

hot3.png

CAS集群分为服务器端集群和客户端集群。

##CAS服务器端集群##

CAS服务器端集群主要解决两个问题: session同步和Ticket(票据)仓库共享。

实现环境的网络拓扑图如下: CAS服务器集群的网络拓扑图

###环境变量定义###

  • CAS_HOME: CAS Server源码包目录(版本: 3.5.2)
  • CATALINA_HOME: tomcat目录(版本: 7.0.42)

###配置session同步###

由于这里将CAS服务器端应用部署在tomcat上,因此session同步的配置方法和普通的tomcat session同步一样。这里给出一个例子:

在*$CATALINA_HOME/conf/server.xml*中的<Engine>节点添加如下的配置片段:

并给<Engine>节点添加一个jvmRoute的属性,其属性值可以随意取,比如jvm2, 只要保证在集群环境内是唯一的。

在*$CATALINA_HOME/webapps/cas/WEB-INF/web.xml*中添加 <distributable />

详细的tomcat集群配置细节参考 或

###Ticket仓库同步###

Ticket仓库同步的做法可以使用集中式缓存,比如memcached, redis; 或者使用数据库集中保存; 如果使用缓存插件,比如ehcached,jbossCache,则需要配置缓存同步策略。

####使用memcached缓存ticket仓库的内容####

####使用ehcache缓存ticket仓库的内容####

  • 用*$CAS_HOME/cas-server-integration-ehcache/src/test/resources/ticketRegistry.xml替换$CATALINA_HOME/webapps/cas/WEB-INF/spring-configuration/ticketRegistry.xml*,
  • 将*$CAS_HOME/cas-server-integration-ehcache/src/test/resources/ehcache-replicated.xml复制到$CATALINA_HOME/webapps/cas/WEB-INF/classes*目录
  • cas-server-integration-ehcache-3.5.2.jar复制到*$CATALINA_HOME/webapps/cas/WEB-INF/lib*目录

ehcache集群方案一般有三种: RMI, jgroups, EhCache Server. cas-server-integration-ehcache模块给出了RMI集群方案。RMI集群方案有两种缓存同步模式: 自动和手动。 如果使用自动模式,则把ehcache-replicated.xml里面的<!-- Manual Peer Discovery -->块注释掉,并根据实际情况修改<cacheManagerPeerProviderFactory>节点内的multicastGroupAddress属性和multicastGroupPort属性。如果使用手动模式 ,请参考

####使用jbossCache缓存ticket仓库的内容#### 打开*$CATALINA_HOME/cas/WEB-INF/spring-configuration/ticketRegistry.xml*, 将 <!-- lang:xml --> <bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.DefaultTicketRegistry" /> 换成 <!-- lang: xml --> <bean id="cache" class="org.jasig.cas.util.JBossCacheFactoryBean" p:configLocation="classpath:jbossTicketCacheReplicationConfig.xml" />

<bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.JBossCacheTicketRegistry" p:cache-ref="cache" /> 注意classpath:jbossTicketCacheReplicationConfig.xml之间不能用空格

将*$CAS_HOME/cas-server-integration-jboss/src/test/resources/jbossTestCache.xml复制到$CATALINA_HOME/webapps/cas/WEB-INF/classes目录,并重命名为jbossTicketCacheReplicationConfig.xml*.

打开jbossTicketCacheReplicationConfig.xml,将下面的片段注释掉: <!-- lang: xml --> <!-- <depends>jboss:service=TransactionManager</depends> --> 和 <!-- lang: xml --> <!-- <attribute name="TransactionManagerLookupClass">org.jboss.cache.transaction.DummyTransactionManagerLookup</attribute> -->

找到<attribute name="ClusterConfig">节点,根据实际情况修改<UDP>子节点的mcast_addr属性和mcast_port属性(这是jbosscache缓存通信的广播地址和端口,确保不要和其他地址重叠)。 此外,如果你的集群节点都位于同一个子网, 那么将<UDP>子节点的ip_ttl属性设置为*"1". 如果你的系统使用IPv6或bonding服务,那么你可能需要根据实际情况修改<UDP>子节点的bind_addr*属性。

下载jgroups-2.6.5.GA.jar, jboss-common-core-2.2.8.GA.jar, jbosscache-core-2.2.2.GA.jar , cas-server-integration-jboss-3.5.2.jar,并把他们复制到*$CATALINA_HOME/webapps/cas/WEB-INF/lib*目录。

####使用mysql存储ticket仓库的内容####

参考资料:

[https://wiki.jasig.org/display/CASUM/Clustering+CAS][4]

转载于:https://my.oschina.net/aiguozhe/blog/163470

你可能感兴趣的文章
F5 实现pool池转发
查看>>
Apache(httpd)源码包安装
查看>>
activiti与spring集成
查看>>
清除mysql管理员root密码
查看>>
mac上安装python3的cx_Oracle数据库驱动
查看>>
win2012配置
查看>>
MySql(三): 覆盖索引( Covering Index )
查看>>
【码云周刊第 12 期】走过微软20年,埋头并发编程15年,如何减少代码的认知负荷?...
查看>>
Openstack 之 Prometheus 监控
查看>>
springCloud(6):Eureka的自我保护模式、多网卡下的IP选择、Eureka的健康检查
查看>>
不用sqldatasource,自己编写sql语句绑定gridview
查看>>
在CentOS上安装CACTI
查看>>
Delphi 与 DirectX 之 DelphiX(56): TDIB.DoTwist();
查看>>
open-falcon+grafana出图
查看>>
mysqldump问题
查看>>
Artifactory 如何使用 SHA-256 进行安全存储?
查看>>
mybatis的mapper的代理学习
查看>>
微信小程序 - 使用七牛云 API 截取第 n 秒图像为封面图
查看>>
redhat 6.5 配置WAS控制台中文
查看>>
本博客停止更新,后续用博客园。
查看>>