RAC(Real Application Cluster)“实时应用集群”,以前称作OPS(Oracle Parallel Server)“甲骨文并行服务器”,是Oracle新版数据库中采用的一项
高可用性新技术之一,也是Oracle数据库支持网格计算环境的核心技术。用来在集群环境下实现多机共享数据库,以保证应用的高可用性。同时可以自动实现并
行处理及均分负载(把负载平均分配到集群中的各个节点,以提高系统的整体吞吐能力),还能实现数据库在故障时的容错和无断点恢复。
高并发访问时,对应用服务器的负载均衡,只会减小单体应用服务器的高并发压力。并不会对oracle数据库服务器减小压力。什么样的并发量会做应用集群
,和网络环境、硬件环境、代码质量都有些关系。主要针对业务复杂度,高并发时对应用服务的压力。
Oracle RAC原理
在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个
共享存储设备。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的
负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问共享存储设备。
逻辑结构上看:
每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。
每一个节点的linstance都有自己的SGA。
每一个节点的linstance都有自己的background process。
每一个节点的linstance都有自己的redo logs。
每一个节点的instance都有自己的undo表空间。
所有节点都共享一份datafiles和controlfiles。
三类Resource:
VIP - 虚拟IP地址(Virtual IP)
OCR - Oracle Cluster Registry(集群注册文件),记录每个节点的相关信息
Voting Disk,仲裁机制用于仲裁多个节点向共享节点同时写的行为,这样做是为了避免发生冲突。
Oracle的负载均衡技术是Oracle rac提供的主要技术之一,目的是通过算法把大量的连接分到不同的节点上去,从而实现负载的均衡。不过这种算法计算的是连接数,而不是节点上的真实负载,所以有些时候我们会发现,应用分布并不是十分的理想。对于oracle10g来说,也可以通过service来限制连接在某个或某些实例上,从而达到负载均衡的效果。
负载均衡分为3种
1.服务器端的负载均衡
2.客户端的负载均衡
3.服务器端和客户端混合的负载均衡
.../ORACLE_HOME/network/admin/tnsnames.ora文件配置:
“客户端的负载均衡”主要是通过为tnsnames.ora增加load_balance=yes条目来实现。
... RAC = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = jasmineflower)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.55)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gobo5) ) ) ...
如果未开启load_balance=yes时,Oracle Net会根据地址列表按顺序来选择一个进行连接,直到连接成功为止。 如果第一个host主机连接失败,在有多个地址的情形下,
接下来选择第二个地址连接,依此类推,直到连接成功为止。
当开启load_balance=yes时,则Oracle Net会从多个地址中随机地选择一个地址进行连接,直到连接成功为止。
注意,此连接方式仅根据地址列表随机选择,并不考虑到各个实例上当前真正连接数量的多少,也就是没有考虑各个节点真实的连接负载情况。
“服务器端监听器”(Listener)收集到的信息来将新的连接请求分配到连接数较少实例上的实现方式。Oracle RAC服务器端的负载均衡是根据RAC中各节点的连接负荷数情
况,将新的连接请求分配到负荷最小的节点上去。当数据库处于运行时,RAC中各节点的PMON进程每3秒会将各自节点的连接负荷数更新到
service_register。而对于节点中任意监听器故障或监听器意外失败时,PMON进程会每1秒钟检查当前节点上的监听是否重启,以获得最新的负载信息来及时调整负载均衡。
# Generated by Oracle configuration tools. #服务器端负载均衡配置:为tnsnames.ora添加相应的网络服务名(每个节点配置) remote_lsnr_gobo5 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.55)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.56)(PORT = 1521)) ) local_lsnr_gobo5a = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.55)(PORT = 1521)) ) local_lsnr_gobo5b = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.56)(PORT = 1521)) ) #设置remote_listener参数 # alter system set remote_listener='<net_service_name>' scope=both sid='*'; #net_service_name为remote_lsnr_gobo5
Oracle RAC优点:
Oracle RAC支持Oracle9i、10g、11g版本,可以支持24 x 7有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。
在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
(1) 多节点负载均衡;
(2) 提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化;
(3) 通过并行执行技术提高事务响应时间----通常用于数据分析系统;
(4) 通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统;
(5) 节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;
(6) 可扩展性好,可以方便添加删除节点,扩展硬件资源。
RAC为大多数关键业务要求的数据库环境提供了极高的性能和完善的纠错功能。允许集群系统或大型并行系统中的多个节点共享同一物理数据库。可以自动允许
负载平衡、故障修复和规划停机时间,以支持高可用性应用程序。还可显著提高了大型数据仓库和决策支持系统的性能。通过和并行查询选件结合,还提供了节点
间的并行性和节点内的并行性,以得到更高的性能。
当并行服务器中某节点失效,透明的应用程序容错能够把用户自动转换到另一个节点上继续运行,应用程序在用户没有察觉的情况下继续执行。这是周期性和非
周期性发生故障的系统增大了连续可用性。进程的失效可以完全透明地转移到另一个节点上去,通过适当地配置,可以指定所有查询都在客户端进行缓存,这样它
们便可以在转移后的节点上重新设置。并还可以在没有失效时预先与容错节点建立一个连接,这样可以减少容错时在连接所花的时间。
Oracle RAC缺点:
(1) 相对单机,管理更复杂,要求更高;
(2) 可能会增加软件成本
具有Cache Fusion体系结构的Oracle Real Application Cluster为企业电子商务应用可发提供优势:
①电子商务应用的灵活和毫不费力的伸缩性,应用程序可以登录到单独的虚拟高性能集群服务器。向服务器添加节点非常容易,并当需要添加处理节点或者业务需求变化时,不用手工的对数据进行分区。对于所有的应用即时提过集群的可伸缩性(不用修改应用程序)。②较之传统的集群数据库体系结构的高可用性解决方案,该体系结构为客户提供了几乎连续的数据访问,使硬件和软件故障导致的业务中断最小化。系统具备对多个节点失败的容错能力,使部件失败屏蔽开最终用户。
③单独的管理实体,为了进行所有管理操作,在集群中保持一个单独的系统映像。DBA一次性地进行安装、配置、备份、升级及监控等功能,然后Oracle管理功能在动分配到适宜的节点。这意味着DBA只管理着一个虚拟服务器。
④Cache Fusion保存了所有的Oracle客户在他们电子商务应用中学习和开发Oracle的投资。所有单节点数据库功能都保留下来,并且应用程序使用相同标准的Oracle接口连接到数据库上。
1:可伸缩性
基于RAC的电子商务应用的用户或者中间层应用服务器客户,可以通过虚拟数据库服务名连接到数据库上。Oracle在集群中多个节点之间自动平衡用户负载。不同节点上的RAC数据库实例预定所有数据库服务或部分子集数据库服务。这使得DBA高度灵活地选定,连接到特定数据库服务的特定应用程序客户是否可以连接到某些或全部的数据库节点。
虽然每一个节点有一个不同的物理IP地址时,应用客户仍可以在一个逻辑数据库服务名的水平上进行连接。因此客户端对于不相关的事情如多服务器的多个地址可以毫不关心。
随着业务的增长,电子商务可以从容地增加处理能力。Cache Fusion体系结构直接地利用新节点的CPU和内存资源。DBA无需手工对数据重新分区。这个优点是这种体系结构的副产品,因为有透明度的数据存取时Cache Fusion的一项基本功能。
Cache Fusion体系机构自动适应快速变化的电子商务需求及随之而来的工作负荷的改变。DBA也不必因为工作负荷变化而对数据进行手工的重新分区。RAC通过动态地重新分配数据库资源,从而在节点之间用最小化的磁盘I/O和低的延迟通信来优化利用集群系统资源。这使得RAC可以从容实现增加的应用吞吐量和优化的响应时间。
2:高可用性
RAC提供了真正的高可用性解决方案,关键的突破是在大多数据库恢复期间能提供完整的数据库访问。这使得RAC成为电子商务应用所需求的24*7可用性的最佳平台。
RAC在高可用性上关键领域:
提供了数据库恢复期间的数据块访问
透明的失效转移对最终用户屏蔽了系统失效
N-1节点失效的容错能力
只要有一个数据库节点幸存,RAC就能够提供完全的数据库访问和相对不间断的操作。
3:可管理性
RAC实现了真正意义上的一个单系统访问数据库,它提供了从任何节点到所有磁盘设备和远程高速缓存进行无缝数据访问能力。此单系统映像延伸到所有数据库管理操作。安装、配置、备份、升级及监控等操作只需进行一次,然后会自动发布到集群中所有节点上去。
各种Oracle工具(如Oracle Universal Installer、Database Configuration Assistant、Recovery Manager)将发现集群数据块中所有不同的节点并以他们为目标分配给想得到的任务。
通过为特定管理操作选择多个目标节点,管理任务在数据库集群中多个节点上执行。这为电子商务管理其环境带来了极大的可伸缩性上经济实惠。例如:向数据库集群添加一个节点只会增加最小的管理任务。这样RAC支持在线电子商务应用和决策支持之类的应用,并且为数据访问和管理提供了单一的虚拟高性能服务器。
致谢:本文,学习,借鉴于网络,O(∩_∩)O谢谢!