• 2009-09-16

    客户端负载均衡及透明应用切换(TAF)tnsnames

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://zhutong7758.blogbus.com/logs/46602611.html

    客户端负载均衡及透明应用切换(TAF)

    这是客户端的一种功能,要在客户端的tnsnames.ora中设置本地服务命名相应的参数(LOAD_BALANCE=ON和FAILOVER=ON、FAILOVER_MODE参数)来启用客户端负载均衡和TAF功能。客户端负载均衡并不衡量RAC节点CPU的使用率,它只是随机的连接一个节点的监听。由于是随机连接,所以大体上做到连接数的负载均衡。在RAC环境中设置tnsnames.ora时,应使用SERVICE_NAME

    而不要使用SID,但是在使用RMAN进行备份和恢复时必须使用SID而不能使用SERVICE_NAME

     

    RAC双主模式时,客户端可以只使用一个本地服务命名(无预连接功能),或者使用两个本地服务命名(有预连接功能)

    具有客户端负载均衡及透明应用切换无预连接的tnsnames配置

     

    RAC9I =

     (DEscrīptION =

       (ADDRESS_LIST =

         (ADDRESS = (PROTOCOL = tcp)(HOST = rac9iaw)(PORT = 1521))

         (ADDRESS = (PROTOCOL = tcp)(HOST = rac9ibw)(PORT = 1521))

         (LOAD_BALANCE = ON)

         (FAILOVER = ON)

       )

        (CONNECT_DATA =

          (SERVICE_NAME = rac9i.xyf)

          (FAILOVER_MODE =

            (TYPE = select)

            (METHOD = basic)

            (RETRIES = 10)

            (DELAY = 1)

          )

        )

      )

     

    无客户端负载均衡有透明应用切换且有预连接的tnsnames配置

     

    RAC9I1 =

     (DEscrīptION =

       (ADDRESS_LIST =

         (ADDRESS = (PROTOCOL = tcp)(HOST = rac9iaw)(PORT = 1521))

         (LOAD_BALANCE = OFF)

         (FAILOVER = ON)

       )

        (CONNECT_DATA =

          (SERVICE_NAME = rac9i.xyf)

          (INSTANCE_NAME = rac9i1)

          (FAILOVER_MODE =

            (BACKUP=RAC9I2)

            (TYPE = select)

            (METHOD = preconnect)

          )

        )

      )

     

    RAC9I2 =

     (DEscrīptION =

       (ADDRESS_LIST =

         (ADDRESS = (PROTOCOL = tcp)(HOST = rac9ibw)(PORT = 1521))

         (LOAD_BALANCE = OFF)

         (FAILOVER = ON)

       )

        (CONNECT_DATA =

          (SERVICE_NAME = rac9i.xyf)

          (INSTANCE_NAME = rac9i2)

          (FAILOVER_MODE =

            (BACKUP=RAC9I1)

            (TYPE = select)

            (METHOD = preconnect)

          )

        )

      )

     

     

    参数的含义:

    LOAD_BALANE    FAILOVER

      ON             ON    客户端新建连接随机尝试ADDRESS_LIST中的监听,直到连接到一个可用监听,或者连完列表中的所有监听,如没有一个监听可用,则返回错误信息

     

      ON             OFF   客户端新建连接随机尝试ADDRESS_LIST中的任一监听,无论这个监听是否可用,如不可用直接返回错误。

     

      OFF            ON    客户端新建连接按顺序尝试ADDRESS_LIST中的监听,直到连接到一个可用监听,或者连完列表中的所有监听如没有一个监听可用,则返回错误信息

     

      OFF            OFF   客户端新建连接仅连接ADDRESS_LIST中第一个监听,无论这个监听是否可用,如不可用直接返回错误。

     

    对于已有连接的失败切换,首先要求FAILOVER = ON,并且设置了FAILOVER_MODE

     

    FAILOVER_MODE的子参数含义:

     

    TYPE:1)session---如果用户连接丢失,将创建一个新的会话连接到备用节点,用户的所有未提交的操作必须回滚,然后再次执行,SELECT操作也被中止.

         2)select---如果用户连接丢失,将使用游标和之前的快照继续执行SELECT操作,叫做SQL接管,SQL接管能够无缝接管理的事务类型只有SELECT语句.其它的操作也必须要回滚然后再次执行.

         3)none---客户端默认值,禁止SQL接管功能,主要用于测试的目地,在实际应用中TYPE应指定为session或者select

     

    METHOD:1)basic---仅仅在FAILOVER发生时才连接备用节点

             2)preconnect---在用户连接到主节点时同时也在备用节点产生一个连接会话,设置预连接模式,能够快速接管SQL

     

    RETRIES:当前节点失败后,失败切换功能会尝试连接备用节点,这个值确定了尝试的次数,如果仅DELAY被指定,RETRIES默认为5

     

    DELAY:两次尝试之间等待的秒数,如果仅指定RETRIES,DELAY默认为1秒

     

    BACKUP:指定另外一个用于备份连接的网络服务名,当RAC设置为主次模式时,使用此参数,并且METHOD应该设为preconnect

     

     

    RAC设置为主次模式时的tnsnames配置

    无客户端负载均衡(主次模式就不要客户端负载均衡了),有透明应用切换且有预连接的tnsnames配置

    RAC9I1 =

     (DEscrīptION =

         (ADDRESS = (PROTOCOL = tcp)(HOST = rac9iaw)(PORT = 1521))

    (ADDRESS = (PROTOCOL = tcp)(HOST = rac9ibw)(PORT = 1521))

         (LOAD_BALANCE = OFF)

         (FAILOVER = ON)

        (CONNECT_DATA =

          (SERVICE_NAME = rac9i.xyf)

          (INSTANCE_ROLE = PRIMARY)

          (INSTANCE_NAME = rac9i1)

          (FAILOVER_MODE =

            (BACKUP=RAC9I2)

            (TYPE = select)

            (METHOD = preconnect)

          )

        )

      )

     

    RAC9I2 =

     (DEscrīptION =  

    (ADDRESS = (PROTOCOL = tcp)(HOST = rac9ibw)(PORT = 1521))

    (ADDRESS = (PROTOCOL = tcp)(HOST = rac9iaw)(PORT = 1521))

         (LOAD_BALANCE = OFF)

         (FAILOVER = ON)

        (CONNECT_DATA =

          (SERVICE_NAME = rac9i.xyf)

          (INSTANCE_ROLE = SECONDARY)

          (INSTANCE_NAME = rac9i2)

          (FAILOVER_MODE =

            (BACKUP=RAC9I1)

            (TYPE = select)

            (METHOD = preconnect)

          )

        )

      )

     

    也可以设置为有透明应用切换但无预连接的模式,只要把上面的设置中的METHOD设置为basic。

     

    与双主模式时的配置相比,多了INSTANCE_ROLE这样一个参数,当这个参数为SECONDARY时,

    这个本地服务命名不直接接收连接,只在主节点失败后才会接收连接。不直接接收连接,并不是指在客户端不能连通这个服务命名,只不过这个连接会被路由到主节点,次要次点并不真正有连接连上去。

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qyq88888/archive/2009/08/23/4475328.aspx


    收藏到:Del.icio.us