负载均衡设备oracle,Oracle RAC 服务器端联接负载均衡(Load Balance)
Oracle RAC 服務(wù)器端連接負(fù)載均衡(Load Balance)
Oracle RAC服務(wù)器端的負(fù)載均衡是根據(jù)RAC中各節(jié)點(diǎn)的連接負(fù)荷數(shù)情況,將新的連接請(qǐng)求分配到負(fù)荷最小的節(jié)點(diǎn)上去。當(dāng)數(shù)據(jù)庫(kù)處于運(yùn)行時(shí),RAC中各節(jié)點(diǎn)的PMON進(jìn)程每3秒會(huì)將各自節(jié)點(diǎn)的連接負(fù)荷數(shù)更新到service_register。而對(duì)于節(jié)點(diǎn)中任意監(jiān)聽器故障或監(jiān)聽器意外失敗時(shí),PMON進(jìn)程會(huì)每1秒鐘檢查當(dāng)前節(jié)點(diǎn)上的監(jiān)聽是否重啟,以獲得最新的負(fù)載信息來及時(shí)調(diào)整負(fù)載均衡。本文主要演示suse 10 + oracle 10g rac下的服務(wù)器端的負(fù)載均衡。
有關(guān)客戶端的負(fù)載均衡可參考
Oracle RAC 客戶端連接負(fù)載均衡(Load Balance)
配置RAC負(fù)載均衡與故障轉(zhuǎn)移
有關(guān)Oracle 網(wǎng)絡(luò)配置相關(guān)基礎(chǔ)以及概念性的問題請(qǐng)參考:
配置ORACLE 客戶端連接到數(shù)據(jù)庫(kù)
配置非默認(rèn)端口的動(dòng)態(tài)服務(wù)注冊(cè)
配置sqlnet.ora限制IP訪問Oracle
Oracle 監(jiān)聽器日志配置與管理
設(shè)置 Oracle 監(jiān)聽器密碼(LISTENER)
Oracle RAC 監(jiān)聽配置
ORACLE RAC 下非缺省端口監(jiān)聽配置(listener.ora tnsnames.ora)
一、服務(wù)器端負(fù)載均衡配置1、為tnsnames.ora 添加相應(yīng)的網(wǎng)絡(luò)服務(wù)名(每個(gè)節(jié)點(diǎn)配置)
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))
)
local_lsnr_gobo4a =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
)
local_lsnr_gobo4b =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
)
2、設(shè)置remote_listener參數(shù)
alter system set remote_listener='' scope=both sid='*';
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string GOBO4A
SQL> show parameter listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
remote_listener string
SQL> alter system set remote_listener='remote_lsnr_gobo4' scope=both sid='*';
System altered.
3、配置客戶端tnsnames.ora
-->客戶端為suse 10
SZDB:~ # ifconfig eth1 | grep "inet addr"|cut -d " " -f12|cut -d : -f2 #--客戶端主機(jī)的ip
192.168.7.2
SZDB:~ # su - oracle
oracle@SZDB:~> tail -10 $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 = off) #--由于僅僅測(cè)試寄予服務(wù)器端的負(fù)載均衡,因此關(guān)閉客戶端負(fù)載均衡選項(xiàng)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = GOBO4)
)
)
#Author : Robinson Cheng
#Blog : http://blog.csdn.net/robinson_0612
4、檢查監(jiān)聽情況
oracle@bo2dbp:~> lsnrctl status
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.61)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.51)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
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..
.......
oracle@bo2dbs:~> lsnrctl status
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.62)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.52)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...
Service "GOBO4" has 2 instance(s).
Instance "GOBO4A", status READY, has 1 handler(s) for this service...
Instance "GOBO4B", status READY, has 2 handler(s) for this service...
..........
#--如果監(jiān)聽或數(shù)據(jù)庫(kù)需要重啟異常請(qǐng)考慮重新啟動(dòng)監(jiān)聽器或數(shù)據(jù)庫(kù)
#--下面清空監(jiān)聽日志以便于后續(xù)統(tǒng)計(jì)連接信息
oracle@bo2dbp:/u01/oracle/db/network/log> cat /dev/null>listener_bo2dbp.log
oracle@bo2dbs:/u01/oracle/db/network/log> cat /dev/null>listener_bo2dbs.log
二、測(cè)試服務(wù)器端的負(fù)載均衡1、從客戶端建立連接
oracle@SZDB:~> more load_balance.sh
#!/bin/bash
for i in {1..1000}
do
echo $i
sqlplus -S system/oracle@GOBO4 <
select instance_name from v\$instance;
EOF
sleep 1
done
exit 0
oracle@SZDB:~> ./load_balance.sh >srv_load_bal.log
2、分析監(jiān)聽日志
oracle@bo2dbp:/u01/oracle/db/network/log> more listener_bo2dbp.log
12-OCT-2012 12:00:10 * service_update * GOBO4B * 0 #節(jié)點(diǎn)bo2dbs上的實(shí)例GOBO4B的更新到bo2dbp上監(jiān)聽器的更新信息
12-OCT-2012 12:00:35 * service_update * GOBO4B * 0
12-OCT-2012 12:01:04 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=50322)) * establish * GOBO4 * 0
12-OCT-2012 12:01:05 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=50325)) * establish * GOBO4 * 0
12-OCT-2012 12:01:07 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=50328)) * establish * GOBO4 * 0
12-OCT-2012 12:01:08 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=50330)) * establish * GOBO4 * 0
#上面的日志片斷中可以看出全部是客戶端發(fā)起的到bo2dbp節(jié)點(diǎn)上的建立連接的信息
#下面來查看bo2dbs上的監(jiān)聽日志
oracle@bo2dbs:/u01/oracle/db/network/log> more listener_bo2dbs.log
12-OCT-2012 12:00:10 * service_update * GOBO4B * 0
12-OCT-2012 12:00:10 * service_update * GOBO4B * 0
12-OCT-2012 12:00:14 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=bo2dbs)(USER=oracle))(COMMAND=status)(ARGUMENTS=64)
(SERVICE=LISTENER_BO2DBS)(VERSION=169870080)) * status * 0
12-OCT-2012 12:00:35 * service_update * GOBO4B * 0
12-OCT-2012 12:00:35 * service_update * GOBO4B * 0
12-OCT-2012 12:01:04 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
(USER=oracle))(INSTANCE_NAME=GOBO4B)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=61862)) * establish * GOBO4 * 0
12-OCT-2012 12:01:07 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
(USER=oracle))(INSTANCE_NAME=GOBO4B)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=61868)) * establish * GOBO4 * 0
12-OCT-2012 12:01:09 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
(USER=oracle))(INSTANCE_NAME=GOBO4B)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=61872)) * establish * GOBO4 * 0
#在12-OCT-2012 12:01:04時(shí)刻,連接信息中有INSTANCE_NAME=GOBO4B的連接信息,而節(jié)點(diǎn)bo2dbp上也有一條類似的信息,因此該條連接
#日志是由節(jié)點(diǎn)bo2dbp轉(zhuǎn)發(fā)過來而建立的連接請(qǐng)求。
#同樣在12-OCT-2012 12:01:07時(shí)刻,節(jié)點(diǎn)bo2dbp轉(zhuǎn)發(fā)過來而建立的連接請(qǐng)求。
#小結(jié)一下,
#對(duì)于直接連接,監(jiān)聽器日志中將出現(xiàn)establish,且不含有INSTANCE_NAME=GOBO4B 字樣
#而對(duì)于轉(zhuǎn)發(fā)的連接,則轉(zhuǎn)發(fā)節(jié)點(diǎn)與接收的節(jié)點(diǎn)同時(shí)存在連接信息,轉(zhuǎn)發(fā)節(jié)點(diǎn)上存在連接信息的與普通的連接請(qǐng)求一樣,
#而接收的節(jié)點(diǎn)上存在INSTANCE_NAME= 信息
3、檢查負(fù)載均衡結(jié)果
oracle@SZDB:~> grep GOBO4A srv_load_bal.log |wc -l
755
oracle@SZDB:~> grep GOBO4B srv_load_bal.log |wc -l
245
#從上面的日志文件中可知總共有755個(gè)客戶端連接到了gobo4a,有245各客戶端連接到了gobo4b
#下面查看監(jiān)聽器日志來獲得連接信息
#下面的查詢中在節(jié)點(diǎn)bo2dbp上總共有接受了1000個(gè)用戶連接
oracle@bo2dbp:/u01/oracle/db/network/log> grep establish listener_bo2dbp.log |wc -l
1000
#下面的查詢查看是否有從節(jié)點(diǎn)bo2dbs轉(zhuǎn)發(fā)過來的連接,結(jié)果為0,說明沒有任何連接請(qǐng)求從bo2dbs轉(zhuǎn)發(fā)過來
oracle@bo2dbp:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbp.log |wc -l
0
#接下來查看節(jié)點(diǎn)bo2dbs的監(jiān)聽日志,可以看出總共接受了245個(gè)連接請(qǐng)求
oracle@bo2dbs:/u01/oracle/db/network/log> grep establish listener_bo2dbs.log |wc -l
245
#下面的過濾情況也表明在節(jié)點(diǎn)bo2dbs上的連接是從bo2dbp上轉(zhuǎn)發(fā)的連接,而非客戶端直接到bo2dbs的請(qǐng)求連接
oracle@bo2dbs:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbs.log |wc -l
245
#從監(jiān)聽器的日志檢查可以,測(cè)試中的連接全部請(qǐng)求到節(jié)點(diǎn)bo2dbp,是由于tnsnames.ora中ADDRESS的第一個(gè)IP地址就是bo2dbp的IP
#因此所有的連接都是請(qǐng)求到bo2dbp,而沒有客戶端發(fā)出到bo2dbs的連接請(qǐng)求
#其次是盡管在bo2dbp有1000個(gè)連接請(qǐng)求,而真正建立連接的只有755個(gè),有245轉(zhuǎn)發(fā)到了節(jié)點(diǎn)bo2dbs
三、總結(jié)????? 1、服務(wù)器端的負(fù)載均衡需要配置remote_listener參數(shù),而該參數(shù)的值依賴于tnsnames.ora的連接字符串
2、對(duì)于基于服務(wù)器端的連接負(fù)載均衡,監(jiān)聽器會(huì)根據(jù)當(dāng)前節(jié)點(diǎn)、實(shí)例上的連接負(fù)載情況進(jìn)行轉(zhuǎn)發(fā)到空閑的實(shí)例
3、轉(zhuǎn)發(fā)的依據(jù)僅僅是當(dāng)前節(jié)點(diǎn)監(jiān)聽的連接數(shù)量的多少,而非當(dāng)前實(shí)例的過度負(fù)載
4、從上面的測(cè)試可以得出,各個(gè)節(jié)點(diǎn)的連接并不算均衡,是相對(duì)的均衡,因此應(yīng)結(jié)合客戶端連接負(fù)載協(xié)同工作
5、對(duì)于當(dāng)前實(shí)例的過度負(fù)載的情形,應(yīng)結(jié)合配置service方法來實(shí)現(xiàn)負(fù)載均衡
四、更多參考
有關(guān)基于用戶管理的備份和備份恢復(fù)的概念請(qǐng)參考
Oracle 冷備份
Oracle 熱備份
Oracle 備份恢復(fù)概念
Oracle 實(shí)例恢復(fù)
Oracle 基于用戶管理恢復(fù)的處理
SYSTEM 表空間管理及備份恢復(fù)
SYSAUX表空間管理及恢復(fù)
Oracle 基于備份控制文件的恢復(fù)(unsing backup controlfile)
有關(guān)RMAN的備份恢復(fù)與管理請(qǐng)參考
RMAN 概述及其體系結(jié)構(gòu)
RMAN 配置、監(jiān)控與管理
RMAN 備份詳解
RMAN 還原與恢復(fù)
RMAN catalog 的創(chuàng)建和使用
基于catalog 創(chuàng)建RMAN存儲(chǔ)腳本
基于catalog 的RMAN 備份與恢復(fù)
RMAN 備份路徑困惑
有關(guān)ORACLE體系結(jié)構(gòu)請(qǐng)參考
Oracle 表空間與數(shù)據(jù)文件
Oracle 密碼文件
Oracle 參數(shù)文件
Oracle 聯(lián)機(jī)重做日志文件(ONLINE LOG FILE)
Oracle 控制文件(CONTROLFILE)
Oracle 歸檔日志
Oracle 回滾(ROLLBACK)和撤銷(UNDO)
Oracle 數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)關(guān)閉過程
Oracle 10g SGA 的自動(dòng)化管理
Oracle 實(shí)例和Oracle數(shù)據(jù)庫(kù)(Oracle體系結(jié)構(gòu))
總結(jié)
以上是生活随笔為你收集整理的负载均衡设备oracle,Oracle RAC 服务器端联接负载均衡(Load Balance)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab 自动扫雷,MATLAB自动
- 下一篇: oracle备份慢,诊断Oracle R