首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我们在使用扫描时仍然需要VIP?

问为什么我们在使用扫描时仍然需要VIP?
EN

Database Administration用户
提问于 2020-06-02 05:22:13
回答 1查看 1.4K关注 0票数 0

当我们使用单个客户端访问名称(扫描)时,客户端通过DNS或GNS中的扫描名称连接到数据库,如下例所示:

代码语言:javascript
复制
stackdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan.stack.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = stackdb)
    )
  )

但是为什么我们在配置集群软件时仍然需要指定一个虚拟IP地址(VIP)?VIP在哪里用?

我知道在11.2之前我们像这样使用VIP

代码语言:javascript
复制
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS=(PROTOCOL=tcp)(HOST=rac1-vip.localdomain)(PORT=1521))
      (ADDRESS=(PROTOCOL=tcp)(HOST=rac2-vip.localdomain)(PORT=1521)))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
EN

回答 1

Database Administration用户

发布于 2020-06-02 08:32:19

客户端连接到扫描侦听器(S)上监听扫描vip(s)。扫描监听器将请求转发给在节点vip上侦听的适当的本地侦听器。因此,节点vip仍然用于连接。

侦听器必须在最终连接的节点上运行,以生成服务器进程。运行在rac1上的扫描侦听器不能在节点rac2上生成进程。您需要一个本地侦听器来侦听本地地址。该本地地址,即使它只是虚拟的,而不是固定的,是节点vip。

虚拟IP地址概述

从数据库客户端到Oracle RAC数据库实例的典型连接尝试可以总结如下:

  1. 数据库客户端连接到扫描(包括公共网络上的扫描VIP ),为扫描侦听器提供有效的服务名称。
  2. 然后,扫描侦听器确定承载此服务的数据库实例,并将客户端路由到相应节点上的本地或节点侦听器。
  3. 节点侦听器侦听节点VIP和给定端口,检索连接请求并将客户端连接到本地节点上的一个实例。

拥有vip的最初目的是提供在节点故障时快速返回响应的能力。

如果rac1关闭并使用其地址启动连接尝试,客户端必须等待tcp超时才能获得任何响应。如果使用虚拟地址进行连接尝试,即使vip在rac2上运行且不提供请求,客户端将立即得到响应,并可以尝试连接字符串中列出的另一个地址,从而降低连接的总时间。

虚拟IP地址概述

如果节点失败,则VIP地址将失败转移到VIP地址可以接受TCP连接的另一个节点,但它不接受到Oracle数据库的连接。试图连接到不在其主节点上的VIP地址的客户端将收到快速连接拒绝错误,而不是等待TCP连接超时消息。

此外,一些老客户端无法使用扫描。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/268337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档