高可用性通常用来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。一个高可用性HA框架是每个系统架构设计的重要考究部分。高可用性一般使用正常服务时间与运行总时间百分比进行测量,以下提供了一些参考数据:
可用性百分比 |
全年停机时间 |
95% |
18 天 |
99% |
4 天 |
99.9% |
9 小时 |
99.99% |
1 小时 |
99.999% |
5 分钟 |
计划性停机(日常维护升级)和计划外的宕机(系统崩溃)是评估系统可用性的两种不同停机情况。一个系统通常需要非常严格的对待未计划宕机,但是又需要一个灵活设计处理计划性停机。你需要选择不同的高可用性方案来处理这些不同的可用性失效切入点。Oracle Fusion Middleware拥有一系列高可用设计特性,可以保护组件和应用发生计划外的宕机故障,并且尽量缩短因日常维护操作所消耗的计划内停机时间。OFM的这些高可用HA设计主要表现为以下几点:
心跳检测与自动重启
对于运行于WebLogic Server上的Java EE组件,Node Manager监听着Managed Server,一旦发现Managed Server无响应,Node Manager会根据预先配置的次数重启Managed Server实例;
对于系统System组件,OPMN监听其运行进程,一旦发现该进程无响应,OPMN会根据预先配置的次数重启该系统组件;
集群
OFM通过WebLogic Server所构建的强大集群特性提供集群支持。这些集群特性包括冗余保护、失效转移、Session复制、JNDI服务集群、服务实例迁移等,详细说明参考文档http://docs.oracle.com/cd/E23943_01/core.1111/e10106/aa.htm
状态复制与路由
Oracle WebLogic Server能够配置为在应用之间复制状态,使用集群环境下的Managed Server维护备份应用状态信息。OFM对于状态复制主要有以下三种类型:
有状态组件,如:ADF 、WebCenter
无状态组件,如:Internet Directory、Oracle HTTP Server、Oracle Web Cache
有状态但没有复制特性组件,如:Oracle Forms 、Oracle Reports。这些组件由C语言编写,需要通过失效转移支持高可用性。
失效转移
在学习失效转移时,先了解两个概念。Session复制(Session replication)和Session粘性(Sessionsticky)。前者基于request的负载均衡的方案。负载均衡器根据每个node节点的状况,将每个request进行分发,多个node节点之间保持整个cluster的用户状态同步。后者基于用户的负载均衡,当用户发出第一个request后,负载均衡器动态的把该用户分配到多个node节点中的某一个,并记录该分配路由规则,后续该用户的所有request都将于这个node绑定,用户只会与该服务实例发生交互。前者的优点在与集群环境中只要有一个node存活,用户用户状态都不会丢失,cluster都能够继续工作;而缺点是
集群node之间通信频繁,响应速度有影响,多并发、高频操作的情况下性能下降比较厉害。后者的优点是响应速度快,多个节点之间无须通信;而缺点是当这个被绑定粘住的node挂掉,那么与之相粘的用户Session状态也随之丢失。
在OFM的集群架构设计中,Managed Server作为Java EE的容器组件,通常有一个Web服务器,如Oracle HTTP Server。它们设计为集群架构运行于Managed Server的前端,通过Web服务代理的插件(mod_wl_ohs)为Managed Server在运行期间提供复制均衡的作用。当一个Managed Server不可用时, mod_wl_ohs会将请求路由分发到另外一个维护了同样Session的Managed Server中,在失效转移的过程中保证了会话状态的同步迁移。对于OFM有状态组件均是使用Session复制的架构设计;而对于OFM无状态组件一般通过负载均衡器完成请求分发,负载均衡器被配置为拥有心跳测试机制,当侦听到一个Managed Server不可用时,负载均衡器将会路由选择另外一个Managed Server,由于不关注状态,因此此项技术相关成熟,可以准确无误的处理高并发请求;而对于OFM有状态但没有复制特性组件一般设计为Session粘性的价格,一旦与用户粘性的node节点不可用,用户的请求将会转移到一个新的node节点进行处理,用户需要在该节点重建会话状态。
服务迁移
在WebLogic Server集群,大多数服务组件均匀部署在集群中的所有服务器实例,使得发生故障时可以透明的从一台服务器的转移到另一个。 而一些“固定服务”,如JMS和JTA事务,WebLogic Server支持故障恢复 ,而不是进行故障转移。
根据迁移的不同级别,OFM拥有不同的策略。对于整个的服务器迁移级别,发生故障的WebLogic Server服务器的所有集群实例或组件可以迁移到另外不同的物理机器上;对于服务迁移级别,服务或组件可以迁移到集群环境中的另外一个node节点实例;对于JMS和JTA事务这样特殊的服务,OFM提供了自动和手动两种方式迁移。当故障发生时,OFM会首先尝试在部署这些特殊服务的设备上重启服务,若重启服务失败,这些服务将会转移到另外的设备节点实例运行。另外,也允许手动初始化这些服务。
集成高可用
Oracle融合中间件有一个全面的功能,围绕利用Oracle RAC数据库的可用性和伸缩性的负载平衡和故障转移设置。
对于XA兼容的应用程序,如Oracle SOA组件,WebLogic服务器作为一个事务协调员,并确保分布式事务处理都运行于一个Oracle RAC实例。
当事务服务在托管的服务器出现故障的情况下自动迁移到集群中的另一个节点,并执行事务恢复。
对于Web服务器和应用服务器之间的通信,代理插件(如mod_wl_ohs)有一个内置的负载均衡和故障切换功能,可以将request请求准确无误的重新路由到可用的群集成员node节点实例中。
滚动式补丁升级修复
Oracle WebLogic服务器允许滚动的方式进行补丁升级,而不必关闭整个群集进行修补。集群的滚动修补期间,服务器集群中的每个单独修补和重新启动,而在集群中的其他服务器继续托管您的应用程序。
配置管理
大多数OFM的组件都可以配置为集群级别。 OFM使用WebLogic Server的集群管理的配置管理提供组件集群选项。如数据源、EJB、JMS、应用程序构件、ADF和WebCenter自定义应用程序等。
另外,还有一个中央MDS存储信息库,它为集群的所有组件成员提供额外的应用程序级组件配置。 这些组件成员包括:Oracle SOA、Oracle WebCenter、应用程序构件、SOA组件(BAM、BPM、OSB)等。
备份与恢复
OFM的备份与恢复是基于中间层组件的文件系统复制的一个简单易用的解决方案。 RMAN用于Oracle数据库。 OFM也支持为在线联机备份,可以整合现有的备份和恢复工具,或通过使用OFM企业管理器 Enterprise Manager Tools或计划作业排定的备份任务。
在处理高可用性带来的问题时,往往需要很多技术方案和最佳实践。其中,最为重要的便是冗余保护机制。在OFM很多组件都有自身冗余保护的设计,你可以应用以下两种解决方案为应用实现高可用。
Active-Active 方案:部署两个或两个以上系统实例,可通过水平升级增加系统实例的方式提供高可用。在此方案中,所有系统实例都同时受理请求,通过负载均衡算法承担请求执行。
Active-Passive 方案:部署一个处于激活状态的系统实例处理用户请求,另外再部署一个处于就绪状态的系统实例作为备选。在两个实例之间建立心跳检查,但发现心跳测试失败或处理请求响应失效,则主从两个实例进行相互状态切换,以保证新的系统实例接管响应用户请求,旧的实例进入自我修复进程。
对于大多数应用场景,并且外部环境允许的条件下,强烈推荐使用Active-Active方案。该方案可以提供快速的失效转移、伸缩扩展性等特性最大化保障系统高可用性。而扩展性是非常重要的一个高可用性解决方案的设计,在Active-Active方案随着负载压力的上升,可以通过增加更多的服务实例或组件实现水平升级。而对于某些特殊场景,比如应用只允许有且仅有一个单例的服务实例存在,那么就应该使用Active-Passive方案。以下是一个Active-Passive方案的参考架构:
在参考架构中,激活实例与就绪实例通过共享存储的方式,对Web、应用、安全等Session会话进行复制和同步,同时使用了ORACLE DATA GUARD作为容灾备份方案。对于ORACLE DATA GUARD的详细介绍参考文档http://docs.oracle.com/cd/E17904_01/doc.1111/e15250/intro.htm。
从上述的参考架构中可以看出,OFM内置设计了很多负载均衡的特性,比如Web服务器到应用服务器、应用服务器到数据库服务器的路由。但OFM并没有提供容器外的负载均衡器,为了确保外部的负载均衡器可以与OFM集成应用,必须确保外部负载均衡器满足下述要求:
需求 |
描述 |
虚拟服务器和端口配置 |
可以在外部负载均衡器配置虚拟服务器名称和端口信息。虚拟服务器名称和端口必须满足以下要求: 1. 负载均衡器应该允许多个虚拟服务器的配置; 2. 对于每一个虚拟服务器,负载均衡器可以管理多个端口的通信。例如对于Identity Management,负载均衡器需要能够配置HTTP / HTTPS的通信,LDAP/LDAPS的通信; 3. 虚拟服务器的名称必须与IP地址关联,并作为整个DNS的一部分; 4. 客户端可以通过虚拟服务器名称访问负载均衡器; |
持久性/粘性 |
一些OFM组件使用外部负载均衡器的持久性或粘性。如果外部负载均衡器不容许你在URI级别设置Cookie持久性,为所有的HTTP通信设置Cookie持久性。在任何情况下,设置cookie的浏览器会话结束时到期。 |
资源监测/端口监控/过程的故障检测 |
配置外部负载均衡器进行服务服务和节点故障检测(例如通过通知或其他方式),并停止对失败节点的路由通信。你的外部负载均衡器需要具备自动检测故障的能力. |
Network Address Translation (NAT)网络地址转换(NAT) |
负载均衡器应该有能力执行网络地址转换(NAT),从客户端请求转换传送到OFM组件节点实例。 |
容错模式 |
强烈建议配置负载均衡器处于一个健康的容错模式,否则负载均衡器成为系统的单点故障。大多数软件负载均衡器实现该模式是基于可靠的解决方案作为一个单一的过程/拦截。 |
其他 |
强烈建议将虚拟服务器的负载均衡器配置为立即返回客户端请求的响应,并将后台运行的服务只为不可用。此项配置是基于客户端服务器在TCP/IP 设置的范围内,发生请求等待超时导致连接丢失,从而失去接收响应的机会。 |
相关推荐
高可用性存储系统设计有以下几个要点: 1. **RAID(Redundant Array of Independent Disks)**:通过磁盘冗余实现数据保护,常见的RAID级别有RAID 0、RAID 1、RAID 5、RAID 6等。 2. **双活/多活数据中心**:在...
1. 机柜冗余设计:使用多个机柜来存储数据和应用程序,以便在其中一个机柜出现故障时,其他机柜可以继续提供服务,确保系统的高可用性。 2. 服务器冗余设计:使用多个服务器来提供服务,以便在其中一个服务器出现...
此外,Spring框架可能是该系统的核心,它提供了依赖注入、AOP(面向切面编程)和模块化开发等特性,增强了系统的可维护性和可扩展性。 二、Java技术栈 1. Java SE(标准版):作为基础,Java SE提供了运行系统的...
在IT服务管理领域,IBM的可用性管理规划(Availability Management Planning)是一套系统化的方法论,旨在确保组织的系统、网络、应用、工作站和服务在客户需要时能够保持高可用性。这一理念深深植根于IT服务管理...
根据提供的信息,我们可以深入探讨关于“林业电子政务信息系统企业架构框架总体设计”的核心知识点。 ### 林业电子政务信息系统企业架构框架概述 林业电子政务信息系统是面向林业管理机构的一套集成化信息系统,...
在构建海量并发微服务框架时,首要目标是确保系统能够高效、稳定地处理高并发场景。微服务架构允许我们将大型...通过合理的架构设计和工具选用,可以构建出既能处理高并发,又能保证高可用性和可扩展性的微服务系统。
综上所述,OFM是一个集高效、易用、安全于一体的在线文件管理系统,其背后的技术原理与设计思路对于IT专业人士来说具有很高的研究价值。通过理解并掌握这些核心要素,我们可以为自己的企业或项目定制更符合需求的...
OpenStack云平台的高可用性是云计算管理平台设计的重要方面之一。在云计算中,高可用性意味着系统能够在计划内的日常维护或计划外的系统故障情况下,依然能够保证服务的连续性,最小化停机时间。这在云计算环境下尤...
以上这些知识点构成了"JAVA SMART系统-系统框架设计与开发"的主题,它们是构建高效、可扩展和维护性强的Java系统框架的基础。通过对这些技术的深入理解和实践,开发者可以创建出满足各种业务需求的智能系统。
"尼尔森十大可用性原则" 尼尔森十大可用性原则是 Якоб·尼尔森(Jakob Nielsen)提出的十个可用性原则...尼尔森十大可用性原则为产品经理提供了设计可用性产品的指导思想和原则,旨在提高产品的可用性和用户体验。
在设计高可用的分布式存储方案时,负载均衡技术是不可或缺的,它能够确保各个服务实例之间能够合理地分摊工作负载,避免因单个节点的故障而导致整个系统的瘫痪。同时,IP切换技术(如VRRP)可以保障网络的稳定性,...
然而,Hadoop在设计初期并没有充分考虑自身的高可用性问题,尤其是针对单点故障(Single Point of Failure,简称SPOF)的情况。因此,本文档提出了一种基于元数据复制的解决方案,旨在降低单点故障的风险,并确保...
高可用性通常指的是系统的高可靠性和可维护性,而强一致性(Strong Consistency)则是指系统中的数据一旦发生更新,所有的用户都能在下一个读操作时读到最新的更新。 在分布式数据库架构中,单点故障(Single Point...
可用性检测是评估产品设计是否易于使用的一个重要过程,尤其在医疗器材的设计和开发中,这一过程显得尤为重要。随着医疗设备和软件的复杂性不断提高,确保它们对用户友好、高效并且能满足用户的特定需求变得越来越...
在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用和系统框架设计与开发方面。本主题将深入探讨基于Java的系统框架设计与开发的关键知识点,这些知识点涵盖了软件工程的多个方面,包括但不限于设计原则、...
这个框架结合了Spring的核心IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)功能,SpringMVC作为负责处理HTTP请求的MVC框架,以及MyBatis作为轻量级的持久层框架,提供了...
软件框架设计的艺术 捷克 jaroslav lulach著,王磊,朱兴译
以上就是基于SSH框架的系统设计中涉及的主要技术点,这些知识对于理解和开发企业级Java Web应用至关重要。通过这样的毕业设计,学生不仅能够掌握Java编程和Web开发的基础,还能深入理解软件工程的实践过程,为未来的...
京东作为中国知名的...OFC系统的建设不仅仅是为了处理庞大数量级的订单,更在于保证交易的准确性、数据的完整性和系统的高可用性。这些技术和实践的成功运用,对于其他电商平台而言,同样具有重要的借鉴和参考价值。