zoukankan      html  css  js  c++  java
  • Remote Listener Server side ConnectTime Load Balancing

    这里不鏖述remote_listener参数的作用和服务器端连接时负载均衡的技术,只说明以下本次演示,想说明的是客户端连接原始LISTENER时只发生短暂的通信即断开,继而连接由初始连接节点分配的目标节点的LISTENER,且保持对监听端口之间的通信connection,这里在Unix/Linux上只用到监听端口,原理如下图:    

    我们通过client sql net trace来连接一些详细信息:

    SQL> select instance_name,instance_number from gv$instance;
    
    INSTANCE_NAME    INSTANCE_NUMBER
    ---------------- ---------------
    VPROD2                         2
    VPROD1                         1
    
    SQL> show parameter remote_listener
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    remote_listener                      string      RAC_LISTENER
    
    [grid@vrh1 admin]$ tnsping RAC_LISTENER
    
    TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 06-SEP-2012 08:15:42
    
    Copyright (c) 1997, 2011, Oracle.  All rights reserved.
    
    Used parameter files:
    /g01/11.2.0/grid/network/admin/sqlnet.ora
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = vrh1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = vrh2-vip)(PORT = 1521)))
    OK (10 msec)
    
    从远程节点使用TNSNAMES连接1节点实例,
    由于remote_listener 的server-side connect load balancing ,会分发到2节点上
    通过设置SQLNET.ORA中的参数做client sql net trace
    
    [oracle@nas sqlnet]$ tnsping SERVER
    
    TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 06-SEP-2012 13:16:48
    
    Copyright (c) 1997, 2011, Oracle.  All rights reserved.
    
    Used parameter files:
    /s01/orabase/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = vrh1-vip)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = VPROD)))
    OK (10 msec)
    
    [oracle@nas sqlnet]$ sqlplus  system/oracle@SERVER
    
    SQL*Plus: Release 11.2.0.3.0 Production on Thu Sep 6 13:17:25 2012
    
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
    Data Mining and Real Application Testing options
    
    INSTANCE_NAME
    ----------------
    VPROD2
        以上利用remote_listener服务器端负载均衡成功由1及节点的listener路由到2节点上的LISTENER,并创建server process,我们来观察 SQL NET TRACE    
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 00 00 28 44 45 53 43 52  |..(DESCR|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 49 50 54 49 4F 4E 3D 28  |IPTION=(|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 43 4F 4E 4E 45 43 54 5F  |CONNECT_|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 44 41 54 41 3D 28 53 45  |DATA=(SE|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 52 56 49 43 45 5F 4E 41  |RVICE_NA|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 4D 45 3D 56 50 52 4F 44  |ME=VPROD|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 29 28 43 49 44 3D 28 50  |)(CID=(P|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 52 4F 47 52 41 4D 3D 73  |ROGRAM=s|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 71 6C 70 6C 75 73 29 28  |qlplus)(|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 48 4F 53 54 3D 6E 61 73  |HOST=nas|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 2E 6F 72 61 63 6C 65 2E  |.oracle.|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 63 6F 6D 29 28 55 53 45  |com)(USE|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 52 3D 6F 72 61 63 6C 65  |R=oracle|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 29 29 28 53 45 52 56 45  |))(SERVE|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 52 3D 64 65 64 69 63 61  |R=dedica|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 74 65 64 29 28 49 4E 53  |ted)(INS|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 54 41 4E 43 45 5F 4E 41  |TANCE_NA|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 4D 45 3D 56 50 52 4F 44  |ME=VPROD|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 32 29 29 28 41 44 44 52  |2))(ADDR|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 45 53 53 3D 28 50 52 4F  |ESS=(PRO|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 54 4F 43 4F 4C 3D 54 43  |TOCOL=TC|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 50 29 28 48 4F 53 54 3D  |P)(HOST=|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 31 39 32 2E 31 36 38 2E  |192.168.|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 31 2E 31 36 32 29 28 50  |1.162)(P|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 4F 52 54 3D 31 35 32 31  |ORT=1521|
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 29 29 29                 |)))     |
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: 259 bytes to transport
    (890354416) [000001 06-SEP-2012 13:29:11:567] nspsend: normal exit
    (890354416) [000001 06-SEP-2012 13:29:11:567] nscon: exit (0)
    (890354416) [000001 06-SEP-2012 13:29:11:567] snsbitts_ts: entry
    (890354416) [000001 06-SEP-2012 13:29:11:567] snsbitts_ts: acquired the bit
    (890354416) [000001 06-SEP-2012 13:29:11:567] snsbitts_ts: normal exit
    
    ................
    
    (890354416) [000001 06-SEP-2012 13:29:11:560] snsbitcl_ts: normal exit
    (890354416) [000001 06-SEP-2012 13:29:11:560] nsmfr: entry
    (890354416) [000001 06-SEP-2012 13:29:11:560] nsmfr: 2760 bytes at 0x10a57910
    (890354416) [000001 06-SEP-2012 13:29:11:560] nsmfr: normal exit
    (890354416) [000001 06-SEP-2012 13:29:11:561] snsbitcl_ts: entry
    (890354416) [000001 06-SEP-2012 13:29:11:561] snsbitcl_ts: normal exit
    (890354416) [000001 06-SEP-2012 13:29:11:561] nsmfr: entry
    (890354416) [000001 06-SEP-2012 13:29:11:561] nsmfr: 1528 bytes at 0x10a57310
    (890354416) [000001 06-SEP-2012 13:29:11:561] nsmfr: normal exit
    (890354416) [000001 06-SEP-2012 13:29:11:561] nsclose: normal exit
    (890354416) [000001 06-SEP-2012 13:29:11:561] nscall: connecting...
    (890354416) [000001 06-SEP-2012 13:29:11:561] nsc2addr: entry
    (890354416) [000001 06-SEP-2012 13:29:11:561] nsc2addr: (ADDRESS=(PROTOCOL=TCP)(HOST=vrh2.oracle.com)(PORT=1521))
    (890354416) [000001 06-SEP-2012 13:29:11:561] nttbnd2addr: entry
    (890354416) [000001 06-SEP-2012 13:29:11:561] snlinGetAddrInfo: entry
    (890354416) [000001 06-SEP-2012 13:29:11:561] snlinGetAddrInfo: getaddrinfo() failed with error -2
    (890354416) [000001 06-SEP-2012 13:29:11:561] snlinGetAddrInfo: exit
    (890354416) [000001 06-SEP-2012 13:29:11:561] nttbnd2addr: looking up IP addr for host: vrh2.oracle.com
    (890354416) [000001 06-SEP-2012 13:29:11:561] snlinGetAddrInfo: entry
    (890354416) [000001 06-SEP-2012 13:29:11:561] snlinGetAddrInfo: exit
    (890354416) [000001 06-SEP-2012 13:29:11:561] snlinFreeAddrInfo: entry
    (890354416) [000001 06-SEP-2012 13:29:11:561] snlinFreeAddrInfo: exit
    (890354416) [000001 06-SEP-2012 13:29:11:561] nttbnd2addr: exit
        通过netstat 可以查看当前client远程连接的端口,可以看到已经与1节点断开了connection:    
    [root@nas ~]# netstat -anp
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
    tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      2959/hpiod          
    tcp        0      0 127.0.0.1:199               0.0.0.0:*                   LISTEN      5424/snmpd          
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2526/portmap        
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      5396/sshd           
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      3000/cupsd          
    tcp        0      0 0.0.0.0:632                 0.0.0.0:*                   LISTEN      2570/rpc.statd      
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3046/sendmail: acce 
    tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      2964/python         
    tcp        0    888 192.168.1.178:22            192.168.1.6:65179           ESTABLISHED 21508/0             
    tcp        0      0 192.168.1.178:22            192.168.1.6:64535           ESTABLISHED 21187/1             
    tcp        0      0 192.168.1.178:44496         192.168.1.163:1521          ESTABLISHED 21482/sqlplus
  • 相关阅读:
    基于select的IO多路复用并发模型
    (p ython +tcp+tcp)文件传输
    udp协议与进程结合(群聊)
    python递归拷贝目录和线程拷贝目录
    利用线程对文件进行分割
    tcp与线程结合
    tcp 文件传输
    mysql数据库 (使用) 测试题
    json写入文件
    ArcEngine——获取要素几何(非游标方式)
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2967970.html
Copyright © 2011-2022 走看看