- 浏览: 176582 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
vil:
请问CAS 单点登录加负载均衡后,httpClient tim ...
(转)CAS负载均衡配置 -
bcs2099:
男男女女[flash=200,200][/flash]
学Ext的好网站 -
bcs2099:
不过关
学Ext的好网站 -
qingteng1983:
请问,这个上传组件支持断点续传吗?
利用SWFUpload实现大附件上传 -
yangwn:
LZ,我想请教,hdfs://192.168.4.27:900 ...
编写JAVA代码读取Hadoop存储服务器文件
http://fallenlord.blogbus.com/logs/43591716.html 总述 首先,我是用的CAS Server版本是3.3.1,Servlet容器是Tomcat 负载均衡方案以Apache Http Server作为前端均衡服务器,后台用多台Tomcat进行承载,此方案分为三步: 以下分别实现这三步的配置 实现负载均衡 Apache配置 我们选用Apache Proxy Module来进行负载均衡,之所以不使用JK Module是因为后者配置较为复杂配置与部署 第一排--prefix请改为实际目录地址,第二排的是proxy相关模块,建议全部装上。然后执行make 安装完成之后,到apache服务器的路径上(/opt/tools/apache-httpd-2.2.11),编辑conf/httpd.conf: 设定默认的转向稳健加入index.jsp,由于安装的时候内置了proxy相关的module,因此此处不必特别声明LoadModule。然后编辑conf/extra/httpd-vhosts.conf,首先添加Proxy配置: 其中balancer://cluster是balancer协议下的虚拟路径,用于声明此Proxy的地址,cluster为自定义地址,可以随意设定。 接下来定义虚拟主机: 注意ProxyPass和ProxyPassReverse中的第二个地址必须与之前的Proxy声明的地址相同且以"/"结尾,第一个地址表示映射到根目录,即访问http://host/即可转向Proxy; stickysession表示Apache根据HTTP请求HEAD中的哪个属性来获取转向请求; onfailover参数设为On时,若后台服务器宕机的话会中断会话,一般来说后台服务器不支持Session复制的话应该设为On Tomcat配置 建立两个Tomcat服务器实例,这里使用的是Tomcat 6.0.20,修改TOMCAT_HOME下的conf/server.xml文件,将其Engine标签后加上jvmRoute="jvm1"(另一个为jvm2): 然后设定AJP连接器的端口为我们配置Proxy的BalancerMember元素时设定的端口20009(另一个设为30009): 负载均衡即完成(如果需要的话,可以直接将HTTP/HTTPS的Connector都注释掉,仅留下AJP连接器) 注意
配置CAS实现票据共享 票据共享可以选用多种方式,CAS提供的基本都是基于Cache和DB的,任意选用一种,只要保证多个CAS实例间可以共享到票据即可,这里我们挑选了JPA方式 接下来只需要修改ticketRegistry.xml文件即可: 以上大多数是Hibernate配置Spring的标准配置,其中所有的${...}符号均为Spring配置文件的替换符,接下来我们在cas.properties文件中增加这些替换符的配置: 这样JPA的持久化就完成了
配置Tomcat实现Session复制 如果一个服务器是无状态的,那么它可以很容易的横向扩展。理论上CAS将票据存储分离到了数据库中应该已经是无状态的了,但很遗憾,CAS 3.x中使用了Spring Web Flow框架,这个框架要求使用一个flowExecutionKey来确定流程位置,它正是存储在Session中。因此我们无法实现SNA(Share Nothing Architecture) 首先配置CAS的web.xml中增加一行: 然后分别编辑两个Tomcat实例下的conf/server.xml,Engine元素下加入: 其中Membership元素的address和port是网络组播地址和端口,需要确认所在网络允许组播; 重新启动Tomcat,尝试登录,现在CAS应该可以正常工作了 如果需要配置SSL连接,可以参见我另一篇文章:CAS集群配置——SSL篇
我们使用Apache Http服务器2.2.11版,因为2.2版本比2.0版本在Proxy模块上有较大的改进,2.0版的Proxy模块即使在后台宕机了之后依然会将请求进行转发,然后抛出502 Proxy异常,而2.2修复了这个问题
首先下载Apache Http Server 2.2.11 for Linux版本:http://httpd.apache.org/,然后将其解压。configure安装:
--enable-proxy=share --enable-proxy-connect=share --enable-proxy-ftp=share --enable-proxy-http=share --enable-proxy-ajp=share --enable-proxy-balancer=share
<IfModule dir_module>
DirectoryIndex index.html index.jsp
</IfModule>
...
<Proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:20009 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:30009 loadfactor=1 route=jvm2
</Proxy>
BalancerMember的格式为:BalancerMember [balancerurl] url [key=value [key=value ...]],其中balancerurl参数只有在BalancerMember元素不在Proxy标签内时才需要指定
按照我们的配置,第一个参数为后台应用(Tomcat)AJP协议的地址,这个地址对应着Tomcat中配置的AJP端口URL; loadfactor表示权值,取值为1-100,表示有多少次请求转向此Member之后再跳到下一个Member; 最后route参数必须与Tomcat中Engine标签的jvmRoute属性对应配置与部署
<VirtualHost *:80>
ServerAdmin guolin@xxx.com
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / balancer://cluster/
</VirtualHost>
至此Apache Http服务器配置完成,但现在启动还没用,因为Tomcat尚未配置
先启动两个TOMCAT实例,然后启动Apache HTTP服务器,访问http://hostname/,多次刷新页面,可以观察到是轮流转向两个不同的Tomcat实例的停止其中一个Tomcat,再次多次刷新,发现仅仅只是转向那台正常的服务器了,至此负载均衡配置成功
当其中一台Tomcat宕机以后再重启,Apache依然会认为此机器是死的,必须重启Apache才行
首先扩展之前我们需要确定一下我们的项目包含一些需要的依赖,主要是Hibernate的一些相关包,以下是POM.xml文件片段,也可以考虑使用更新的包,但请注意可能的依赖冲突:
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.3.1.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.3.0.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.3.0.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.4.sp1</version>
</dependency>
<dependency>
<groupId>concurrent</groupId>
<artifactId>concurrent</artifactId>
<version>1.3.4</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<description>
Configuration for the default TicketRegistry which stores the tickets in-memory and cleans them out as specified intervals.
</description>
<!-- Ticket Registry -->
<bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.JpaTicketRegistry">
<constructor-arg index="0" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="true" />
<property name="showSql" value="${database.hibernate.show.sql}" />
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${database.hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory" />
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${database.driver}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}" />
<property name="maxActive" value="40" />
<property name="maxIdle" value="30" />
<property name="maxWait" value="10000" />
<property name="defaultAutoCommit" value="true" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="30" />
<property name="logAbandoned" value="false" />
</bean>
<!-- Ticket Registry -->
<!-- 默认的ticket registry,放内存里CAS服务器端改造
<bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.DefaultTicketRegistry" />
-->
<!--Quartz -->
<!-- TICKET REGISTRY CLEANER -->
<bean id="ticketRegistryCleaner" class="org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner"
p:ticketRegistry-ref="ticketRegistry" />
<bean id="jobDetailTicketRegistryCleaner" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
p:targetObject-ref="ticketRegistryCleaner"
p:targetMethod="clean" />
<bean id="triggerJobDetailTicketRegistryCleaner" class="org.springframework.scheduling.quartz.SimpleTriggerBean"
p:jobDetail-ref="jobDetailTicketRegistryCleaner"
p:startDelay="20000"
p:repeatInterval="5000000" />
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="triggerJobDetailTicketRegistryCleaner" />
</list>
</property>
</bean>
</beans>
database.driver=oracle.jdbc.driver.OracleDriver
database.url=jdbc:oracle:thin:@jx-iit-dev00.jx.baidu.com:1521:iitdb
database.username=sso
database.password=XXX
database.hibernate.show.sql=true
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership
className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"
mcastTTL="1"/>
<Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="0"
selectorTimeout="100"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
Receiver的port属性表示监听端口,如果两个应用在同一个机器上请设定两个不同的值随机文章:
发表评论
-
CAS 3.x代理配置
2010-02-04 16:04 2690http://fallenlord.blogbus.com/l ... -
获取汉字拼音首字母功能函数
2010-01-18 14:52 962如: System.out.println(HZPY. ... -
JAVA MVC构架详解
2009-12-22 15:04 987整理。。。 -
Web服务端组件事件开发与MVC开发
2009-12-19 11:14 1254本周一起跟.net开 ... -
内存控制效率优化的启示
2009-12-05 10:01 8724 内存控制效率优化的 ... -
记录下载中文附件出现乱码
2009-10-28 14:16 874环境:jsp页面,编码全部用UTF-8 在下载代码中写 ... -
web.xml 中 mime-mapping的使用
2009-10-08 09:58 6097mime-mapping 如果Web应用程序包含一 ... -
从Struts到Spring MVC的应用
2009-09-27 11:42 1478从 Struts 转到 Spring MVC 的应用 ... -
容易被搞晕的——堆和栈
2009-09-23 11:10 770容易被搞晕的——堆和 ... -
Tomcat的配置文件server.xml 中各个域的说明
2009-07-09 15:10 808Tomcat的配置文件server.xml 中各个域的说明 ... -
让CAS支持客户端自定义登陆页面——客户端篇
2009-06-19 17:08 3510客户端即指使用CAS中央认证服务器的应用程序,而不是指用户浏览 ... -
让CAS支持客户端自定义登陆页面——服务器篇
2009-06-19 16:40 2058修改需要基于几个基本原则: 不影响原有统一登陆界面功能 ... -
将页面输出进行压缩
2009-06-15 16:07 883压缩是解决数据冗余的一个好的方法,特别是在网络带宽 ... -
在spring mvc中用 jquery 出现的在IE,firefox乱码问题解决
2009-06-11 19:47 1705由于在开发中大量用GB2312出现此问题,解决方法可以有下方法 ... -
Hibernate中分页查询在SQL Server2005产生的SQL语句
2009-05-26 15:18 1631Hibernate 的分页代码 query.setFi ... -
不要重复 DAO!
2009-04-16 17:03 825http://www.ibm.com/developerwor ... -
jquery异步附件上传
2009-03-30 20:30 4230http://valums.com/wp-content/up ... -
JAVA中不错的处理日期工具单元
2009-02-10 10:54 974/**Revision Information: *@ver ... -
MyEclipse6.5注册码
2009-01-12 13:42 734Subscriber:QQ24785490 Subscrip ... -
Hibernate3.2官方中文参考手册
2009-01-09 16:37 1826如附件:
相关推荐
CAS JPA-Ticket存储解决负载均衡配置
#对 "/Dossm3RabbitMQConsumer/" 启用负载均衡 location /Dossm3RabbitMQConsumer/ { proxy_pass http://localhost:8086; #保留用户真实信息 proxy_set_header X-Real-IP $remote_addr; proxy_set_header ...
配置Apache和Tomcat实现请求转发(负载均衡) 配置CAS实现Ticket共享(或复制) 配置Tomcat实现Session复制,这里主要是为了复制Web Flow的flowExecutionKey(CAS使用了Spring Web Flow)
02 H3C CAS-云容器引擎配置指导 03 H3C CAS 虚拟机快照配置指导 04 H3C CAS-虚拟机防病毒配置指导 05 H3C CAS SR-IOV配置指导 06 H3C CAS vGPU热迁移配置指导 07 H3C CAS 内存管理最佳实践 08 H3C CAS 磁盘...
H3C_CAS存储负载均衡操作指导书 H3C_CAS存储在线扩容操作指导书 H3C_CAS端口镜像特性操作指导书 H3C_CAS_SSV用户自助服务特性说明书 H3C_CAS_V2V离线迁移操作指导书 H3C_CAS_VDI虚拟桌面功能操作指导书 H3C_...
cas客户端登录配置详细文档,支持客户端自定义登录和服务端统一登录。
CAS原理和配置过程.,轻轻松松搞定CAS配置。。。。。。。。
cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置
CAS学习笔记 --CAS的服务器配置和各种客户端的配置
CAS Server全部配置详解
此文档详细说明了CAS服务端及客户端相关配置,以及使用http和https配置。
包含cas源码、cas使用说明文档(包含配置信息)、连接数据库所需jar包、cas服务端自定义返回值等
H3C_CAS云计算管理平台配置指导书 H3C云配置介绍
主要讲述了CAS单点登录多数据及获取更多用户信息配置。
spring security 结合cas 单点登录系统 cas客户端的配置文件
CAS示例环境部署及配置
vmware平台的虚拟机迁移H3CCAS平台虚拟机化格式转换
CAS 介绍 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: 开源的企业级单点登录解决方案。 CAS ...
cas-server-webapp 4.0.0添加mysql数据源
cas 3.5配置指南