zoukankan      html  css  js  c++  java
  • 负载均衡和故障转换(Failover)的连接RAC方法

    TAF:Transparent Application Failover,透明的应用切换,即在切换的过程中,用户感知不到。可以实现会话的切换(无法实现事务的切换,即没有提交的事务会回滚),即在不断开连接的情况下,将当前会话切换到另一个实例。JDBC驱动无法使用TAF特性,因此只能断开连接并重新连接。

    SCANIP+SERVICE实现负载均衡和TAF

    1.配置SERVICE

    以上为添加Service的语法,重点关注几个选项。

    -d 给哪一个数据库添加service,有可能clusterware管理好几个数据库

    -s 新建的service的名称

    -r 优先选择哪一个实例,实例间用逗号隔开

    -a 优先选择的实例全部不可用时使用这里面的实例。

    -r 内的实例是负载均衡的,-r和-a之间是FailOver的,因此两节点的实例需要负载均衡的话,应该讲两节点实例都写入-a中

    -p 一般选择basic,perconnect即在其中一个实例建立会话的时候,在另一个实例上面也新建一个连接。当第一个实例不可用时,可以实现会话的快速转移。但是,这种方法想到耗费资源、

        basic,只有当实例1的不可用时,才在实例2创建会话并将会话转移过来

    -y 自动FAILOVER还是手动FAILOVER

    -e session的话是FAILOVER的时候不会返回剩余的SELECT结果集。SELECT不会断开会话,未提交的事务回归。select语句返回剩余的结果集、

    -m 一般与-p参数相同

    -w 失败重试的时间间隔

    -z 失败重试几次

    [oracle@rac01 ~]$ srvctl add service -d racdb -s rac -r racdb1,racdb2 -P BASIC -y AUTOMATIC -e select -m BASIC -w 3 -z 10
    [oracle@rac01 ~]$ srvctl start service -d racdb -s rac
    [oracle@rac01 ~]$ srvctl config service -d racdb -s rac

    2.配置客户端TNS

    DG=
      (DESCRIPTION=
        (ADDRESS=
          (PROTOCOL=TCP)
          (HOST=10.206.132.238)
          (PORT=1521)
        )
        (CONNECT_DATA=
          (SERVER=dedicated)
          (SERVICE_NAME=rac)
        )
      )

    中间10.206.132.238是SCANIP,SERVICE_NAME是Service的名称

    测试负载均衡:使用swingbench压测工具,创建50个连接,执行如下SQL可以看到,50个连接平均的分配到两个实例上

    测试TAF:JDBC无法使用TAF特性,因此不要使用JDBC类客户端,这里直接用SQLPLUS进行测试

     连接后,查询到会话在实例1上面

     

    重启实例1所在服务器,再次查询

    这时打开连接数据库的sqlplus发现并没有断开,而且依旧可以执行命令

    配置本地TNS实现负载均衡和TAF

    1.删除上一步创建的service

    2.配置本地的TNS

    MONKEY=
      (DESCRIPTION=
        (FAILOVER=on)
        (LOAD_BALANCE=on)
        (ADDRESS_LIST=
          (ADDRESS=
            (PROTOCOL=TCP)
            (HOST=10.206.132.237)
            (PORT=1521)
          )
          (ADDRESS=
            (PROTOCOL=TCP)
            (HOST=10.206.132.238)
            (PORT=1521)
          )
        )
        (CONNECT_DATA=
          (FAILOVER_MODE=
            (TYPE=select)
            (METHOD=basic)
          )
          (SERVER=dedicated)
          (SERVICE_NAME=racdb)
        )
      )

    10.206.132.236和10.206.132.238是两个VIP。连接的时候会随机选择一个IP实现负载均衡。

    这种情况下,没有测出来负载均衡,但是可以实现TAF

    SCANIP和SERVICE实现TAF,并分业务(不用负载均衡)

    [oracle@rac01 ~]$ srvctl add service -d racdb -s rac01 -r racdb1 -a racdb2 -P basic -y automatic -e select
    [oracle@rac01 ~]$ srvctl add service -d racdb -s rac02 -r racdb2 -a racdb1 -P basic -y automatic -e select
    [oracle@rac01 ~]$ srvctl start service -d racdb
    [oracle@rac01 ~]$ srvctl status service -d racdb

    客户端连接

    sqlplus monkey/monkey@10.206.132.239:1521/rac01
    sqlplus monkey/monkey@10.206.132.239:1521/rac02

    可以实现业务分离和TAF

    本地TNS实现TAF,并分业务(不用负载均衡)

    MONKEY=
      (DESCRIPTION=
        (ADDRESS_LIST=
          (FAILOVER=on)
          (LOAD_BALANCE=off)
          (ADDRESS=
            (PROTOCOL=TCP)
            (HOST=10.206.132.237)
            (PORT=1521)
          )
          (ADDRESS=
            (PROTOCOL=TCP)
            (HOST=10.206.132.238)
            (PORT=1521)
          )
        )
        (CONNECT_DATA=
          (FAILOVER_MODE=
            (TYPE=select)
            (METHOD=basic)
            (RETRIES=10)
            (DELAY=3)
          )
          (SERVICE_NAME=racdb)
        )
      )
  • 相关阅读:
    HDU 5438 Ponds
    [HNOI2013]比赛
    [HNOI2009]最小圈
    【模板】高斯消元法
    控制公司 Controlling Companies
    sdut 2878 圆圈
    滑雪
    [ZJOI2010]排列计数
    [HNOI2003]激光炸弹
    [BZOJ 3732]Network
  • 原文地址:https://www.cnblogs.com/monkey6/p/13594138.html
Copyright © 2011-2022 走看看