ITPub博客

首页 > 数据库 > Oracle > 浅谈负载均衡

浅谈负载均衡

原创 Oracle 作者:Otakuzel 时间:2016-01-07 23:20:25 0 删除 编辑
客户端的负载均衡
oracle的客户端负载均衡功能是客户端能够像所有可用侦听器发出连接请求。oracle网络服务遍历一个轮循序列中的协议地址列表,平衡各个侦听器上的负载。这通常称为“客户连接时间负载均衡”。没有客户端负载均衡,oracle网络就会一次便利协议地址列表,直到成功为止,下图为客户端的负载均衡
客户端负载均衡是通过tnsname.ora中设置参数LOAD_BALANCE=ON设置的Load_Balance=on来定义的,当这个参数设置为on时,oracle网络服务遍历一个随机序列中的侦听器地址列表,平衡各个监听器上的负载,当设置为off的时候,就会依次尝试这些地址知道成功位置。这个参数必须在“网络服务”名称中正确制定,默认情况系这个参数是设置为on的,当在连接定义中使用SCAN时,Oracle数据库以轮循方式随机链接到可用SCAN侦听器执意,平衡3个SCAN侦听器上的连接。下面是4节点rac中tnsname的配置
在从用户接受使用以上连接细节的连接请求时,SCAN将以轮循的方式连接但SCAN定义的SCAN侦听器之一,一旦SCAn链接到一个SCAn侦听器,SCAN侦听器就会找到提供所需服务的,负载最少的集群数据库实例,一旦找到了负载最少的实例,SCAN侦听器将客户端重新引导至运行此集群数据库实例的集群节点,由这个节点上的本地侦听器将客户端连接到数据库实例
负载均衡客户端方法的缺点之一就是客户端连接不能测量它尝试连接实例/节点上的负载和其他资源消耗因素。因此,如果不能快速做出相应,那么可能会发生超时。


服务器负载均衡
服务器负载均衡的核心“动态服务注册”,所有集群节点上的侦听器和集群中的其他监听器一起在这里注册自身。以了解集群中数据库提供的数据库实例和服务。动态服务注册由PMON实现,无论实例和调试程序程序位于何处,侦听器都可以从PMON哪里了解到所有实例和调试程序,根据负载信息,一个侦听器可以决定将传入的客户端请求发送给哪个实力,如果配置共享服务器,那么决定将其发送给哪个调度程序
在一个共享服务器配置中,一个侦听器按照以下顺序选择一个调度程序:
(1)负载最少的节点
(2)负载最少的实例
(3)针对该实力负载最少的调度程序
在一个专用服务器配置中,一个侦听器按照以下顺序选择实例:
(1)负载最少的负载
(2)负载最少的实例
初始化参数remote_listener用于启用侦听器-连接负载均衡

总而言之(在没有外部硬件的情况下)oracle提供了两种不同的负载均衡,即客户端负载均很和服务器负载均衡。下面是要记住的要点:
1.通过设置tnsnames.ora的一个参数可以影响到客户端的负载均衡。它只是分成均衡地在所有实力上分发会发,并不考虑一个特定会话是否已经承担过多的负载,或者一个特定实例的负载是否很严重。
2.服务器端负载均衡受init.ora和remote_listener参数的影响,他考虑了实例的负载情景,而不是只考虑每个实例中会话数。
3这两种负载可以同时使用,因此有可能存在一种情况:客户端负载均衡将一个连接引导到特定侦听器,而侦听器可能将这个引导到不同节点的一个实例。

客户端

1、客户端的负载均衡配置较为简单,仅仅是在客户端的tnsnames.ora添加 LOAD_BALANCE = yes |on 
2、其连接分配原则是根据tnsnames.ora中连接标识符下的ADDRESS列表随机选择来进行与服务器之间的连接
3、如果选择列表中的某个节点listener或instance不可用,则再从剩余的ADDRESS列表随机选择,直到成功为止

服务端

 1、服务器端的负载均衡需要配置remote_listener参数,而该参数的值依赖于tnsnames.ora的连接字符串
 2、对于基于服务器端的连接负载均衡,监听器会根据当前节点、实例上的连接负载情况进行转发到空闲的实例 
 3、转发的依据仅仅是当前节点监听的连接数量的多少,而非当前实例的过度负载
 4、从上面的测试可以得出,各个节点的连接并不算均衡,是相对的均衡,因此应结合客户端连接负载协同工作
 5、对于当前实例的过度负载的情形,应结合配置service方法来实现负载均衡  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30604784/viewspace-1973526/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-12-01

  • 博文量
    58
  • 访问量
    205239