Oracle RAC 負載平衡使得從用戶端發起的串連能夠有效地分配到監聽器負載較小的執行個體上。有兩種方式實現用戶端負載平衡,一是通過配置用戶端的load_balance,一是通過設定管理員端的remote_listener參數。兩種方式各有優劣,而且兩者並不相互排斥,因此可以結合兩種方式來更加有效實現負載平衡。本文將描述兩者結合的使用方式(oralce 10g rac)。
有關用戶端與服務端負載平衡的單獨測試請參考:
Oracle RAC 用戶端串連負載平衡(Load Balance)
Oracle RAC 伺服器端串連負載平衡(Load Balance)
本文的測試將結合前篇文章使用的指令碼與範例,是前兩篇測試的一個總結。
一、配置需求
1、伺服器端各節點監聽器正常提供服務,如果使用非預設的1521連接埠,請參考 ORACLE RAC 下非預設連接埠監聽配置(listener.ora tnsnames.ora)
- oracle@bo2dbp:~> more $ORACLE_HOME/network/admin/listener.ora
- # listener.ora.bo2dbp Network Configuration File: /u01/oracle/db/network/admin/listener.ora.bo2dbp
- # Generated by Oracle configuration tools.
-
- LISTENER_BO2DBP =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = bo2dbp-vip.2gotrade.com)(PORT = 1521)(IP = FIRST))
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.51)(PORT = 1521)(IP = FIRST))
- )
- )
-
- SID_LIST_LISTENER_BO2DBP =
- (SID_LIST =
- (SID_DESC =
- (SID_NAME = PLSExtProc)
- (ORACLE_HOME = /u01/oracle/db)
- (PROGRAM = extproc)
- )
- )
-
- oracle@bo2dbp:~> lsnrctl status
- Service "GOBO4" has 2 instance(s).
- Instance "GOBO4A", status READY, has 2 handler(s) for this service...
- Instance "GOBO4B", status READY, has 1 handler(s) for this service...
2、伺服器端的remote_listener參數設定
要求remote_listener參數的串連標識符在伺服器端的tnsnames.ora中有對應的條目
- SQL> show parameter listener
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- local_listener string
- remote_listener string remote_lsnr_gobo4
-
- oracle@bo2dbp:~> more $ORACLE_HOME/network/admin/tnsnames.ora
- # tnsnames.ora Network Configuration File: /u01/oracle/db/network/admin/tnsnames.ora
- # Generated by Oracle configuration tools.
- remote_lsnr_gobo4 =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
- )
3、用戶端tnsnames.ora中啟用load_balance
- oracle@SZDB:~> tail -11 $ORACLE_HOME/network/admin/tnsnames.ora
-
- GOBO4 =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
- (LOAD_BALANCE = yes)
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = GOBO4)
- )
- )