Linux DNS Server 配置 -- for Oracle 11gR2 RAC SCAN IP
Linux DNS Server 配置 -- for Oracle 11gR2 RAC SCAN IP最近安装了一下Oracle 11gR2的RAC ,但是11gR2版本的RAC 采用的是SCAN 在
Linux DNS Server 配置 -- for Oracle 11gR2 RAC SCAN IP
最近安装了一下Oracle 11gR2的RAC ,但是11gR2版本的RAC 采用的是SCAN 在Oracle 11gR2以前,如果数据库采用了RAC 架构,在客户端的tnsnames IP. 中,需要配置多个节点的连接信息,从而实现诸如负载均衡,failover 等等RAC 的特性。因此,当数据库RAC 集群需要添加或删除节点时,需要及时对客户端机器的tns 进行更新,以免出现安全隐患。
在11gR2中,为了简化该项配置工作,引入了SCAN (Single Client Access Name )的特性,该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的scan ip 以及scan ip listener ,在客户端仅需要配置scan ip 的tns 信息,通过scan ip listener,连接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的操作,均不会对client 产生影响。
可以把scan 理解为一个虚拟主机名,它对应的是整个RAC 集群。客户端主机只需通过这个scan name 即可访问数据库集群的任意节点。当然访问的节点是随机的,oracle 强烈建议通过DNS Server的round robin模式配置解析SCAN ,实现负载均衡(即轮换连接SCAN 对应的IP 地址)。这有点类似通过vip 和listener loadbalance配置实现负载均衡的原理。
更多信息参考我的Blog :
px
Oracle 11gR2 RAC 新特性说明 http://blog.csdn.net/tianlesoftware/archive/2010/11/02/5982972.as
一. 安装DNS Server
在安装Redhat 系统的时候,有提示安装DNS Server 。不过那时为了简单,就没有安装。这里要用到DNS ,就只能在安装一下。安装需要的RPM 包安装镜像里有。找到一下包,并安装:
bind-9.3.6-4.P1.el5.i386.rpm --提供核心的二进制程序 bind-chroot-9.3.6-4.P1.el5.i386.rpm --提供安装性 caching-nameserver-9.3.6-4.P1.el5.i386.rpm --提供模板文件
,[root@rac1 Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
[root@rac1 Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
[root@rac1 Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
DNS 的守护进程
/usr/sbin/named
/usr/sbin/rndc
DNS 的脚本
/etc/init.d/named
DNS 的端口
53 953(tcp udp)
DNS 的配置文件
/var/named/chroot/etc/named.conf(主配置文件)
/var/named/chroot/*
二. 配置DNS Server
1. 复制named.conf 文件
由于安装了chroot 环境,所以DNS 主配置文件应该在
/var/named/chroot/etc目录下面。
[root@rac1 etc]# cd /var/named/chroot/
[root@rac1 chroot]# ls
devetcvar
[root@rac1 chroot]# cdetc/
[root@rac1 etc]# ls
localtimenamed.caching-nameserver.conf named.rfc1912.zones rndc.key
查看named.caching-nameserver.conf 文件:
[root@rac1 etc]# catnamed.caching-nameserver.conf
,//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the // ISC BIND named(8) DNS server as a caching only nameserver // (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor // to create named.conf - edits to this file will be lost on // caching-nameserver package upgrade.
//
...
这里提示不要直接的编辑该文件,去创建一个named.conf 文件,然后编辑named.conf 文件,当有了named.conf ,将不在读取这个文件。
现在开始复制:
[root@rac1 etc]# cp-p named.caching-nameserver.confnamed.conf
查看一下文件权限是否一致:
[root@rac1 etc]# ls -lrt
total 40
-rw-r----- 1 root named 955 Jul 30 2009 named.rfc1912.zones -rw-r----- 1 root named 1230 Jul 30 2009 named.conf
-rw-r----- 1 root named 1230 Jul 30 2009 named.caching-nameserver.conf -rw-r--r-- 1 root root 405 Nov 6 01:13 localtime
-rw-r----- 1 root named 113 Nov 13 14:16 rndc.key
-P 的参数,保留权限。否则启动服务的时候会报权限拒绝的。
2. 查看编辑named.conf 文件:
[root@rac1 etc]# catnamed.conf
,options { ---代表全局配置
listen-on port 53 { 127.0.0.1; }; -- DNS服务监听在所有接口 listen-on-v6 port 53 { ::1; }; -- ipv6监听在本地回环接口 directory "/var/named";
--zone 文件的存放目录,指的是chroot 环境下面的/var/named
dump-file "/var/named/data/cache_dump.db"; --存放缓存的信息
statistics-file "/var/named/data/named_stats.txt"; --统计用户的访问状态
memstatistics-file "/var/named/data/named_mem_stats.txt";
--每一次访问耗费了多数内存的存放文件
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
allow-query { localhost; };
};
logging {
channeldefault_debug {
file "data/named.run";
severity dynamic;
};
};
--定义日志的存放位置在/var/named/chroot/var/named/data/目录下面
viewlocalhost_resolver {
match-clients { localhost; };
match-destinations { localhost; };
recursion yes; --允许查询的客户端,本实验中需要修改成本地网段 --允许那些客户端来查询缓存,any 表示允许任何人。 allow-query-cache { localhost; };
,include "/etc/named.rfc1912.zones";
};
-- 定义视图的功能,
--Match-clients 是指匹配的客户端
--Match-destination 是指匹配的目标
编辑named.conf 文件,将
listen-on port 53 { 127.0.0.1; }; allow-query { localhost; }; match-clients { localhost; }; match-destinations { localhost; }; allow-query-cache { localhost; }; 中的内容修改成{ any; } 注意两边空格, 然后保存退出
3. 定义Zone 文件 (编辑named.rfc1912.zones 文件)
[root@rac1 etc]# cat named.rfc1912.zones
zone "." IN {
type hint; -- 根区域的类型为hint
file "named.ca"; -- 区域文件是named.ca,
};
-- Zone “. ” 代表根区域
-- IN 代表 Internet记录
zone "localdomain" IN {
type master; -- 区域的类型为主要的
file "localdomain.zone";
allow-update { none; }; --默认情况下,是否允许客户端自动更新 };
zone "localhost" IN {
type master; --在named.ca 文件中就定义了全球的13台根服务器
,file "localhost.zone";
allow-update { none; };
};
-- zone "localhost" 定义正向解析的区域
-- file "localhost.zone"; 指定正向解析的区域文件是localhost.zone - -在localhost.zone 文件中就定义DNS 的正向解析数据库
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
-- zone "0.0.127.in-addr.arpa" :localhost 定义反向解析的区域 -- file "named.local"; 指定反向解析的区域文件是named.local -- 在named.local 文件中就定义DNS 反向解析的数据库
zone "255.in-addr.arpa" IN {
type master;
file "named.broadcast";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
我们配置zone 的目的是为了解析SCAN IP 。所以我们在Zone 文件里添加一下内容:
,-- 配置正向解析Zone
zone "tianlesoftware.com " IN { -- 注意,这个域名要和后面配置的一致 type master;
file "rac.tianlesoftware.zone";
allow-update { none; };
};
-- 配置反向解析Zone
zone "6.168.192.in-addr.arpa" IN {
type master;
file "rac.tianlesoftware.local";
allow-update { none; };
};
这里需要注意的是,反向解析从左到右读取ip 地址时是以相反的方向解释的,所以需要将ip 地址反向排列。这里,192.168.6.*网段的反向解析域名为"6.168.192.in-addr.arpa ”。
4. 复制模板文件成数据库文件
[root@rac1 etc]# cd /var/named/chroot/var/named
[root@rac1 named]# ls
datalocalhost.zone named.ca named.local slaves
localdomain.zonenamed.broadcast named.ip6.local named.zero
可以看到,在chroot 环境下面的/var/named/有很多模板文件。
Named.ca就是根区域的数据库文件.
将localhost.zone 复制成rac.tianlesoftware.zone ,这个是正向解析的数据库文件
将named.local 复制成rac.tianlesoftware.local ,这个是反向解析的数据库文件
这个名称一定要和/etc/named.rfc1912.zones这个文件里面,我们刚才添加的一致。
[root@rac1 named]# cp -p localhost.zonerac.tianlesoftware.zone
,[root@rac1 named]# cp -p named.localrac.tianlesoftware.local
[root@rac1 named]# ls
datalocalhost.zone named.ca
named.localrac.tianlesoftware.local slaves
localdomain.zonenamed.broadcast named.ip6.local
named.zerorac.tianlesoftware.zone 、
至此,正向解析和反向解析的数据库文件就创建完成。
5. 定义数据库文件
(1) 定义正向解析数据库文件
[root@rac1 named]# vimrac.tianlesoftware.zone
$TTL 86400
@ IN SOA tianlesoftware.com root.tianlesoftware.com (
42 ; serial (d. adams)
3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum
IN NS tianlesoftware.com
rac-scan IN A 192.168.6.100
rac-scan IN A 192.168.6.200
说明,因为我的11gR2 测试是2个节点的RAC 。所以这里就添加了2个rac-scan 。如果节点比较多,可以多添加几个rac-scan 。rac-scan 至少要有一个。并且这些IP 在RAC 安装之前不能被使用。
一些参数说明:
,$TTL 86400 :-- 最小的存活的时间是86400S (24H )
@ IN SOA tianlesoftware.com root.tianlesoftware.com ( --这是一笔SOA 记录,只允许存在一个SOA 记录
@:代表要解析的这个域本身(tianlesoftware.com)
IN :Internet 记录。
SOA :是初始授权记录,指定网络中第一台DNS Server。
localhost: DNS 服务器的名字。
root.localhost: 是指管理员的邮箱。
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
这些部分主要是用来主DNS 和辅助DNS 做同步用的.
42: 序列号,当主DNS 数据改变时,这个序列号就要被增加1,而辅助3H 刷新,主DNS 和辅助DNS 每隔三小时同步一次。 15M 重试,3H 之内,没有同步,每隔15M 在尝试同步 1W 过期,1W 之内,还没有同步,就不同步了 1D 生存期,没有这条记录,缓存的时间。 @ IN NS server1.example.com. : 这是一笔NS 记录,指定nameserver 为server1.example.com DNS 通过序列号来和主DNS 同步。
(2)定义反向解析数据库
[root@rac1 named]# vimrac.tianlesoftware.local
$TTL 86400
@ IN SOA tianlesoftware.com. root.tianlesoftware.com. ( 1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
,3600000 ; Expire
86400 ) ; Minimum
IN NS tianlesoftware.com.
100 IN PTR rac-scan.tianlesoftware.com.
200 IN PTR rac-scan.tianlesoftware.com.
这个文件和上面的那个差不多。两点要注意的:
(1)数字写IP 地址的最后一个。如192.168.6.100, 就写100
(2)rac-scan . 后面有一个点
6. 验证DNS 配置
至此,DNS 的基本配置就完成了,在来看看DNS 是否能够正常工作。
重启DNS 服务:
[root@rac1 named]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
DNS 客户端配置
主机默认通过本地解析域名,也就是读取/etc/hosts文件里的解析。对于配置DNS 的网络环境,特别是RAC 各节点如果使用SCAN 特性的话,必须修改/etc/resolv.conf文件配置本地使用哪台DNS Server进行域名解析工作。
[root@rac2 ~]# cat /etc/resolv.conf
#nameserver 202.101.172.35
nameserver 192.168.6.90 -- 我们刚才添加的DNS Server
[root@rac2 ~]# nslookup 192.168.6.100
Server: 192.168.6.90
Address: 192.168.6.90#53
100.6.168.192.in-addr.arpa name = rac-scan.tianlesoftware.com.
[root@rac2 ~]# nslookup 192.168.6.200