客戶端RAC負載均衡配置代碼
熟悉Oracle數(shù)據(jù)庫的朋友們應該都清楚RAC的負載均衡分為兩種。那么現(xiàn)在,我們針對其中一種——客戶端RAC負載均衡配置進行一個全面具體的介紹。文中包含了主要的配置代碼,希望通過介紹,能讓大家清楚配置過程。稍后我們還會介紹RAC服務器負載均衡配置。
負載均衡是指連接的負載均衡。RAC的負載均衡主要是指新會話連接到RAC數(shù)據(jù)庫時,如何判定這個新的連接要連到哪個節(jié)點進行工作。在RAC中,負載均衡分為兩種,一種是基于客戶端連接的,另外一種是基于服務器端的。
客戶端RAC負載均衡配置
1、當前服務器中的數(shù)據(jù)庫版本如下:
- SQL> select * from v$version;
- BANNER
- ----------------------------------------------------------------
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
- PL/SQL Release 10.2.0.1.0 - Production
- CORE 10.2.0.1.0 Production
- TNS for Linux: Version 10.2.0.1.0 - Production
- NLSRTL Version 10.2.0.1.0 - Production
2、在客戶端的tnsnames.ora的配置中,只要連接的是整個數(shù)據(jù)庫的服務名,不是實例名。
在服務器端查看RAC數(shù)據(jù)庫的service_names:
- SQL> show parameter service_names
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- service_names string RACDB.chenxu.yo2.cn
- SQL>
#p#3、在客戶端配置TNS:
客戶端RAC負載均衡配置相對簡單,只需要在tnsnames.ora中添加LOAD_BALANCE=ON這么一個選項即可。
- RACDB =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.170)(PORT = 1521))
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.171)(PORT = 1521))
- (LOAD_BALANCE = on)
- )
- (CONNECT_DATA =
- (SERVICE_NAME = racdb.chenxu.yo2.cn)
- )
- )
配置TNS中的HOST值是服務器端RAC配置中的虛擬IP即VIP,如下:
- [root@NODE01 admin]# more /etc/hosts
- # Do not remove the following line, or various programs
- # that require network functionality will fail.
- 127.0.0.1 localhost.localdomain localhost
- ::1 localhost6.localdomain6 localhost6
- 192.168.1.180 node01
- 192.168.1.181 node02
- 192.168.1.170 vip01
- 192.168.1.171 vip02
- 10.10.10.1 priv01
- 10.10.10.2 priv02
4、在客戶端測試:
開啟sqlplus_1:
- SQL> conn sys/chenxu@racdb as sysdba
- 已連接。
- SQL>
- SQL> show parameter instance_name
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- instance_name string RACDB2
- SQL>
- SQL> select instance_name from gv$instance;
- INSTANCE_NAME
- ----------------
- RACDB1
- RACDB2
#p#開啟sqlplus_2:
- SQL> conn sys/chenxu@racdb as sysdba
- 已連接。
- SQL> show parameter instance_name
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- instance_name string RACDB1
開啟sqlplus_3:
- SQL> conn sys/chenxu@racdb as sysdba
- 已連接。
- SQL>
- SQL> show parameter instance_name
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- instance_name string RACDB2
開啟sqlplus_4:
- SQL> conn sys/chenxu@racdb as sysdba
- 已連接。
- SQL> show parameter instance_name
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- instance_name string RACDB1
5、總結(jié)
這樣當客戶端連接RAC數(shù)據(jù)庫時,會隨機在TNS里面挑個監(jiān)聽地址進行連接。在Oracle 10g以前,假如有節(jié)點宕機或者類似事故時,客戶端可能還是選擇連接到這個節(jié)點,這樣會發(fā)生較長時間的TCP等待超時。而在10g以后,由于VIP和FAN的引入,這樣的情況可以得到很大程度的改善。客戶端RAC負載均衡配置是相對簡單的,客戶端負載均衡在通常情況下能夠較好地工作,但是由于連接是在客戶端隨機發(fā)起的,這樣客戶端并不知道RAC各節(jié)點的負荷及連接數(shù)情況,有可能負荷大的節(jié)點還會源源不斷地增加新的連接,導致RAC節(jié)點無法均衡工作。