对于专业的数据处理存储的
Oracle
ARC而言,
负载均衡
的设置就更为重要了。那么如何对
Oracle
负载均衡
进行配置呢?就让我们一起看看本文来学习一下吧。我们将从客户端和服务器端来进行解说。
RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = ON)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)
这样当客户端连接RAC数据库时,会随机在TNS里面挑个监听地址进行连接,在
Oracle
10g以前,假如有节点宕机或者类似事故时,客户端可能还是选择连接到这个节点,这样会发生较长时间的TCP等待超时,而在10g以后,由于VIP和FAN的引入,这样的情况可以得到很大程度的改善,客户端的
Oracle
负载均衡
在通常情况下能够较好地工作,但是由于连接是在客户端随机发起的,这样客户端并不知道RAC各节点的负荷及连接数情况,有可能负荷大的节点还会源源不断地增加新的连接,导致RAC节点无法均衡工作,
从
Oracle
10g开始,服务器端的
Oracle
负载均衡
可以根据RAC中各节点的负荷及连接数情况,而判定将新的客户端连接分配到负荷最小的节点上去,RAC中各节点的PMON进程每3秒会将各自节点的负荷(包括LOAD,最大LOAD,CPU使用率)及连接数更新到service_register里面,然后假如节点的负荷有发生变化,将会通知到监听程序,由监听程序再决定新的客户端连接分配至哪个节点,假如RAC中一个节点的监听失败了,PMON每一分钟会去检查一次是否已经恢复正常,
服务器端的监听配置是在各节点的tnsnames.ora里面添加一个连接到各个节点监听的条目,然后再在初始化参数里面设置remote_listeners这个参数,比如:
LISTENERS_RAC =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
)
ALTER SYSTEM SET REMOTE_LISTENER = LISTENERS_RAC;
同时,Oracle MMNL进程会统计Service goodness,它是衡量一个实例能够为一个服务提供资源的指标,数值越大说明吸引力越强,能够提供更多的连接服务。统计的结果存放在 GV$SERVICEMETRIC and GV$SERVICEMETRIC_HISTORY。
转载于:https://blog.51cto.com/19880614/1135121