scan ip的理解

这些天做11g的RAC实验,才发现oracle 11g的scan ip这个概念,当时在安装的时候,直接在host文件中加入了一条scan对应的解析,之后安装成功。之后才在网上搜了很多资料,自认为对scan ip有了一定的认识,只是身边每个讨论的人,也许有错误的地方,请看到的人不吝指正。

scan全程为simple client access name的缩写,并不是英文扫描的意思。这个功能是在Oracle 11gR2版本才有的。

scan的作用

这个功能的作用是:在服务器端和客户端之间增加了一层虚拟接口,原本客户端的tnsnames中为了实现负载均衡,需要同时注册多个节点服务器的侦听信息,这样,当服务器端增加或删除节点的时候,相应的服务器端的tnsnames文件就要做相应的维护,比如服务器端增加节点,要在客户端的tnsnames中增加该节点的侦听信息,删除节点则要在客户端的tnsnames中删除该节点的侦听信息。这是在11gR2之前的负载均衡实现方式。

scan与vip的区别

这种方式看起来挺好,但是,如果对于大型局域网,客户端有成百上千个,而且分布在各个地方,原本简单的事就不简单了。scan ip就是针对这一问题出现的,它是在服务器端和客户端之间建立一层虚拟访问层,客户端的tnsnames中只有scan ip的侦听信息,即客户端直接访问scan ip而不直接访问真实的服务器ip。而scan ip是浮动的,它和节点本身的vip的区别就在于,vip的监听程序是跟instance绑定的,设置vip的作用是,当节点宕机之后,vip会自动的跳到正常节点上,但是vip对应的监听程序并不会跳转,本来,如果不适用vip的话,原本连接到宕机节点上的程序就会得不到服务器回应,然后等待连接超时的时候走完,客户端再重试,重试一定次数仍然失败才会转到其他节点上,这个过程就相当耗时了。若果使用vip的话,节点宕机之后vip跳到正常节点上,原本访问宕机节点的程序请求就发送到了vip跳转的节点,该正常节点收到连接请求后直接给该端点返回错误信息,告知它原本访问的节点已经坏掉了,这是客户端就会使用tns中的其他地址。这个时间相对于不适用vip的时间要小很多。

而scan ip机制是ip跟对应的监听程序一起浮动,如果a节点宕机,则原本停留在该节点的scan ip和监听程序会一起跳转到其他可用节点上。因此对于客户端而言,就不需要更改原本的配置信息,只需要一直访问scan ip就可以正常使用数据库,至于scan ip跟真实的节点的对应关系,则是scan ip这层要关心和实现的

scan的实现方式

scan ip有两种实现方式,一种是DNS,一种是oracle自身提供的GNS(grid Naming Service)。其中GNS是针对DHCP方式的,即服务器端的vip和scan ip是动态分派的,具体什么的都没有研究,我只是看了DNS的实现方式。
因为host文件的域名解析方式不能实现一个域名和多个ip的对应,如果在host文件中有一个域名对应多个不同ip的解析行,则在域名解析的时候会只有第一行起作用。而DNS服务器却可以实现一个域名与多个ip的对应。并且DNS服务器使用 round-robin(轮叫调度)的算法进行多个ip之间的调度。
比如域名与ip的对应为
scan.scan.com     192.168.1.221
                          192.168.1.222   
                           19 2.168.1.223
则cmd下使用nslookup  scan.scan.com时,则连续多次解析出的结果的第一个ip会依次为221,222,223。从这个层面上看,也是实现了一定程度的负载均衡。
此外,oracle规定scan ip最多有3个,最少有1个。

DNS服务器的设置

首先说一下dns服务器的位置,dns服务器常理上位于独立于节点服务器的一台单独服务器上。它跟oracle服务器几乎没有联系,主要对所有的客户端提供域名解析服务。因此,所有客户端的DNS服务器地址需要是这台服务器的ip。但是,如果没有单独的服务器,也可以把DNS服务安装在节点上,不过,因为如果恰好DNS服务所在节点坏掉的话,会直接影响数据库的访问,所以,最好在所有的节点上都安装上DNS服务。
我是在window server  2003R2上做的dns,建好DNS服务器后,新建一个域名(这个域可以实际不存在),在这个域下新建主机,例如建立主机名scan,然后输入ip地址,依次建立三个同样主机名不同ip的对应DNS条目即可。
建好之后可以使用nslookup测试一下。

一些疑惑的点

我的实验环境为两个节点,使用了DNS方式实现解析。因此,一个scan ip在一个节点,另外两个scan ip在另外一个节点上,但如果服务器端有超过3个节点,那这个scan ip不够分啊,是不是有的节点就不在工作了,不再参与负载均衡了,答案肯定是否定的,但那些没有分到scan ip的节点是怎么工作的呢?这个问题曾困扰了我一段时间。
现在我的理解是:
虽然scan ip浮动到某个节点上,但是并不是跟它所在的节点的实例绑定的,客户端访问域名解析出来的scan ip,则这个访问请求会在scan ip所在节点由scan层根据负载均衡机制进行处理,处理结果会确定这个请求被分配到那个vip,这个vip才是确定节点的关键。
<think>好的,我现在要解决用户关于DNS配置中缺少Scan IP的问题。首先,我需要明确用户的具体需求。用户提到在/etc/resolv.conf文件中自动添加了nameserver 223.5.5.5,但缺少Scan IP。这里的“Scan IP”可能指的是用于网络扫描或特定解析的DNS服务器地址。需要确认Scan IP的具体用途,例如是否是内部DNS服务器或特定服务的解析地址。 接下来,我需要回忆Linux系统中DNS配置的相关知识。通常,DNS配置可以通过修改/etc/resolv.conf文件直接添加nameserver条目,但该文件可能由网络管理服务(如systemd-resolved、NetworkManager)动态生成,手动修改可能会被覆盖。因此,用户需要找到持久化配置的方法。 对于不同的Linux发行版和网络管理工具,配置方法可能不同。例如,使用NetworkManager的系统可以通过nmcli命令或编辑网络配置文件;而使用netplan的系统(如Ubuntu)则需要修改YAML配置文件。此外,用户可能需要检查是否有其他服务(如DHCP)覆盖了DNS设置,导致Scan IP被移除。 然后,我需要考虑用户可能遇到的常见问题。例如,用户可能已经手动编辑了/etc/resolv.conf,但重启后配置丢失。这时候需要指导用户使用正确的持久化配置方法,而不是直接修改该文件。同时,提醒用户在修改配置前备份原有文件,防止意外错误。 还需要验证用户提到的引用内容。引用[1]提到设置后重启电脑会自动添加nameserver 223.5.5.5,这可能是因为用户通过某个网络管理工具进行了配置,但未包含Scan IP。因此,用户需要将Scan IP添加到相应的配置源中,而不是直接修改resolv.conf。 可能的解决方案步骤包括: 1. 确定当前使用的网络管理工具(NetworkManager、systemd-networkd等)。 2. 根据工具的不同,找到对应的配置文件进行修改,添加Scan IP作为额外的nameserver。 3. 应用配置并重启网络服务,确保更改生效。 4. 验证/etc/resolv.conf是否包含新的DNS服务器。 同时,需要考虑到用户的技术水平,提供具体的命令行示例,例如使用nmcli修改连接配置,或者编辑/etc/network/interfaces文件。对于使用systemd-resolved的情况,可能需要配置/etc/systemd/resolved.conf。 最后,生成相关问题,帮助用户深入理解DNS配置和常见问题,例如如何设置备用DNS、处理配置覆盖问题等。</think>### 分步解决方案 **步骤1:确定网络管理工具类型** - 查看当前使用的网络管理工具: ```bash # 检查NetworkManager状态 systemctl status NetworkManager # 检查systemd-networkd状态 systemctl status systemd-networkd ``` 根据输出结果选择对应的配置方式。 **步骤2:通过工具配置DNS(以NetworkManager为例)** - 修改网络连接配置,添加Scan IP(假设Scan IP为`192.168.1.100`): ```bash # 列出所有连接 nmcli connection show # 修改目标连接的DNS配置(将"eth0"替换为实际连接名) nmcli connection modify eth0 ipv4.dns "223.5.5.5 192.168.1.100" # 重启网络连接 nmcli connection down eth0 && nmcli connection up eth0 ``` **步骤3:验证DNS配置** - 检查`/etc/resolv.conf`是否包含新增的Scan IP: ```bash cat /etc/resolv.conf ``` 正确输出应包含类似: ```text nameserver 223.5.5.5 nameserver 192.168.1.100 ``` **步骤4:处理配置覆盖问题** - 若使用`systemd-resolved`,需修改其配置文件: ```bash sudo nano /etc/systemd/resolved.conf ``` 添加或修改以下行: ```ini DNS=223.5.5.5 192.168.1.100 ``` 重启服务: ```bash systemctl restart systemd-resolved ``` ### 关键配置说明 1. **直接编辑网络配置文件**(适用于静态IP,以Ubuntu为例): ```bash sudo nano /etc/netplan/01-netcfg.yaml ``` 添加DNS配置: ```yaml network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.2/24] gateway4: 192.168.1.1 nameservers: addresses: [223.5.5.5, 192.168.1.100] ``` 应用配置: ```bash sudo netplan apply ``` 2. **防止`/etc/resolv.conf`被覆盖**: - 若文件是符号链接(如指向`/run/systemd/resolve/stub-resolv.conf`),需通过管理工具配置而非直接修改。 ### 验证命令 ```bash # 测试DNS解析是否包含Scan IP nslookup example.com # 查看所有生效的DNS服务器 systemd-resolve --status ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值