from :http://fbirdzp.blogbus.com/logs/62734322.html
Tag: linux DNS SCAN nslookup
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及 本声明
http://fbirdzp.blogbus.com/logs/62734322.html

SCAN是Oracle11gR2的新特性,可以把scan理解为一个虚拟主机名,它对应的是整个RAC集群。客户端主机只需通过这个scan name即可访问数据库集群的任意节点。
当然访问的节点是随机的,oracle强烈建议通过DNS Server的round robin模式配置解析SCAN,实现负载均衡(即轮换连接SCAN对应的IP地址)。这有点类似通过vip和listener loadbalance配置实现负载均衡的原理。
关于搭建DNS server已经有很丰富的网络资源了,本文记录一下自己初次搭建时遇到的问题及一些常规的搭建配置流程。
系统环境
DNS Server以及Oracle RAC各节点主机均安装如下版本操作系统:
[root@db ~]# uname -a
Linux db2 2.6.18-92.el5 #1 SMP Fri May 23 23:40:43 EDT 2008 x86_64 x86_64 
x86_64 GNU/Linux
[root@db ~]# lsb_release -a
LSB Version:    :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:
                 graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: #EnterpriseEnterpriseServer
Description:    #Enterprise Linux Enterprise Linux Server release 5.2 
                 (Carthage)
Release:        5.2
Codename:       Carthage
[root@db ~]# 
 
网络环境
dns server ip : 172.17.0.10
public ip on node1 : 172.17.0.23
public ip on node2 : 172.17.0.24
安装DNS所需RPM包
  • bind-9.3.4-6.P1.el5.x86_64.rpm
  • bind-chroot-9.3.4-6.P1.el5.x86_64.rpm
  • caching-nameserver-9.3.4-6.P1.el5.x86_64.rpm
 
DNS服务的安装
1.通过"rpm –q ***”命令,检查dns server主机上是否安装上述三个rpm包。
2.使用"rpm –ivh rpm_name”安装上述三个rpm包。
配置SCAN
1.正向解析配置
主机上创建/var/named/chroot/var/named/localdomain.zone文件,添加内容如下:
[root@localhost named]# cat /var/named/chroot/var/named/localdomain.zone 
$TTL    86400
@               IN SOA  localhost root.localhost (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           localhost
localhost        IN A            127.0.0.1
dwdb-scan        IN A            172.17.0.25
dwdb-scan IN A 172.17.0.26
dwdb-scan IN A 172.17.0.27
[root@localhost named]#
注意:
  • 正反向解析使用的IP地址并非对应RAC各节点的public ip
  • IP地址应该为RAC各节点没有使用或无法访问的ip地址
  • 这里采用的是和public ip同一网段尚未分配的ip
第一次配置的时候,由于使用了节点的public ip做为dns scan绑定的ip地址,在upgrade11g时出现报错提示,升级失败。后改为尚未分配的ip地址即可。
2.反向解析配置
step1,创建反向解析文件/var/named/chroot/var/named/0.17.172.in-addr.arpa,并添加如下内容:
[root@localhost named]# cat /var/named/chroot/var/named/0.17.172.in-addr.arpa
$ORIGIN 0.17.172.in-addr.arpa.
$TTL 1H
@       IN      SOA     maggie.localdomain.     root.maggie.localdomain. (      2
                                                3H
                                                1H
                                                1W
                                                1H )
0.17.172.in-addr.arpa.         IN NS      maggie.localdomain.
25     IN PTR  dwdb-scan.
26     IN PTR  dwdb-scan.
27     IN PTR  dwdb-scan.
[root@localhost named]#
 
step2,配置/etc/name.conf,添加如下zone配置:
zone "0.17.172.in-addr.arpa" {
        type master;
        file "0.17.172.in-addr.arpa";
        allow-transfer { 
172.17.0.25;
172.17.0.26;
172.17.0.27;
 };
};
 
这里需要注意的是,反向解析从左到右读取ip地址时是以相反的方向解释的,所以需要将ip地址反向排列。这里,172.17.0.***网段的反向解析域名为"0.17.172.in-addr.arpa”。
3.DNS客户端配置
主机默认通过本地解析域名,也就是读取/etc/hosts文件里的解析。对于配置DNS的网络环境,特别是RAC各节点如果使用SCAN特性的话,必须修改/etc/resolv.conf文件配置本地使用哪台DNS Server进行域名解析工作。
 
[root@ems Server]# cat /etc/resolv.conf
nameserver 172.17.0.10   ---添加dns server地址
search localdomain
[root@ems Server]# 
遇到的问题
问题1,启动dns server时,报'localhost.zone'找不到,大概是这个内容。
错误日志找不到了,但问题原因被大拿同事搞定。其实是因为最初并没有安装caching-nameserver-9.3.4-6.P1.el5.x86_64.rpm的包引起的,最早找到的安装文档并没有提示安装这个包,最后通过如下命令确定有如下依赖关系:
[root@localhost ~]# rpm -qf /etc/named.conf 
bind-9.3.4-6.P1.el5
caching-nameserver-9.3.4-6.P1.el5
[root@localhost ~]# 
 
问题2,启动dns server时报如下错误:
[root@localhost ~]# service named start
Starting named: 
Error in named configuration:
localdomain.zone:10: dwdb_scan.localdomain.localdomain: bad owner name (check-names)
localdomain.zone:11: dwdb_scan.localdomain.localdomain: bad owner name (check-names)
localdomain.zone:12: dwdb_scan.localdomain.localdomain: bad owner name (check-names)
zone localdomain/IN: loaded serial 42
… …
 
解决办法,dns的域名定义时貌似不支持下划线导致,最初定义scan name时为"dwdb_scan",修改成"dwdb-scan",问题解决。
网络检测
通过nslookup在RAC节点1上检测如下:
 
--正向解析,可以看到scan name绑定的3个ip地址
[root@dwdb1 ~]# nslookup dwdb-scan
Server:         172.17.0.10
Address:        172.17.0.10#53
Name:   dwdb-scan.localdomain
Address: 172.17.0.27
Name: dwdb-scan.localdomain Address: 172.17.0.25
Name: dwdb-scan.localdomain Address: 172.17.0.26
--采用round robin模式的scan,每次解析时会轮换到下一个地址
[root@dwdb1 ~]# nslookup dwdb-scan
Server:         172.17.0.10
Address:        172.17.0.10#53
Name:   dwdb-scan.localdomain
Address: 172.17.0.26
Name:   dwdb-scan.localdomain
Address: 172.17.0.27
Name: dwdb-scan.localdomain Address: 172.17.0.25 [root@dwdb1 ~]# nslookup dwdb-scan Server: 172.17.0.10 Address: 172.17.0.10#53 Name: dwdb-scan.localdomain Address: 172.17.0.25 Name: dwdb-scan.localdomain Address: 172.17.0.26
Name: dwdb-scan.localdomain Address: 172.17.0.27

[root@dwdb1 ~]#
 
--反向解析
[root@dwdb1 ~]# nslookup 172.17.0.25
Server: 172.17.0.10 Address: 172.17.0.10#53 25.0.17.172.in-addr.arpa name = dwdb-scan. [root@dwdb1 ~]#
 
关于DNS的学习,会继续总结。