标签:
10g及之前的版本要实现负载均衡,除了购买专门设备,通常是通过客户端配置方式去实现。
利用oracle驱动自身的load_balance、addresslist属性,将所有节点的虑拟IP写入配置文件中,实现客户端的负载均衡,这种方式存在一个问题,就是一旦服务器端发生变化,比如增减集群节点、节点虑拟IP发生变化时,所有应用的客户端都需要修改配置。
11g开始引入了SCAN(Single Client Access Name)和GNS(Grid Naming Service)实现服务器端的负载均衡:
SCAN --single client access name:
客户端与RAC之前又架设了一层,目的是把RAC的IP信息对客户屏蔽掉, 让用户更加方便透明,不用再去管去连接哪个实例,新增加节点或删除节点,客户端不需要再做任何配置,目的就是为了:扩展性。
GNS--Grid Naming Service
与SCAN搭配使用,可以不配置RAC的IP地址,使用DHCP服务来分配IP
Oracle官方推荐GNS+SCAN方式,可以隐藏集群各节点的IP,客户端仅过特定的名称访问集群,不需要理会集群节点的增减或IP的变化,但还是需要依整于DNS和DHCP服务,客户端也需要设置特定的DNS地址,多台设备多个故障点,在实际的生产环境中并不好用。
于是有一种最简化方式,在最少工作的情况下,实现服务器端的负载均衡。
3节点集群,安装要点如下:
1.在不启用GNS情况下只能设置1个SCANIP,写在hosts文件中,本例为192.168.132.110
2.安装grid的过程中不要勾选GNS
3.安装好database后需要修改各节点local_listener属性的HOST为该节点的虚拟IP,否则客户端无法用SCANIP连接数据库;
4.客户端配置文件(只需要SCANIP即可,不需要知道各节点的虚拟IP)
负载均衡测试:编一个小程序,用100个进程连接数据库,并输出命中每个节点的次数。
测试结果:各节点维持在33%左右。
oracle11g RAC for solaris 无DHCP、DNS 利用SCAN实现连接级别的负载均衡
标签:
原文地址:http://www.cnblogs.com/bjbr/p/4261811.html