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方法的更多相关文章

  1. 负载均衡获得真实源IP的6种方法 【转】

    除了X-FORWARD-FOR,负载均衡中获得真实源IP的方法还有很多种, 本文抛砖引玉,主要介绍获得真实源IP的多种方法,而不是具体配置, 负载均衡获得真实IP的方法有很多种,将形成专题文章, 本文 ...

  2. 负载均衡获得真实源IP的6种方法

    除了X-FORWARD-FOR,负载均衡中获得真实源IP的方法还有很多种. 本文抛砖引玉,主要介绍获得真实源IP的多种方法,而不是具体配置. 负载均衡获得真实IP的方法有很多种,将形成专题文章. 本文 ...

  3. 高并发应用场景下的负载均衡与故障转移实践,AgileEAS.NET SOA 负载均衡介绍与实践

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  4. MySQL 高可用:mysql+Lvs+Keepalived 负载均衡及故障转移

    系统信息: mysql主库 mysql从库 VIP 192.168.1.150 mysql 主主同步都设置 auto-increment-offset,auto-increment-increment ...

  5. 负载均衡实现故障vip自动漂移

    环境说明演示vip自动漂移 192.168.237.50 192.168.237.51 vip: 192.168.237.5 keepalived开源软件实现 keepalived可以实现当vip挂的 ...

  6. 集群 & 负载均衡

    集群(Cluster) 指一组计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信,实现分布式计算.在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高 ...

  7. (转)详解LVS负载均衡之三种工作模型原理和10种调度算法

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LV ...

  8. web负载均衡整理

    参考:http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166350.html http://www.cnblogs.com/loving ...

  9. 负载均衡DNS和反向代理优缺点

    负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡(又 ...

随机推荐

  1. Spring Boot 最简单的解决跨域问题

    跨域问题(CORS) CORS全称Cross-Origin Resource Sharing,意为跨域资源共享.当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求.如果此时另一 ...

  2. Java中中文排序器

    在Java中使用Collator类按照汉字拼音排序字符串 public static void main(String[] args) throws Exception{ String[] strs ...

  3. 谁再问Servlet的问题,我就亲自上门来教学了

    1. 概述 在这篇简短的文章中,我们将从概念上理解什么是servlet 和 servlet 容器以及它们是如何工作的. 同时,还能在请求.响应.会话对象.共享变量和多线程的上下文中看到它们的身影. 2 ...

  4. Java进阶专题(十九) 消息中间件架构体系(1)-- ActiveMQ研究

    前言 MQ全称为Message Queue,即消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛.开发中消息队列通常有如下应用场景:1.任务异步处理.将不需要同步处理的 ...

  5. [日常摸鱼]bzoj1038 [ZJOI2008]瞭望塔-模拟退火/几何

    题意:给一条平面内$n$个点的折线,要求在折线上搞一个高度$h$的瞭望塔,能够看见折线上所有的点,求$h$的最小值($n \leq 300$) updata2018.1.21 正解半平面交在另一篇里面 ...

  6. Animate..css的一些属性使用

    使用基本的代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  7. 个人微信公众号搭建Python实现 -接收和发送消息-基本说明与实现(14.2.1)

    @ 目录 1.原理 2.接收普通消息 3.接收代码普通消息代码实现 1.原理 2.接收普通消息 其他消息类似参考官方文档 3.接收代码普通消息代码实现 from flask import Flask, ...

  8. CSRF学习

    前提环境:网站存在CSRF漏洞(也就是过于相信访问请求,只判断了用户是否存在cookie,并未判断请求的发起者) CSRF攻击原理,用户A需要转账,用户A正常向银行网站发送请求登录,登录成功后银行网站 ...

  9. C#注册OCX控件

    注意 COM组件注册到注册表中的位置,是CLSID还是TypeLib 注册方法 代码执行 //声明注册方法 [DllImport("C:\\Windows\\barcodex.ocx&quo ...

  10. (二)、vim即gvim的炫酷搜索模式与技巧

      一.进入搜索模式 1. 打开文件,狂按  <Esc> 进入normal模式,然后按  /  或者  :/  进入搜索模式,添加上关键字例如world,按回车即搜索world: :/wo ...