在动手配置前,最好先了解下DNS的理论,以免犯不必要的错误。这都是被坑后的觉悟 -_-!!!
Oracle 11g RAC 集群中引入了SCAN(SingleClientAccessName)的概念,是指集群的单客户端访问名称。相当于在客户端和数据库之间增加一层虚拟的网络服务层,即 SCAN IP 和 SCAP IP Listener。在客户端的 tnsnames.ora 配置文件中,只需要配置 SCAN IP 的配置信息即可,客户端通过 SCANIP、 SCAN IP Listener 来访问数据库。
同之前各版本的 RAC 相比,使用 SCAN IP 的好处就是, 当后台 RAC 数据库添加、删除节点时,客户端配置信息无需修改。SCAN 可以通过配置DNS 服 务器或 GNS 来配置 SCAN,我们这里以 DNS 为例来进行配置。
1、安装环境
1 可用单独机器作为DNS服务器,也可直接使用RAC的一个节点来做DNS解析。 2 使用某个RAC节点时,容易出现该节点如果宕机将导致SCAN无法解析,客户端无法连接数据库. 3 由于资源限制,我们只使用RAC1节点的public ip用作DNS。 4 [root@racdb ~]# cat /etc/issue5 Oracle Linux Server release 5.6Kernel \r on an \m6 7 [root@racdb ~]#
2、主机节点host信息
[root@racdb ~]# cat /etc/hosts127.0.0.1 localhost.racdb.com localhost::1 localhost6.localdomain6 localhost6#public ip:192.168.1.203 rac1.racdb.com rac1 --用作DNS服务器地址192.168.1.204 rac2.racdb.com rac2#private ip:192.168.0.203 rac1priv.racdb.com rac1priv192.168.0.204 rac2priv.racdb.com rac2priv#vip192.168.1.213 rac1vip.racdb.com rac1vip192.168.1.214 rac2vip.racdb.com rac2vip[root@racdb ~]#
3、配置DNS
- 安装所需的rpm包
- 配置named.conf文件,配置zone文件(可称为zone的索引文件)
- 配置正向和反向文件(zone文件中所指向的文件)
- 配置解析文件resolv.conf
- 启动dns服务
3.1 安装所需的rpm包,注意安装顺序
1 [root@node1 dns_rpm]# ls 2 bind-9.3.6-16.P1.el5.i386.rpm 3 bind-chroot-9.3.6-16.P1.el5.i386.rpm4 caching-nameserver-9.3.6-16.P1.el5.i386.rpm 5 下面安装rpm包 6 [root@node1 dns_rpm]# rpm -ivh bind-9.3.6-16.P1.el5.i386.rpm 7 [root@node1 dns_rpm]# rpm -ivh bind-chroot-9.3.6-16.P1.el5.i386.rpm 8 [root@node1 dns_rpm]# rpm -ivh caching-nameserver-9.3.6-16.P1.el5.i386.rpm
3.2 配置named.conf文件
1 进入目录 2 [root@racdb ~]# cd /var/named/chroot/etc/ 3 4 使用下面的方式复制一个新的副本并修改,参数-p表示连同权限及属主,属组一同复制。切记不可忽略参数-p 5 [root@node1 etc]# cp -p named.caching-nameserver.conf named.conf 6 [root@node1 etc]# cp -p named.rfc1912.zones named.zones 7 8 修改named.conf文件 9 将源文件中的所有localhost以及127.0.0.1修改成any,注意any;前后保留空格 10 该文件主要是配置dns监听那些端口以及ip地址并指明相应的名字解析zone文件名named.zones 11 下面是修改后的named.conf文件 12 [root@racdb etc]# cat /var/named/chroot/etc/named.conf13 //14 // named.caching-nameserver.conf15 //16 // Provided by Red Hat caching-nameserver package to configure the17 // ISC BIND named(8) DNS server as a caching only nameserver 18 // (as a localhost DNS resolver only). 19 //20 // See /usr/share/doc/bind*/sample/ for example named configuration files.21 //22 // DO NOT EDIT THIS FILE - use system-config-bind or an editor23 // to create named.conf - edits to this file will be lost on 24 // caching-nameserver package upgrade.25 //26 options {27 listen-on port 53 { any; }; //修改28 listen-on-v6 port 53 { ::1; };29 directory "/var/named";30 dump-file "/var/named/data/cache_dump.db";31 statistics-file "/var/named/data/named_stats.txt";32 memstatistics-file "/var/named/data/named_mem_stats.txt";33 34 // Those options should be used carefully because they disable port35 // randomization36 // query-source port 53;37 // query-source-v6 port 53;38 39 allow-query { any; }; //修改40 allow-query-cache { any; }; //修改41 };42 logging {43 channel default_debug {44 file "data/named.run";45 severity dynamic;46 };47 };48 view localhost_resolver {49 match-clients { any; }; //修改50 match-destinations { any; }; //修改51 recursion yes;52 include "named.zones"; //修改,修改后的指向我们的拷贝文件 named.zones 53 };54 [root@racdb etc]#
配置zone文件(可称为zone的索引文件)
1 #文件末尾最后的两个zone为新增加的 2 #注意每一个zone的file用于指向真正的zone文件,后面要用到 3 #下面是修改后的named.zones文件 4 [root@racdb etc]# cat named.zones 5 // named.rfc1912.zones: 6 // 7 // Provided by Red Hat caching-nameserver package 8 // 9 // ISC BIND named zone configuration for zones recommended by10 // RFC 1912 section 4.1 : localhost TLDs and address zones11 // 12 // See /usr/share/doc/bind*/sample/ for example named configuration files.13 //14 zone "." IN {15 type hint;16 file "named.ca";17 };18 19 zone "localdomain" IN {20 type master;21 file "localdomain.zone";22 allow-update { none; };23 };24 25 zone "localhost" IN {26 type master;27 file "localhost.zone";28 allow-update { none; };29 };30 31 zone "0.0.127.in-addr.arpa" IN {32 type master;33 file "named.local";34 allow-update { none; };35 };36 37 zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {38 type master;39 file "named.ip6.local";40 allow-update { none; };41 };42 43 zone "255.in-addr.arpa" IN {44 type master;45 file "named.broadcast";46 allow-update { none; };47 };48 49 zone "0.in-addr.arpa" IN {50 type master;51 file "named.zero";52 allow-update { none; };53 };54 55 #以下两个zone为新增的,包含正向和反向zone56 zone "racdb.com" IN { #正向。racdb.com为域名,此域名的声明要放到 resolv.conf 文件中57 type master; 58 file "racdb.zero"; #正向解析文件名称 此文件目录/var/named/chroot/var/named59 allow-update { none; }; 60 };61 62 zone "1.168.192.in-addr.arpa" IN { #反向,1.168.192为所要解析的ip网段63 type master;64 file "1.168.192.in-addr.arpa"; #反向解析文件名称 此文件目录/var/named/chroot/var/named65 allow-update { none; };66 };
3.3 配置正向和反向解析文件
1 [root@racdb etc]# pwd2 /var/named/chroot/etc3 [root@racdb etc]# cd ../var/named/4 [root@racdb named]# 5 #同样使用cp -p 方式复制文件到新的正向和反向文件 6 [root@racdb named]# cp -p named.zero racdb.zero #文件名就是named.zones -> racdb.com(正向域名) -> file的名称一致 7 [root@racdb named]# cp -p named.local 1.168.192.in-addr.arpa #文件名就是named.zones -> racdb.com(反向域名) -> file的名称一致
3.3.1 修改后的正向搜索文件
1 [root@racdb named]# cat racdb.zero 2 $TTL 86400 3 @ IN SOA racdb.com. root.racdb.com. ( 4 42 ; serial (d. adams) 5 3H ; refresh 6 15M ; retry 7 1W ; expiry 8 1D ) ; minimum 9 IN NS racdb.com.10 racscan IN A 192.168.1.20011 racscan IN A 192.168.1.19912 racscan IN A 192.168.1.19813 [root@racdb named]#14 15 SOA 是授权起始(Start Of Authority)的缩写,后面接着是dns服务器的主机名,这里是"racdb.com。"。16 注意,主机名称后面的小圆点。凡是出现在记录文件了的主机名,记得都要加上这各小圆点 17 NS 是名称服务器资源记录,指明域中的名称服务器,这里就是dns服务器18 A是主机记录,把IP名和ip地址对应起来19 可以添加多个A记录,我们的SCAN 有三个ip,这里我们就添加了3个20 了解这些已经够用了,具体详情自行google ^_^
3.3.2 修改后的反向搜索文件
1 [root@racdb named]# cat 1.168.192.in-addr.arpa 2 $TTL 86400 3 @ IN SOA racdb.com. root.racdb.com. ( 4 1997022700 ; Serial 5 28800 ; Refresh 6 14400 ; Retry 7 3600000 ; Expire 8 86400 ) ; Minimum 9 IN NS racdb.com.10 1 IN PTR racdb.com.11 200 IN PTR racscan.12 199 IN PTR racscan.13 198 IN PTR racscan.14 15 [root@racdb named]# 16 同正向解析文件相似,不同点是PTR17 PTR记录把IP和IP名对应起来,18 可以添加多个PTR记录
3.4 配置解析文件resolv.conf
1 在RAC1节点配置resolv.conf文件 2 [root@racdb named]# vi /etc/resolv.conf 3 search racdb.com #定义域名的搜索列,即name.zones文件中zone域名均要在此声明(不包含反向zone及系统默认的localhost) 4 nameserver 192.168.1.203 #定义DNS服务器的IP地址 5 6 7 #在RAC2节点上的resolv.conf文件 8 [root@racdb named]# vi /etc/resolv.conf 9 search racdb.com #定义域名的搜索列10 nameserver 192.168.1.203 #定义DNS服务器的IP地址
3.5 启动dns服务
1 [root@racdb named]# service named restart 2 Stopping named: .[ OK ] 3 Starting named: [ OK ] 4 [root@racdb named]# chkconfig named on 5 6 #测试dns解析RAC1 正向解析 7 [root@rac1 bin]# nslookup racscan 8 Server: 192.168.1.203 9 Address: 192.168.1.203#5310 11 Name: racscan.racdb.com12 Address: 192.168.1.20013 Name: racscan.racdb.com14 Address: 192.168.1.19815 Name: racscan.racdb.com16 Address: 192.168.1.19917 18 [root@rac1 bin]# 19 20 #测试dns解析RAC2 正向解析 21 [root@rac2 bin]# nslookup racscan22 Server: 192.168.1.20323 Address: 192.168.1.203#5324 25 Name: racscan.racdb.com26 Address: 192.168.1.19927 Name: racscan.racdb.com28 Address: 192.168.1.20029 Name: racscan.racdb.com30 Address: 192.168.1.19831 32 [root@rac2 bin]# 33 34 #测试dns解析RAC1 反向解析 35 [root@rac1 bin]# nslookup 192.168.1.20036 Server: 192.168.1.20337 Address: 192.168.1.203#5338 39 200.1.168.192.in-addr.arpa name = racscan.40 41 [root@rac1 bin]# nslookup 192.168.1.19942 Server: 192.168.1.20343 Address: 192.168.1.203#5344 45 199.1.168.192.in-addr.arpa name = racscan.46 47 [root@rac1 bin]# nslookup 192.168.1.19848 Server: 192.168.1.20349 Address: 192.168.1.203#5350 51 198.1.168.192.in-addr.arpa name = racscan.52 53 [root@rac1 bin]# 54 55 #测试dns解析RAC2 反向解析56 [root@rac2 bin]# nslookup 192.168.1.20057 Server: 192.168.1.20358 Address: 192.168.1.203#5359 60 200.1.168.192.in-addr.arpa name = racscan.61 62 [root@rac2 bin]# nslookup 192.168.1.19963 Server: 192.168.1.20364 Address: 192.168.1.203#5365 66 199.1.168.192.in-addr.arpa name = racscan.67 68 [root@rac2 bin]# nslookup 192.168.1.19869 Server: 192.168.1.20370 Address: 192.168.1.203#5371 72 198.1.168.192.in-addr.arpa name = racscan.73 74 [root@rac2 bin]#