1. 程式人生 > >Oracle RAC 負載均衡測試(結合伺服器端與客戶端)

Oracle RAC 負載均衡測試(結合伺服器端與客戶端)

原文地址:http://blog.csdn.net/leshami/article/details/8072367     

   Oracle RAC 負載均衡使得從客戶端發起的連線能夠有效地分配到監聽器負載較小的例項上。有兩種方式實現客戶端負載均衡,一是通過配置客戶端的load_balance,一是通過配置伺服器端的remote_listener引數。兩種方式各有優劣,而且兩者並不相互排斥,因此可以結合兩種方式來更加有效的實現負載均衡。本文將描述兩者結合的使用情況(oralce 10g rac)。

        本文的測試將結合前篇文章使用的指令碼與樣例,是前兩篇測試的一個總結。

一、配置需求

  1. 1、伺服器端各節點監聽器正常提供服務,如果使用非預設的1521埠,請參考 ORACLE RAC 下非預設埠監聽配置(listener.ora tnsnames.ora)   
  2.   [email protected]:~> more $ORACLE_HOME/network/admin/listener.ora  
  3.   # listener.ora.bo2dbp Network Configuration File: /u01/oracle/db/network/admin/listener.ora.bo2dbp  
  4.   # Generated by Oracle configuration tools.  
  5.   LISTENER_BO2DBP =  
  6.     (DESCRIPTION_LIST =  
  7.       (DESCRIPTION =  
  8.         (ADDRESS = (PROTOCOL = TCP)(HOST = bo2dbp-vip.2gotrade.com)(PORT = 1521)(IP = FIRST
    ))  
  9.         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.51)(PORT = 1521)(IP = FIRST))  
  10.       )  
  11.     )  
  12.   SID_LIST_LISTENER_BO2DBP =  
  13.     (SID_LIST =  
  14.       (SID_DESC =  
  15.         (SID_NAME = PLSExtProc)  
  16.         (ORACLE_HOME = /u01/oracle/db)  
  17.         (PROGRAM = extproc)  
  18.       )  
  19.     )  
  20.   [email protected]
    :~> lsnrctl status  
  21.   Service "GOBO4" has 2 instance(s).  
  22.     Instance "GOBO4A", status READY, has 2 handler(s) for this service...  
  23.     Instance "GOBO4B", status READY, has 1 handler(s) for this service...  
  24. 2、伺服器端的remote_listener引數設定  
  25.   要求remote_listener引數的連線識別符號在伺服器端的tnsnames.ora中有對應的條目  
  26.   SQL> show parameter listener  
  27.   NAME                                 TYPE        VALUE  
  28.   ------------------------------------ ----------- ------------------------------
  29.   local_listener                       string  
  30.   remote_listener                      string      remote_lsnr_gobo4  
  31.   [email protected]:~> more $ORACLE_HOME/network/admin/tnsnames.ora  
  32.   # tnsnames.ora Network Configuration File: /u01/oracle/db/network/admin/tnsnames.ora  
  33.   # Generated by Oracle configuration tools.  
  34.   remote_lsnr_gobo4 =  
  35.     (ADDRESS_LIST =  
  36.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))  
  37.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))  
  38.     )  
  39. 3、客戶端tnsnames.ora中啟用load_balance  
  40.   [email protected]:~> tail -11 $ORACLE_HOME/network/admin/tnsnames.ora  
  41.   GOBO4 =  
  42.     (DESCRIPTION =  
  43.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))  
  44.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))  
  45.       (LOAD_BALANCE = yes)  
  46.       (CONNECT_DATA =  
  47.         (SERVER = DEDICATED)  
  48.         (SERVICE_NAME = GOBO4)  
  49.       )  
  50.     )  

二、測試Load Balance

  1. #還是使用之前的腳步來進行測試
  2. #Author : Robinson
  3. #Blog : http://blog.csdn.net/robinson_0612
  4. [email protected]:~> more load_balance.sh   
  5. #!/bin/bash
  6. for i in {1..1000}  
  7. do  
  8. echo $i  
  9. sqlplus -S system/[email protected] <<EOF  
  10. select instance_name from v\$instance;  
  11. EOF  
  12. sleep 1
  13. done  
  14. exit 0
  15. [email protected]:~> ./load_balance.sh >load_bal.log     
  16. #檢視日誌
  17. [email protected]:~> grep GOBO4A load_bal.log |wc -l  
  18. 750
  19. [email protected]:~> grep GOBO4B load_bal.log |wc -l  
  20. 250
  21. #檢視監聽器的日誌
  22. [email protected]:/u01/oracle/db/network/log> grep establish listener_bo2dbp.log |wc -l  
  23. 894
  24. [email protected]:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbp.log |wc -l  
  25. 415
  26. #從上面的查詢中可以得知,節點bo2dbp總共接受了894個連線請求,而有415連線請求是由bo2dbs轉發過來的
  27. #因此,實際上從客戶端發起到bo2dbp的實際連線請求數為894-415=479
  28. #下面來看在節點bo2dbs上的監聽日誌
  29. [email protected]:/u01/oracle/db/network/log> grep establish listener_bo2dbs.log |wc -l  
  30. 665
  31. [email protected]:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbs.log |wc -l   
  32. 144
  33. #從上面的查詢中可知,節點bo2dbs總共接受了665個連線請求,而有144個連線請求是由bo2dbp轉發過來的
  34. #因此,實際上從客戶端發起到bo2dbs的實際連線請求數為655-144=511
  35. #從上面的結果可知,
  36. #基於客戶端的連線請求數為節點bo2dbp為479,節點bo2dbs為511
  37. #監聽器路由到本地例項數目為,節點bo2dbp,479-144=335,節點bo2dbs,511-415=96
  38. #遠端監聽器路由道本地例項的資料為,節點bo2dpb為415,節點bo2dbs為144
  39. #監聽器路由的概念是指基於伺服器端的負載均衡
  40. #即伺服器端的監聽器根據自身以及遠端監聽器的負載情況來確定將當前的連線請求轉發到本地或遠端,此即為路由。

三、更多參考

有關基於使用者管理的備份和備份恢復的概念請參

有關RMAN的備份恢復與管理請參

有關ORACLE體系結構請參