RAC负载均衡配置
1、客戶端均衡(Client-Side LB)
工作原理:當客戶端發起連接時,會從地址列表中隨機選取一個,再使用隨機算法把連接請求分散到各個實例。
存在缺點:
1.1)分配連接時沒有考慮每個節點的真實負載,最后分配不過不一定是平衡
1.2)隨機算法需要長時間片,如果在短時間內同時發起多個連接,這些連接有可能被分配到一個節點上
1.3)有些情況下,連接可能被分配到故障節點上
配置方法:在tns中添加LOAD_BALANCE = YES條目
2、服務器端均衡(Server-Side LB)
工作原理:
2.1)該均衡實現是依賴于Listener收集的負載信息。在數據庫運行過程中,PMON后臺進程會收集數系統的負載信息,然后登記到Listener中。
2.2)PMON進程不僅會向本地的Listener注冊,也會想其他節點上的Listener注冊,但到底向何處注冊,是由Remote_Listeners和Local_Listener這兩個參數決定。Local_Listener不用設置,而Remote_Listeners需要設置,參數值有一個tnsnames項。
2.3)當收到客戶端連接請求時,就會把連接轉給負載最小的節點,這個節點可能是自己,也可能是其他節點,也就是Listener會轉發客戶端的連接請求。
配置方法:
SQL> show parameter listener; ? ? ? ?
?
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ? ?VALUE
------------------------------------ ----------- ------------------------------
local_listener ? ? ? ? ? ? ? ? ? ? ? string
remote_listener ? ? ? ? ? ? ? ? ? ? ?string ? ? ?LISTENERS_DEVDB
?
tnsnames.ora
LISTENERS_DEVDB =
? (ADDRESS_LIST =
? ? (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
? ? (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
? )
?
listener.ora(除掉SID_LIST_LISTENER_NAME項)
LISTENER_RAC1 =
? (DESCRIPTION_LIST =
? ? (DESCRIPTION =
? ? ? (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521)(IP = FIRST))
? ? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521)(IP = FIRST))
? ? )
? )
3、兩者聯合使用
Server-Side LB和Client-Side LB不是互斥的,兩者可以一起工作,這個時候客戶端的連接請求會先從地址列表中隨機選擇一個地址,然后向該地址的Listener發送請求;Listener接到請求后,根據各個節點負載情況從中挑選出最合適的節點轉發連接請求。
工作原理:當客戶端發起連接時,會從地址列表中隨機選取一個,再使用隨機算法把連接請求分散到各個實例。
存在缺點:
1.1)分配連接時沒有考慮每個節點的真實負載,最后分配不過不一定是平衡
1.2)隨機算法需要長時間片,如果在短時間內同時發起多個連接,這些連接有可能被分配到一個節點上
1.3)有些情況下,連接可能被分配到故障節點上
配置方法:在tns中添加LOAD_BALANCE = YES條目
2、服務器端均衡(Server-Side LB)
工作原理:
2.1)該均衡實現是依賴于Listener收集的負載信息。在數據庫運行過程中,PMON后臺進程會收集數系統的負載信息,然后登記到Listener中。
2.2)PMON進程不僅會向本地的Listener注冊,也會想其他節點上的Listener注冊,但到底向何處注冊,是由Remote_Listeners和Local_Listener這兩個參數決定。Local_Listener不用設置,而Remote_Listeners需要設置,參數值有一個tnsnames項。
2.3)當收到客戶端連接請求時,就會把連接轉給負載最小的節點,這個節點可能是自己,也可能是其他節點,也就是Listener會轉發客戶端的連接請求。
配置方法:
SQL> show parameter listener; ? ? ? ?
?
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ? ?VALUE
------------------------------------ ----------- ------------------------------
local_listener ? ? ? ? ? ? ? ? ? ? ? string
remote_listener ? ? ? ? ? ? ? ? ? ? ?string ? ? ?LISTENERS_DEVDB
?
tnsnames.ora
LISTENERS_DEVDB =
? (ADDRESS_LIST =
? ? (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
? ? (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
? )
?
listener.ora(除掉SID_LIST_LISTENER_NAME項)
LISTENER_RAC1 =
? (DESCRIPTION_LIST =
? ? (DESCRIPTION =
? ? ? (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521)(IP = FIRST))
? ? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521)(IP = FIRST))
? ? )
? )
3、兩者聯合使用
Server-Side LB和Client-Side LB不是互斥的,兩者可以一起工作,這個時候客戶端的連接請求會先從地址列表中隨機選擇一個地址,然后向該地址的Listener發送請求;Listener接到請求后,根據各個節點負載情況從中挑選出最合適的節點轉發連接請求。
總結
- 上一篇: 【AWR】调整AWR数据采样时间间隔及历
- 下一篇: RAC Failover三种方式