1.客户端负载均衡
这种方法是在客户端的tnsnames.ora中,添加load_balance=yes来实现的。
83 =
(description=
(load_balance=on)
(failover=on)
(address_list=
(address=(protocol=tcp)(host=168.1.0.83)(port=1521))
(address=(protocol=tcp)(host=168.1.0.84)(port=1521))
)
(connect_data=
(service_name=ncsb)
(failover_mode=
(type=select)
(method=basic)
)
)
)
这种配置的特点是:当客户端与服务器端欲建立连接时,会从配置的列表里随机选择一个,而不是根据服务器的负载情况进行分发。这种配置方法是8I时候的方法。
2.服务器端负载均衡
顾名思义,这种配置方法,客户端可以不做任何关于负载均衡的配置。由服务器根据各个节点的负载情况去决定分发到那个实例。要实现这种功能,必须配置remote_listener参数。设置了这个参数后,监听器就能依靠PMON进程的注册来监控到各个实例的负载信息,注册的间隔从1分钟~10分钟不等,实例负载越大,注册的会越频繁。注册的内容包括各个节点的进程数量,节点负载,实例负载等。而且PMON进程不仅会对本机注册还会向其他实例注册,注册的目标是依据remote_listener的内容。remote_listener的设置是在服务器端的tnsnames.ora里。
如:两节点remote_listener参数的值都设置为ncsb_si
可以在两个节点的tnsnames.ora里设置如下:
ncsb_si=
(address_list=
(ADDRESS = (PROTOCOL =TCP) (HOST = 168.1.0.83)(PORT = 1521)
(ADDRESS = (PROTOCOL =TCP) (HOST = 168.1.0.84)(PORT = 1521)
)
虽然服务器端的负载均衡似乎跟客户端的配置无关,即不管客户端的tnsnames.ora配置的是单实例的内容,也就是只配置了一个节点的连接条目,还是集群的条目,最终都将有服务器端来判断将连接建立在哪个节点。可是我在实际工作中发现实现这种功能还有一个条件就是客户端配置的必须是service_name而不能是sid,否则将不能实现这个功能。
例如如下的配置:
83 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 168.1.0.83)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(sid= ncsb1)
)
)
采取这种配置的话,即使设置了remote_listener,监听也都会将连接发送到168.1.0.83上。必须设置service_name才可以。
83 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 168.1.0.83)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ncsb)
)
)
从listener.log文件里,可以看到PMON的更新信息:
08-JAN-2010 20:22:43 * service_update * ncsb1 * 0
08-JAN-2010 20:24:17 * service_update * ncsb2 * 0
08-JAN-2010 20:24:17 * service_update * ncsb2 * 0
08-JAN-2010 20:31:09 * service_update * ncsb2 * 0
08-JAN-2010 20:31:09 * service_update * ncsb2 * 0
08-JAN-2010 20:31:11 * service_update * ncsb1 * 0
08-JAN-2010 20:31:56 * service_update * ncsb1 * 0
[ 本帖最后由 wei-xh 于 2010-7-9 12:45 编辑 ]
这种方法是在客户端的tnsnames.ora中,添加load_balance=yes来实现的。
83 =
(description=
(load_balance=on)
(failover=on)
(address_list=
(address=(protocol=tcp)(host=168.1.0.83)(port=1521))
(address=(protocol=tcp)(host=168.1.0.84)(port=1521))
)
(connect_data=
(service_name=ncsb)
(failover_mode=
(type=select)
(method=basic)
)
)
)
这种配置的特点是:当客户端与服务器端欲建立连接时,会从配置的列表里随机选择一个,而不是根据服务器的负载情况进行分发。这种配置方法是8I时候的方法。
2.服务器端负载均衡
顾名思义,这种配置方法,客户端可以不做任何关于负载均衡的配置。由服务器根据各个节点的负载情况去决定分发到那个实例。要实现这种功能,必须配置remote_listener参数。设置了这个参数后,监听器就能依靠PMON进程的注册来监控到各个实例的负载信息,注册的间隔从1分钟~10分钟不等,实例负载越大,注册的会越频繁。注册的内容包括各个节点的进程数量,节点负载,实例负载等。而且PMON进程不仅会对本机注册还会向其他实例注册,注册的目标是依据remote_listener的内容。remote_listener的设置是在服务器端的tnsnames.ora里。
如:两节点remote_listener参数的值都设置为ncsb_si
可以在两个节点的tnsnames.ora里设置如下:
ncsb_si=
(address_list=
(ADDRESS = (PROTOCOL =TCP) (HOST = 168.1.0.83)(PORT = 1521)
(ADDRESS = (PROTOCOL =TCP) (HOST = 168.1.0.84)(PORT = 1521)
)
虽然服务器端的负载均衡似乎跟客户端的配置无关,即不管客户端的tnsnames.ora配置的是单实例的内容,也就是只配置了一个节点的连接条目,还是集群的条目,最终都将有服务器端来判断将连接建立在哪个节点。可是我在实际工作中发现实现这种功能还有一个条件就是客户端配置的必须是service_name而不能是sid,否则将不能实现这个功能。
例如如下的配置:
83 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 168.1.0.83)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(sid= ncsb1)
)
)
采取这种配置的话,即使设置了remote_listener,监听也都会将连接发送到168.1.0.83上。必须设置service_name才可以。
83 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 168.1.0.83)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ncsb)
)
)
从listener.log文件里,可以看到PMON的更新信息:
08-JAN-2010 20:22:43 * service_update * ncsb1 * 0
08-JAN-2010 20:24:17 * service_update * ncsb2 * 0
08-JAN-2010 20:24:17 * service_update * ncsb2 * 0
08-JAN-2010 20:31:09 * service_update * ncsb2 * 0
08-JAN-2010 20:31:09 * service_update * ncsb2 * 0
08-JAN-2010 20:31:11 * service_update * ncsb1 * 0
08-JAN-2010 20:31:56 * service_update * ncsb1 * 0
[ 本帖最后由 wei-xh 于 2010-7-9 12:45 编辑 ]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-667644/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-667644/