连接时的故障转移和客户端负载均衡

当tnsnames.ora文件中包含至少2个协议地址的时候,用于指定故障转移和负载均衡的参数可以再文件中被包含。

sample1=
(DESCRIPTION=
   (SOURCE_ROUTE=yes)
   (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))    # hop 1
   (ADDRESS_LIST= 
     (FAILOVER=on)
     (LOAD_BALANCE=off)                                # hop 2
     (ADDRESS=(PROTOCOL=tcp)(HOST=host2a)(PORT=1630))
     (ADDRESS=(PROTOCOL=tcp)(HOST=host2b)(PORT=1630)))
   (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(PORT=1521))    # hop 3
   (CONNECT_DATA=(SERVICE_NAME=Sales.us.acme.com)))


1客户端被指导连接oracle连接第一个oracle连接管理器的协议地址

(ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))

2然后在连接下一个oracle连接管理器中的第一个协议地址。如果第一个协议地址失败了,那么会尝试第二个协议地址。通过下面的配置来指定顺序的

(ADDRESS_LIST= 
  (FAILOVER=ON)
  (LOAD_BALANCE=off)
  (ADDRESS=(PROTOCOL=tcp)(HOST=host2a)(PORT=1630))
  (ADDRESS=(PROTOCOL=tcp)(HOST=host2b)(PORT=1630))

3然后在连接下个地址

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

客户端的负载均衡

sample2=
(DESCRIPTION=
   (LOAD_BALANCE=on)
   (FAILOVER=on)
   (ADDRESS_LIST=
     (SOURCE_ROUTE=yes)
     (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))
     (ADDRESS=(PROTOCOL=tcp)(HOST=host2)(PORT=1521)))
  (ADDRESS_LIST=
     (SOURCE_ROUTE=yes)
     (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(port=1630))
     (ADDRESS=(PROTOCOL=tcp)(HOST=host4)(port=1521)))
   (CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))

1客户端随机选择一个address_list,如果选择的address_list失败了,那么会故障转移到另一个上,

2当address_list被选择了,客户端先连接到1630上

3oracle连接管理器然后使用address_list中的协议地址连接到数据库服务上。


lists的可选参数

对多个地址,下面的参数是可用的

FAILOVER

  • LOAD_BALANCE

  • RECV_BUF_SIZE

  • SDU

  • SEND_BUF_SIZE

  • SOURCE_ROUTE

  • TYPE_OF_SERVICE

  • failover参数指定多协议地址的连接时故障转移 ,这个参数在description_list或description,或是address_list参数下面指定

  • load_balance 这个参数指定了客户端的负载均衡,如果这个参数设置成了on,yes或true,oracle net进程随机的选择地址,在不同的监听中负载均很。当设置了off,no,或是false,oracle net就顺序的读取地址列表直到一个成功了。

  • recv_buf_size这个参数指定了接收操作的的buffer space,单位是bytes,

  • sdu这个参数指导oracle net调整发送sdu大小的数据包的频率,默认是2KB

  • send_buf_size 发送操作的bufer space

  • source_route使用这个参数能在多协议地址中路由。当设置了on或yes,oracle net使用每个地址直到目的地到达。

  • type_of_service使用这个参数来指定oracle rdb数据库使用的服务类型。这个参数只有在包含rdb和oracle数据库服务的时候才有用。

  • connect_data 有下面的参数

  • FAILOVER_MODE

  • GLOBAL_NAME

  • HS

  • INSTANCE_NAME

  • RDB_DATABASE

  • SERVER

  • SERVICE_NAME

  • SID


    failover_mode

    使用该参数可以让oracle net在运行的时候第一个监听失败了就转移到别的监听上去。这种类型的叫taf,和连接时的故障转移failover参数不是一回事。

  • instance_name来标记要访问的数据库实例。

  • server来指定连接的服务处理器的类型

  • service_name来指定要访问的服务

  • security部分,使用这个参数可以实现安全的连接

  • 例如

  • net_service_name=
    (DESCRIPTION=
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521))
      (CONNECT_DATA=
       (SERVICE_NAME=sales.us.acme.com))
       (SECURITY=
        (SSL_SERVER_CERT_DN="cn=sales,cn=OracleContext,dc=us,dc=acme,dc=com")))

    
    
  • 你可能感兴趣的:(负载均衡,连接时的故障转移)