jony413

多媒体信息发布、排队叫号、医院分诊、电子班牌

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

十一、HALB
(一)、failover
1client-side connect time failover
客户端tnsnames中配置多个地址,发起请求时,先从第一个尝试,如果尝试失败,则继续尝试下一个,直接连接成功或遍历所有地址。
缺点:只在建立建立的那个时刻才起作用。一旦连接建立之后,节点出现故障,不做任何处理。对于weblogictomcat之类中间件都是启动时就建立若干到数据库的长连接,在生命周期内重用这些连接,因此client-side connect time failover对此没有多大帮助。
客户端tnsnames中添加 failover=on开启这种机制,默认开启,即无需配置。
2TAFtransparent application failover
连接建立以后,应用系统运行过程中,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他健康的实例上。
需要客户端在tnsnames中配置failover_mode:主要有4个选项。
methodbasicpreconnect
typeselectsession(对于未提交事务都会自动回滚)
delayretires
3service-side TAF
TAF是在客户端配置,而service-side TAF的配置保存在数据字典中,省去了客户端的配置工作。配置参数上,和TAF相比,service-side TAF多了一个instance rolepreferredavailabled

要想使用service-side TAF,必须配置service。可以使用dbcasrvctl来配置service。推荐使用dbca来配置service
无论是使用dbca还是使用srvct都无法配置TAFtypedelayretires3个属性,必须使用dbms_service包来修改。
begin
DBMS_SERVICE.MODIFY_SERVICE
(
   service_name => 'taf', 
   failover_method => dbms_service.failover_method_basic,
   failover_type => dbms_service.failover_type_select,
   failover_retries => 180,
   failover_delay   => 5
);
end;
4、测试
客户端/etc/hosts中添加
192.168.5.233 zhh1-vip
192.168.5.234 zhh2-vip
 
tnsnames中添加:
hui_taf =
        (DESCRIPTION =
                (ADDRESS = (PROTOCOL = TCP)(HOST = zhh1-vip)(PORT = 3173))
                (ADDRESS = (PROTOCOL = TCP)(HOST = zhh2-vip)(PORT = 3173))
                (LOAD_BALANCE = yes)      
                (CONNECT_DATA =
                        (SERVER = DEDICATED)
                        (SERVICE_NAME = hui)        
                        (FAILOVER_MODE = 
                                (TYPE = select)
                                (METHOD =basic)
                                (RETRIES = 180)
                                (DELAY = 5)
                        )
                )
        ) 
 
hui_cl =
        (DESCRIPTION =
                (ADDRESS = (PROTOCOL = TCP)(HOST = zhh1-vip)(PORT = 3173))
                (ADDRESS = (PROTOCOL = TCP)(HOST = zhh2-vip)(PORT = 3173))
                (LOAD_BALANCE = yes)      
                (CONNECT_DATA =
                        (SERVER = DEDICATED)
                        (SERVICE_NAME = hui)        
                )
        )
第一个窗口,使用hui_taf
 
(二)、HA框架
clusterware作为一个独立的产品发布,可以作为任何第三方产品提供集群基础服务。除了与RAC的接口之外,CRS还提供了一组高可用性的应用程序接口(API),用来搭建一般应用程序的高可用集群,即一般我们常说的双机热备,比如使用CRS实现MySQL的双机热备。
这种主备模式的双机热备还可以包括许多第三方的应用程序,比如虚拟IP、磁盘组、文件系统、MySQL数据库、Apache,或者单节点的Oracle实例,或者单节点的ASM,等等,都可以作为资源注册到CRS中去,由CRS来启动,关闭,监测应用程序的状态,还可以设置应用程序相互的依赖关系,保证多组资源正确的启动顺序。
 
(三)、LoadBalance
connection balance纯技术的分散负载
service 面向业务的分散负载
 
1connection balance纯技术的分散负载
分为client-side loadbalancehserver-side loadbalance
1)、client-side loadbalanceh
客户端tnsnames中配置load_balance=yes
当客户端发起连接时,从地址列表中随机选择一个,再使用随机算法把连接请求分散到各个实例。
缺点:分配连接时没有考虑到每个节点的真实负载,最后分配不一定是平衡的,甚至分配到故障节点上。
2)、server-side loadbalance
依赖于listener收集的负载信息。在数据库运行过程中,pmon进程会收集系统的负载信息,然后登记到listener中,最少1分钟,最多10分钟,pmon就要做一次信息更新,并且节点的负载越高,更新频率就越高,以保证listener能够掌握每个节点的准确负载情况。
更新情况在listener.log中可以查看到。
pmon进程不仅会向本地的listener注册,还可以向其他节点的listener注册。因此配置server-side loadbalance需要配置remote_listener这个参数。
有了pmon的自动注册机制后,集群每个节点的listener都掌握所有节点的负载状态,当收到客户端的连接请求后,就会把连接转发给负载最小的节点。
dedicate连接:listener首先选择负载最小的节点,如果多个节点负载相同,则从中选择负载最小的实例。
shared连接:除了比较节点和实例的负载之外,还要选择负载最小的dispatcher
 
client-side loadbalancehserver-side loadbalance两种方式不是互斥的,二者可以一起工作。用户的连接请求会先从地址列表中随机选择一个,然后向该地址的listener发出请求,listener接到请求后,根据各节点的负载情况挑选出最合适的节点,然后转发连接请求。
 
2service 面向业务的分散负载
分而治之的思想,需要dba和开发人员合作,按照业务功能模块划分成service,进而把每个service固定到某些节点上,提高系统的性能。
 
十二、参考
12 Day + Real Application Clusters Guide
2Database Oracle Clusterware and Oracle Real Application Clusters Installation Guide for Linux
3Oracle Database 10g: Real Application Clusters Student Guide
4Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide
5、大话 Oracle RAC一书
6google

posted on 2013-01-20 10:50  jony413  阅读(240)  评论(0)    收藏  举报