oracle rac ロードバランス
ロードバランシングについて
racのロードバランシングには大きく2種類ある。
・クライアント・ロード・バランス
・サーバサイド・ロード・バランス (リスナー・ロード・バランス)
わかりやすいイメージは以下になります。
クライアント・ロード・バランス
ランダムにリスナーへ接続をする。(ラウンドロビンではなく、ランダム)
アルゴリズムは不明。注意点としては、ランダムなので、100%均等に振り分けられるわけではない。
アルゴリズムは不明。注意点としては、ランダムなので、100%均等に振り分けられるわけではない。
設定方法
クライアントのtnsnames.oraに以下のように記載する。
(LOAD_BALANCE=ON)を記載することで有効になる。
TEST= (DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = [VIP1])(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = [VIP2])(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = hoge) ) ) |
サーバサイド・ロード・バランス
これはcpuの負荷、またはセッション数のどちらかで負荷分散を可能とする。
注意点としては、100%均等に振り分けられるわけではない。振り分けられていることを確認するために数時間のセッションデータが必要となる。
設定方法 <セッション数での負荷分散の場合>
セッション数での負荷分散の場合
show parameter _listener NAME TYPE VALUE --------------- ----------- ------------------------------ local_listener string (DESCRIPTION=(ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=[VIP1])(PORT=1521)))) remote_listener string hoge ≪DBサーバのtnsnames.oraに以下を記載≫ hoge = (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=[VIP1])(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=[VIP2])(PORT=1521)) ) ) 1 <div>設定方法 <CPU負荷での負荷分散の場合> ※これは実際にやったことない。。。</div> セッション数での負荷分散の設定と合わせ、dbms_serviceを操作し、ロード・バランシング・アドバイザを設定するそうです。 <a href="http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19245-02/d_serv.htm" target="_blank">dbms_serviceの設定</a> ちなみに以下のような状態はGOAL値はロードバランシング無効となっている。 1 select SERVICE_ID , NAME , NETWORK_NAME , GOAL , CLB_GOAL from dba_services ; SERVICE_ID NAME NETWORK_NAME GOAL CLB_G ---------- --------------- --------------- ------------ ----- 1 SYS$BACKGROUND NONE SHORT 2 SYS$USERS NONE SHORT 3 racXDB racXDB LONG 4 hoge rac LONG ---------------------------------------- |
確認方法
hoge1のlistener.logに以下のようなログが確認できればOK。
(INSTANCE_NAME=hoge1)が出ているとこちらに振り分けられたという意味。
(INSTANCE_NAME=hoge1)が出ているとこちらに振り分けられたという意味。
03-JUN-2013 10:11:52 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=hoge)(CID=(PROGRAM=checksubscribelog)(HOST=******)(USER=mail))(INSTANCE_NAME=hoge1)) * (ADDRESS=(PROTOCOL=tcp)(HOST=******)(PORT=******)) * establish * rac * 0 |
備考
クライアント・ロード・バランスとサーバサイド・ロード・バランスは併用することが可能。