负载均衡和故障转换(Failover)的连接RAC方法
TAF:Transparent Application Failover,透明的应用切换,即在切换的过程中,用户感知不到。可以实现会话的切换(无法实现事务的切换,即没有提交的事务会回滚),即在不断开连接的情况下,将当前会话切换到另一个实例。JDBC驱动无法使用TAF特性,因此只能断开连接并重新连接。
SCANIP+SERVICE实现负载均衡和TAF
1.配置SERVICE

以上为添加Service的语法,重点关注几个选项。
-d 给哪一个数据库添加service,有可能clusterware管理好几个数据库
-s 新建的service的名称
-r 优先选择哪一个实例,实例间用逗号隔开
-a 优先选择的实例全部不可用时使用这里面的实例。
-r 内的实例是负载均衡的,-r和-a之间是FailOver的,因此两节点的实例需要负载均衡的话,应该讲两节点实例都写入-a中
-p 一般选择basic,perconnect即在其中一个实例建立会话的时候,在另一个实例上面也新建一个连接。当第一个实例不可用时,可以实现会话的快速转移。但是,这种方法想到耗费资源、
basic,只有当实例1的不可用时,才在实例2创建会话并将会话转移过来
-y 自动FAILOVER还是手动FAILOVER
-e session的话是FAILOVER的时候不会返回剩余的SELECT结果集。SELECT不会断开会话,未提交的事务回归。select语句返回剩余的结果集、
-m 一般与-p参数相同
-w 失败重试的时间间隔
-z 失败重试几次
[oracle@rac01 ~]$ srvctl add service -d racdb -s rac -r racdb1,racdb2 -P BASIC -y AUTOMATIC -e select -m BASIC -w 3 -z 10
[oracle@rac01 ~]$ srvctl start service -d racdb -s rac
[oracle@rac01 ~]$ srvctl config service -d racdb -s rac

2.配置客户端TNS
DG=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=10.206.132.238)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=rac)
)
)
中间10.206.132.238是SCANIP,SERVICE_NAME是Service的名称
测试负载均衡:使用swingbench压测工具,创建50个连接,执行如下SQL可以看到,50个连接平均的分配到两个实例上

测试TAF:JDBC无法使用TAF特性,因此不要使用JDBC类客户端,这里直接用SQLPLUS进行测试

连接后,查询到会话在实例1上面

重启实例1所在服务器,再次查询

这时打开连接数据库的sqlplus发现并没有断开,而且依旧可以执行命令

配置本地TNS实现负载均衡和TAF
1.删除上一步创建的service

2.配置本地的TNS
MONKEY=
(DESCRIPTION=
(FAILOVER=on)
(LOAD_BALANCE=on)
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=10.206.132.237)
(PORT=1521)
)
(ADDRESS=
(PROTOCOL=TCP)
(HOST=10.206.132.238)
(PORT=1521)
)
)
(CONNECT_DATA=
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic)
)
(SERVER=dedicated)
(SERVICE_NAME=racdb)
)
)
10.206.132.236和10.206.132.238是两个VIP。连接的时候会随机选择一个IP实现负载均衡。
这种情况下,没有测出来负载均衡,但是可以实现TAF
SCANIP和SERVICE实现TAF,并分业务(不用负载均衡)
[oracle@rac01 ~]$ srvctl add service -d racdb -s rac01 -r racdb1 -a racdb2 -P basic -y automatic -e select
[oracle@rac01 ~]$ srvctl add service -d racdb -s rac02 -r racdb2 -a racdb1 -P basic -y automatic -e select
[oracle@rac01 ~]$ srvctl start service -d racdb
[oracle@rac01 ~]$ srvctl status service -d racdb

客户端连接
sqlplus monkey/monkey@10.206.132.239:1521/rac01
sqlplus monkey/monkey@10.206.132.239:1521/rac02
可以实现业务分离和TAF
本地TNS实现TAF,并分业务(不用负载均衡)
MONKEY=
(DESCRIPTION=
(ADDRESS_LIST=
(FAILOVER=on)
(LOAD_BALANCE=off)
(ADDRESS=
(PROTOCOL=TCP)
(HOST=10.206.132.237)
(PORT=1521)
)
(ADDRESS=
(PROTOCOL=TCP)
(HOST=10.206.132.238)
(PORT=1521)
)
)
(CONNECT_DATA=
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic)
(RETRIES=10)
(DELAY=3)
)
(SERVICE_NAME=racdb)
)
)
负载均衡和故障转换(Failover)的连接RAC方法的更多相关文章
- 负载均衡获得真实源IP的6种方法 【转】
除了X-FORWARD-FOR,负载均衡中获得真实源IP的方法还有很多种, 本文抛砖引玉,主要介绍获得真实源IP的多种方法,而不是具体配置, 负载均衡获得真实IP的方法有很多种,将形成专题文章, 本文 ...
- 负载均衡获得真实源IP的6种方法
除了X-FORWARD-FOR,负载均衡中获得真实源IP的方法还有很多种. 本文抛砖引玉,主要介绍获得真实源IP的多种方法,而不是具体配置. 负载均衡获得真实IP的方法有很多种,将形成专题文章. 本文 ...
- 高并发应用场景下的负载均衡与故障转移实践,AgileEAS.NET SOA 负载均衡介绍与实践
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- MySQL 高可用:mysql+Lvs+Keepalived 负载均衡及故障转移
系统信息: mysql主库 mysql从库 VIP 192.168.1.150 mysql 主主同步都设置 auto-increment-offset,auto-increment-increment ...
- 负载均衡实现故障vip自动漂移
环境说明演示vip自动漂移 192.168.237.50 192.168.237.51 vip: 192.168.237.5 keepalived开源软件实现 keepalived可以实现当vip挂的 ...
- 集群 & 负载均衡
集群(Cluster) 指一组计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信,实现分布式计算.在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高 ...
- (转)详解LVS负载均衡之三种工作模型原理和10种调度算法
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LV ...
- web负载均衡整理
参考:http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166350.html http://www.cnblogs.com/loving ...
- 负载均衡DNS和反向代理优缺点
负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡(又 ...
随机推荐
- [日常摸鱼]poj2420 A Star not a Tree?
题意:给定$n$个点,找一个点使得这个点到所有点的距离之和最小,求出这个最小距离 传说中的模拟退火- #include<cstdio> #include<ctime> #inc ...
- Flink统计日活
.keyBy(0) .window(TumblingProcessingTimeWindows.of(Time.days(1), Time.hours(-8))) .trigger(Continuou ...
- 仵航说 前后端分离,文件上传下载(springBoot+vue+elementUI)仵老大
1.介绍 本文主要是介绍前后端分离的上传下载,后端使用的是SpringBoot,持久层用的是mybatis-plus,前端用的Vue,UI用的elementUI,测试了一下,文本,图片,excel ...
- Elasticsearch索引生命周期管理方案
一.前言 在 Elasticsearch 的日常中,有很多如存储 系统日志.行为数据等方面的应用场景,这些场景的特点是数据量非常大,并且随着时间的增长 索引 的数量也会持续增长,然而这些场景基本上只有 ...
- 有了它(powermock)再也不担心单元测试不达标了
为什么要写单元测试 优点:单元测试可以减少bug率,提升代码的质量.还可以通过单元测试来熟悉业务. 公司硬性要求:有些公司可能还会强制要求,每次新增代码.或者变更代码单测覆盖率要达到多少比例才能申请代 ...
- JavaDailyReports10_13
今天完成了课堂测试二的内容要求,开阔了编程的思路,学到了很多程序设计思想,为以后的学习提供了很多帮助. 明天开始继续完善四则运算的程序,并且开始JavaWeb的学习!
- break continue学习
1.break和continue必须使用在循环或者switch语句中 2.当break语句单独存在时.后面不要定义其他语句,因为后面的语句无法执行到 3.break跳出当前所在循环 4.break跳出 ...
- FileZilla使用教程
FileZilla使用教程和问题汇总 正式开始之前我还是想闲聊几句,毕竟调试解决这些问题,整整耗了我一天半的时间.前不久学校要求上交一个web大作业,然后我们宿舍就寻思光做出来前后端搞头不大,不如整个 ...
- Mapreduce实例--求平均值
求平均数是MapReduce比较常见的算法,求平均数的算法也比较简单,一种思路是Map端读取数据,在数据输入到Reduce之前先经过shuffle,将map函数输出的key值相同的所有的value值形 ...
- java内部类对象使用.this,.new
public class InnerClass { class Content { private int i; public int getVlaue() { return i; } } class ...