本文共 8092 字,大约阅读时间需要 26 分钟。
最近安装了一下Oracle 11gR2的RAC,但是11gR2版本的RAC采用的是SCAN IP.
在Oracle 11gR2以前,如果数据库采用了RAC架构,在客户端的tnsnames中,需要配置多个节点的连接信息,从而实现诸如负载均衡,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:
Oracle 11gR2 RAC新特性说明
一.安装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(tcpudp)
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]# cd etc/
[root@rac1 etc]# ls
localtimenamed.caching-nameserver.confnamed.rfc1912.zonesrndc.key
查看named.caching-nameserver.conf文件:
[root@rac1 etc]# cat named.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-pnamed.caching-nameserver.conf named.conf
-P的参数,保留权限。否则启动服务的时候会报权限拒绝的。
查看一下文件权限是否一致:
[root@rac1 etc]# ls -lrt
total 40
-rw-r----- 1 root named955 Jul 302009 named.rfc1912.zones
-rw-r----- 1 root named 1230 Jul 302009 named.conf
-rw-r----- 1 root named 1230 Jul 302009 named.caching-nameserver.conf
-rw-r--r-- 1 root root405 Nov6 01:13 localtime
-rw-r----- 1 root named113 Nov 13 14:16 rndc.key
2.查看编辑named.conf文件:
[root@rac1 etc]# cat named.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-sourceport 53;
// query-source-v6 port 53;
allow-query{ localhost; };
--允许查询的客户端,本实验中需要修改成本地网段
allow-query-cache { localhost; };
--允许那些客户端来查询缓存,any表示允许任何人。
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
--定义日志的存放位置在/var/named/chroot/var/named/data/目录下面
view localhost_resolver {
match-clients{ localhost; };
match-destinations { localhost; };
recursion yes;
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,
--在named.ca文件中就定义了全球的13台根服务器
};
--Zone “.”代表根区域
--IN代表Internet记录
zone "localdomain" IN {
type master;--区域的类型为主要的
file "localdomain.zone";
allow-update { none; };--默认情况下,是否允许客户端自动更新
};
zone "localhost" IN {
type master;
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.zonenamed.canamed.localslaves
localdomain.zonenamed.broadcastnamed.ip6.localnamed.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.zone rac.tianlesoftware.zone
[root@rac1 named]# cp -p named.local rac.tianlesoftware.local
[root@rac1 named]# ls
datalocalhost.zonenamed.canamed.localrac.tianlesoftware.localslaves
localdomain.zonenamed.broadcastnamed.ip6.localnamed.zerorac.tianlesoftware.zone、
至此,正向解析和反向解析的数据库文件就创建完成。
5.定义数据库文件
(1)定义正向解析数据库文件
[root@rac1 named]# vim rac.tianlesoftware.zone
$TTL86400
@IN SOAtianlesoftware.comroot.tianlesoftware.com (
42; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
IN NStianlesoftware.com
rac-scanIN A192.168.6.100
rac-scanIN A192.168.6.200
说明,因为我的11gR2测试是2个节点的RAC。所以这里就添加了2个rac-scan。如果节点比较多,可以多添加几个rac-scan。rac-scan至少要有一个。并且这些IP在RAC安装之前不能被使用。
一些参数说明:
$TTL 86400:--最小的存活的时间是86400S(24H)
@IN SOAtianlesoftware.comroot.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,而辅助DNS通过序列号来和主DNS同步。
3H 刷新,主DNS和辅助DNS每隔三小时同步一次。
15M重试,3H之内,没有同步,每隔15M在尝试同步
1W过期,1W之内,还没有同步,就不同步了
1D 生存期,没有这条记录,缓存的时间。
@ IN NS server1.example.com.:
这是一笔NS记录,指定nameserver为server1.example.com
(2)定义反向解析数据库
[root@rac1 named]# vim rac.tianlesoftware.local
$TTL86400
@INSOAtianlesoftware.com. root.tianlesoftware.com. (
1997022700 ; Serial
28800; Refresh
14400; Retry
3600000; Expire
86400 ); Minimum
INNStianlesoftware.com.
100INPTRrac-scan.tianlesoftware.com.
200INPTRrac-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.arpaname = rac-scan.tianlesoftware.com.
[root@rac2 ~]# nslookup 192.168.6.200
Server:192.168.6.90
Address:192.168.6.90#53
200.6.168.192.in-addr.arpaname = rac-scan.tianlesoftware.com.
[root@rac2 ~]# nslookup rac-scan.tianlesoftware.com
Server:192.168.6.90
Address:192.168.6.90#53
Name:rac-scan.tianlesoftware.com
Address: 192.168.6.100
Name:rac-scan.tianlesoftware.com
Address: 192.168.6.200
DNS解析正常。
------------------------------------------------------------------------------
转载地址:http://yzgnc.baihongyu.com/