在动手配置前,最好先了解下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/issue 5 Oracle Linux Server release 5.6Kernel \r on an \m 6 7 [root@racdb ~]#
2、主机节点host信息
[root@racdb ~]# cat /etc/hosts 127.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 rac1priv 192.168.0.204 rac2priv.racdb.com rac2priv #vip 192.168.1.213 rac1vip.racdb.com rac1vip 192.168.1.214 rac2vip.racdb.com rac2vip [root@racdb ~]#
3、配置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.rpm 4 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.conf 13 // 14 // named.caching-nameserver.conf 15 // 16 // Provided by Red Hat caching-nameserver package to configure the 17 // 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 editor 23 // 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 port 35 // randomization 36 // 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 by 10 // RFC 1912 section 4.1 : localhost TLDs and address zones 11 // 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为新增的,包含正向和反向zone 56 zone "racdb.com" IN { #正向。racdb.com为域名,此域名的声明要放到 resolv.conf 文件中 57 type master; 58 file "racdb.zero"; #正向解析文件名称 此文件目录/var/named/chroot/var/named 59 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/named 65 allow-update { none; }; 66 };
3.3 配置正向和反向解析文件
1 [root@racdb etc]# pwd 2 /var/named/chroot/etc 3 [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.200 11 racscan IN A 192.168.1.199 12 racscan IN A 192.168.1.198 13 [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 同正向解析文件相似,不同点是PTR 17 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#53 10 11 Name: racscan.racdb.com 12 Address: 192.168.1.200 13 Name: racscan.racdb.com 14 Address: 192.168.1.198 15 Name: racscan.racdb.com 16 Address: 192.168.1.199 17 18 [root@rac1 bin]# 19 20 #测试dns解析RAC2 正向解析 21 [root@rac2 bin]# nslookup racscan 22 Server: 192.168.1.203 23 Address: 192.168.1.203#53 24 25 Name: racscan.racdb.com 26 Address: 192.168.1.199 27 Name: racscan.racdb.com 28 Address: 192.168.1.200 29 Name: racscan.racdb.com 30 Address: 192.168.1.198 31 32 [root@rac2 bin]# 33 34 #测试dns解析RAC1 反向解析 35 [root@rac1 bin]# nslookup 192.168.1.200 36 Server: 192.168.1.203 37 Address: 192.168.1.203#53 38 39 200.1.168.192.in-addr.arpa name = racscan. 40 41 [root@rac1 bin]# nslookup 192.168.1.199 42 Server: 192.168.1.203 43 Address: 192.168.1.203#53 44 45 199.1.168.192.in-addr.arpa name = racscan. 46 47 [root@rac1 bin]# nslookup 192.168.1.198 48 Server: 192.168.1.203 49 Address: 192.168.1.203#53 50 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.200 57 Server: 192.168.1.203 58 Address: 192.168.1.203#53 59 60 200.1.168.192.in-addr.arpa name = racscan. 61 62 [root@rac2 bin]# nslookup 192.168.1.199 63 Server: 192.168.1.203 64 Address: 192.168.1.203#53 65 66 199.1.168.192.in-addr.arpa name = racscan. 67 68 [root@rac2 bin]# nslookup 192.168.1.198 69 Server: 192.168.1.203 70 Address: 192.168.1.203#53 71 72 198.1.168.192.in-addr.arpa name = racscan. 73 74 [root@rac2 bin]#