oracle rac ロードバランス

ロードバランシングについて

racのロードバランシングには大きく2種類ある。
・クライアント・ロード・バランス
・サーバサイド・ロード・バランス (リスナー・ロード・バランス)
わかりやすいイメージは以下になります。

クライアント・ロード・バランス

ランダムにリスナーへ接続をする。(ラウンドロビンではなく、ランダム)
アルゴリズムは不明。注意点としては、ランダムなので、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を操作し、ロード・バランシング・アドバイザを設定するそうです。
 
 
ちなみに以下のような状態は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)が出ているとこちらに振り分けられたという意味。
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

備考
クライアント・ロード・バランスとサーバサイド・ロード・バランスは併用することが可能。

このブログの人気の投稿

RAC環境でimpdpをパラレルで実行するとき

ctrl+s 操作が不能に

TrustedInstaller.exe メモリリーク