Oracle RAC 服务器端连接负载均衡(Load Balance)

Oracle RAC服务器端的负载均衡是根据RAC中各节点的连接负荷数情况,将新的连接请求分配到负荷最小的节点上去。当数据库处于运行时,RAC中各节点的PMON进程每3秒会将各自节点的连接负荷数更新到service_register。而对于节点中任意监听器故障或监听器意外失败时,PMON进程会每1秒钟检查当前节点上的监听是否重启,以获得最新的负载信息来及时调整负载均衡。本文主要演示SUSE 10 + oracle 10g rac下的服务器端的负载均衡。

有关客户端的负载均衡可参考

有关Oracle 网络配置相关基础以及概念性的问题请参考:

一、服务器端负载均衡配置

  1. 1、为tnsnames.ora 添加相应的网络服务名(每个节点配置) 
  2.   oracle@bo2dbp:~> more $ORACLE_HOME/network/admin/tnsnames.ora 
  3.   # tnsnames.ora Network Configuration File: /u01/oracle/db/network/admin/tnsnames.ora 
  4.   # Generated by Oracle configuration tools. 
  5.    
  6.   remote_lsnr_gobo4 = 
  7.     (ADDRESS_LIST = 
  8.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521)) 
  9.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521)) 
  10.     ) 
  11.    
  12.   local_lsnr_gobo4a = 
  13.     (ADDRESS_LIST = 
  14.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521)) 
  15.     ) 
  16.    
  17.   local_lsnr_gobo4b = 
  18.     (ADDRESS_LIST = 
  19.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521)) 
  20.     ) 
  21.      
  22. 2、设置remote_listener参数 
  23.   alter system set remote_listener='<net_service_name>' scope=both sid='*'
  24.    
  25.   SQL> show parameter instance_name 
  26.    
  27.   NAME                                 TYPE        VALUE 
  28.   ------------------------------------ ----------- ------------------------------  
  29.   instance_name                        string      GOBO4A 
  30.   SQL> show parameter listener 
  31.    
  32.   NAME                                 TYPE        VALUE 
  33.   ------------------------------------ ----------- ------------------------------  
  34.   local_listener                       string 
  35.   remote_listener                      string 
  36.    
  37.   SQL> alter system set remote_listener='remote_lsnr_gobo4' scope=both sid='*'
  38.    
  39.   System altered. 
  40.  
  41. 3、配置客户端tnsnames.ora 
  42.   -->客户端为suse 10  
  43.   SZDB:~ # ifconfig eth1 | grep "inet addr"|cut -d " " -f12|cut -d : -f2  #--客户端主机的ip  
  44.   192.168.7.2 
  45.   SZDB:~ # su - oracle 
  46.   oracle@SZDB:~> tail -10 $ORACLE_HOME/network/admin/tnsnames.ora 
  47.   GOBO4 = 
  48.     (DESCRIPTION = 
  49.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521)) 
  50.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521)) 
  51.       (LOAD_BALANCE = off)   #--由于仅仅测试寄予服务器端的负载均衡,因此关闭客户端负载均衡选项  
  52.       (CONNECT_DATA = 
  53.         (SERVER = DEDICATED) 
  54.         (SERVICE_NAME = GOBO4) 
  55.       ) 
  56.     ) 
  57.   #Author : Robinson Cheng 
  58.   #Blog :   http://blog.csdn.net/robinson_0612   
  59.    
  60. 4、检查监听情况 
  61.   oracle@bo2dbp:~> lsnrctl status 
  62.   Listening Endpoints Summary... 
  63.     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.61)(PORT=1521))) 
  64.     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.51)(PORT=1521))) 
  65.   Services Summary... 
  66.   Service "+ASM" has 1 instance(s). 
  67.     Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service... 
  68.   Service "GOBO4" has 2 instance(s). 
  69.     Instance "GOBO4A", status READY, has 2 handler(s) for this service... 
  70.     Instance "GOBO4B", status READY, has 1 handler(s) for this service.. 
  71.   ....... 
  72.    
  73.   oracle@bo2dbs:~> lsnrctl status 
  74.   Listening Endpoints Summary... 
  75.     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.62)(PORT=1521))) 
  76.     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.52)(PORT=1521))) 
  77.   Services Summary... 
  78.   Service "+ASM" has 1 instance(s). 
  79.     Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service... 
  80.   Service "GOBO4" has 2 instance(s). 
  81.     Instance "GOBO4A", status READY, has 1 handler(s) for this service... 
  82.     Instance "GOBO4B", status READY, has 2 handler(s) for this service... 
  83.   .......... 
  84.  
  85.   #--如果监听或数据库需要重启异常请考虑重新启动监听器或数据库  
  86.   #--下面清空监听日志以便于后续统计连接信息  
  87.   oracle@bo2dbp:/u01/oracle/db/network/log> cat /dev/null>listener_bo2dbp.log 
  88.   oracle@bo2dbs:/u01/oracle/db/network/log> cat /dev/null>listener_bo2dbs.log 

相关推荐