靈活實現RAC三節點的負載均衡及TAF配置(二)
這兩天配置了一個三節點的RAC環境,想起前一段時間Thomas Zhang給我出的一個題目,配置一個三節點RAC環境的複雜負載均衡以及Transparent Application Failover的服務名。現在有環境了,可以將給出驗證後的結果了。
這篇文章檢驗給出的實現是否滿足需求。
靈活實現RAC三節點的負載均衡及TAF配置(一):http://yangtingkun.itpub.net/post/468/482683
上一篇給出了一個靈活設定負載均衡以及TAF的需求,同時給出了這個需求首先的TNSNAMES配置。這篇來驗證一下配置是否正確。
首先在客戶端的TNSNAMES.ORA中新增配置,由於篇幅的問題,這裡就不重複了,具體配置可以參考第一篇文章。
下面首先驗證第一點,透過SERVICEA服務是否實現在例項1和例項2上的負載均衡,透過SERVICEB服務是否可以登陸例項3:
SQL> CONN TEST/TEST@SERVICEA
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac2
SQL> CONN TEST/TEST@SERVICEA
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac1
SQL> CONN TEST/TEST@SERVICEA
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac1
SQL> CONN TEST/TEST@SERVICEA
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac2
SQL> CONN TEST/TEST@SERVICEA
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac2
SQL> CONN TEST/TEST@SERVICEA
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac1
可以看到在目前兩個例項的負載都很小的情況下,SERVICEA以一種近似輪巡的方式分別連線到例項TESTRAC1和TESTRAC2上。
SQL> CONN TEST/TEST@SERVICEB
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac3
SQL> CONN TEST/TEST@SERVICEB
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac3
SQL> CONN TEST/TEST@SERVICEB
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac3
SQL> CONN TEST/TEST@SERVICEB
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac3
而SERVICEB顯然只能連線到例項TESTRAC3上。
下面驗證第二點需求,分別驗證TESTRAC1和TESTRAC2例項失敗的情況:
SQL> CONN TEST/TEST@SERVICEA
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac1
客戶端透過SERVICEA連線到TESTRAC1上,下面透過SRVCTL命令關閉TESTRAC1:
bash-3.00$ srvctl status db -d testrac
例項 testrac1 正在節點 racnode1 上執行
例項 testrac2 正在節點 racnode2 上執行
例項 testrac3 正在節點 racnode3 上執行
bash-3.00$ srvctl stop inst -d testrac -i testrac1
下面檢查剛才的會話是否已經遷移到TESTRAC2上:
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac2
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
testrac2
testrac3
下面啟動TESTRAC1例項:
bash-3.00$ srvctl start inst -d testrac -i testrac1
檢查目前資料庫例項狀態:
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
testrac2
testrac1
testrac3
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac2
下面關閉例項TESTRAC2:
bash-3.00$ srvctl stop inst -d testrac -i testrac2
檢查會話的所在例項:
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac1
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
testrac1
testrac3
可以看到這個配置已經滿足需求的第二點,當TESTRAC1例項異常,切換到TESTRAC2,如果TESTRAC2例項異常則切換到TESTRAC1,下面驗證需求的第三點,如果例項1和例項2都發生異常的情況。
利用srvctl關閉例項1:
bash-3.00$ srvctl stop inst -d testrac -i testrac1
檢查會話所在例項:
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac3
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
testrac3
現在滿足了負載均衡的第三點需求,當兩個例項都失敗時,切換到第三個例項TESTRAC3上。最後驗證最後一個需求。
bash-3.00$ srvctl status db -d testrac
例項 testrac1 沒有在 racnode1 節點上執行
例項 testrac2 沒有在 racnode2 節點上執行
例項 testrac3 正在節點 racnode3 上執行
bash-3.00$ srvctl start inst -d testrac -i "testrac1,testrac2"
檢查例項啟動情況:
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac3
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
testrac3
testrac2
testrac1
下面關閉例項TESTRAC3:
bash-3.00$ srvctl stop inst -d testrac -i testrac3
檢查會話所在例項:
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac2
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
testrac2
testrac1
啟動例項TESTRAC3:
bash-3.00$ srvctl start inst -d testrac -i testrac3
重新以SERVICEB服務登陸:
SQL> CONN TEST/TEST@SERVICEB
已連線。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac3
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
testrac3
testrac2
testrac1
使用其他客戶端,多建立幾個連線,連線到TESTRAC2例項,然後再次關閉TESTRAC3例項:
bash-3.00$ srvctl stop inst -d testrac -i testrac3
檢查例項所在會話:
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac1
SQL> SELECT INSTANCE_NAME FROM GV$INSTANCE;
INSTANCE_NAME
----------------
testrac1
testrac2
這個配置顯然也滿足了第四點需求,在例項3出現問題的時候在例項TESTRAC1和例項TESTRAC2上實現負載均衡的切換。
至此所有驗證工作完成,這個TNSNAMES.ORA的配置滿足所有的負載均衡和TAF的需求。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-590957/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 靈活實現RAC三節點的負載均衡及TAF配置(三)負載
- 靈活實現RAC三節點的負載均衡及TAF配置(五)負載
- 靈活實現RAC三節點的負載均衡及TAF配置(一)負載
- 靈活實現RAC三節點的負載均衡及TAF配置(四)負載
- 【RAC】RAC中的負載均衡和故障切換--TAF配置負載
- dubbo(三):負載均衡實現解析負載
- 透過自定義feignclient 的LoadBalancerFeignClient實現靈活的負載均衡策略client負載
- RAC負載均衡的簡單測試(二)負載
- RAC負載均衡的簡單測試(三)負載
- orleans叢集及負載均衡實現負載
- 配置 RAC 負載均衡與故障轉移負載
- Oracle RAC 客戶端負載均衡配置Oracle客戶端負載
- [zt] RAC的負載均衡負載
- DNS負載均衡的配置與特點DNS負載
- Nginx 高階篇(三)負載均衡的實現Nginx負載
- RHEL 7配置HAProxy實現Web負載均衡Web負載
- nginx安裝及負載均衡配置Nginx負載
- 伺服器負載均衡原理及實現伺服器負載
- nginx實現負載均衡Nginx負載
- 配置IIS的負載均衡負載
- 使用LVS實現負載均衡原理及安裝配置詳解負載
- 使用 LVS 實現負載均衡原理及安裝配置詳解負載
- 負載均衡之Haproxy配置詳解(及httpd配置)負載httpd
- 淺談RAC中的負載均衡負載
- HAProxy負載均衡器的安裝及配置負載
- Flume負載均衡配置負載
- apache 負載均衡配置Apache負載
- GRPC 負載均衡實現RPC負載
- HaProxy 實現 MySQL 負載均衡MySql負載
- Ribbon實現負載均衡負載
- Oracle負載均衡實現方式Oracle負載
- Nginx + IIS 實現負載均衡Nginx負載
- 兩種負載均衡的配置。負載
- Nginx實現簡單的負載均衡Nginx負載
- Nginx實現叢集的負載均衡配置過程詳解Nginx負載
- 使用LVS實現負載均衡的原理及安裝配置例項詳解負載
- 雙活資料中心負載均衡理解負載
- 負載均衡技術(二)———常用負載均衡服務介紹負載