配置Oracle11g的RAC須要使用DNS服務器來解析SCAN IP,本文就是以此爲例介紹bind服務器的使用。首先科普一下bind服務器,屬於企業級產品了,仍是開源的:html
Bind是Berkeley Internet Name Domain Service的簡寫,它是一款實現DNS服務器的開放源碼軟件。Bind本來是美國DARPA資助伯克利大學(Berkeley)開設的一個研究生課題,後來通過多年的變化發展,已經成爲世界上使用最爲普遍的DNS服務器軟件,目前Internet上半數以上的DNS服務器有都是用Bind來架設的。參考文檔:http://www.cnblogs.com/luoahong/p/7859000.htmlnode
內網使用的簡單場合就使用基本的功能足夠了。要使用內網的dns服務器解析,每一個主機都有配置本地的服務器。linux中的配置就在/etc/resolv.conf文件修改。配置方法參考下面:linux
/etc/resolv.conf 該文件是DNS域名解析的配置文件,它的格式很簡單,每行以一個關鍵字開頭,後接配置參數。 resolv.conf的關鍵字主要有四個,分別是: nameserver #定義DNS服務器的IP地址 domain #定義本地域名 search #定義域名的搜索列表 sortlist #對返回的域名進行排序 詳細說明: nameserver 代表DNS服務器的IP地址。能夠有不少行的nameserver,每個帶一個IP地址。在查詢時就按nameserver在本文件中的順序進行, 且只有當第一個nameserver沒有反應時才查詢下面的nameserver。 domain 聲明主機的域名。不少程序用到它,如郵件系統;當爲沒有域名的主機進行DNS查詢時,也要用到。 若是沒有域名,主機名將被使用,刪除全部在第一個點( .)前面的內容。 search 它的多個參數指明域名查詢順序。當要查詢沒有域名的主機,主機將在由search聲明的域中分別查找。 domain和search不能共存;若是同時存在,後面出現的將會被使用。 sortlist 容許將獲得域名結果進行特定的排序。它的參數爲網絡/掩碼對,容許任意的排列順序。 /etc/resolv.conf的一個示例: domain centoscn.com search www.centocn.com www.wgjlb.com nameserver 202.96.128.86 nameserver 202.96.128.166 最主要是nameserver關鍵字,若是沒指定nameserver就找不到DNS服務器,其它關鍵字是可選的。Red Hat中沒有提供缺省的/etc/resolv.conf文件,它的內容是根據在安裝時給出的選項動態建立的。
redhat主機地址:192.168.2.60 。本地域名:localdomain,由於安裝了bind-chroot,修改配置文件就在/var/named/chroot/etc/named.conf,/etc/named.conf則無效(bind運行後chroot的etc裏面的name.rfc1912.zones好像會更新到/etc裏面的name.rfc1912.zones)。數據庫
(In the zone definitions we defined the file containing the zone configuration. These files are located in the "/var/named/" directory. If you are using the "chroot" version of BIND, the location of the following files will be "/var/named/chroot/var/named" and you may need to change their group ownership to "named".)vim
此文件能夠從該目錄下named.caching-nameserver.conf複製而來。centos
配置信息以下:服務器
options { listen-on port 53 { any; }; //全部機器均可以使用該dns服務器查詢 listen-on-v6 port 53 { ::1; }; //ip v6格式的寫法,同上一個意思 directory "/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"; // query-source port 53; // query-source-v6 port 53; allow-query { any; }; allow-query-cache { any; }; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view localhost_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include "/etc/named.rfc1912.zones"; };
而後配置正向ZONE和反向ZONE,配置文件爲/var/named/chroot/etc/named.rfc1912.zones。由於如今咱們的本地域名設置爲localdomain,默認狀況下zone文件裏面在第15到第20行已經包含了localdomain域名的正向解析配置了,因此不用添加。若是本地域名適用其餘域名如xxx.com之類,就須要參照localdomain的配置來修改便可。網絡
15 zone "localdomain" IN { 16 type master; 17 file "localdomain.zone"; 18 allow-update { none; }; 19 };
或者:
zone "xxx.com" IN { type master; file "xxx.com.zone"; allow-update { none; }; };
反向配置則根據內網網段來配置,本地網段:192.168.2.0/24,另一個網段爲:10.10.10.0/24因此配置爲:dom
zone "2.168.192.in-addr.arpa" IN { type master; file "2.168.192.in-addr.arpa"; allow-update { none; }; }; zone "10.10.10.in-addr.arpa" IN { type master; file "10.10.10.in-addr.arpa"; allow-update { none; }; };
接着,配置正反向解析數據庫文件。利用/var/named/chroot/var/named/localhost.zone 複製生成正向解析的數據庫文件,利用/var/named/chroot/var/named/localhost.zone 複製生成名爲2.168.192.in-addr.arpa 的反向解析的數據庫文件,記得帶-p參數傳遞權限。測試
[root@linux named]# cp -p localhost.zone ./localdomain.zone [root@linux named]# cp -p localhost.zone ./2.168.192.in-addr.arpa
再編輯解析數據庫文件,使用不帶域名後綴的short name便可。具體RAC環境的網絡規劃爲:
Host name |
Short hostname |
IP type |
IP address |
Interface |
snode1.localdomain |
snode1 |
Public ip |
192.168.2.21 |
eth0 |
snode1-vip.localdomain |
snode1-vip |
Virtual ip |
192.168.2.22 |
eth0:1 |
snode1-priv.localdomain |
snode1-priv |
Private ip |
10.10.10.21 |
eth1 |
snode2.localdomain |
snode2 |
Public ip |
192.168.2.24 |
eth0 |
snode2-vip.localdomain |
snode2-vip |
Virtual ip |
192.168.2.25 |
eth0:1 |
snode2-priv.localdomain |
snode2-priv |
Private ip |
10.10.10.22 |
eth1 |
pnode1.localdomain |
pnode1 |
Public ip |
192.168.2.11 |
eth0 |
pnode1-vip.localdomain |
pnode1-vip |
Virtual ip |
192.168.2.12 |
eth0:1 |
pnode1-priv.localdomain |
pnode1-priv |
Private ip |
10.10.10.11 |
eth1 |
pnode2.localdomain |
pnode2 |
Public ip |
192.168.2.14 |
eth0 |
pnode2-vip.localdomain |
pnode2-vip |
Virtual ip |
192.168.2.15 |
eth0:1 |
pnode2-priv.localdomain |
pnode2-priv |
Private ip |
10.10.10.12 |
eth1 |
scan-cluster.localdomain |
scan-cluster |
Scan ip |
192.168.2.23 |
eth0 |
scan-cluster.localdomain |
scan-cluster |
Scan ip |
192.168.2.26 |
eth0 |
scan-cluster.localdomain |
scan-cluster |
Scan ip |
192.168.2.13 |
eth0 |
配置完成的解析數據庫文件爲:
[root@linux named]# vim localdomain.zone $TTL 86400 @ IN SOA localhost root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS localhost localhost IN A 127.0.0.1 pnode1 IN A 192.168.2.11 pnode1-vip IN A 192.168.2.12 pnode1-priv IN A 10.10.10.11 pnode2 IN A 192.168.2.14 pnode2-vip IN A 192.168.2.15 pnode2-priv IN A 10.10.10.12 snode1 IN A 192.168.2.21 snode1-vip IN A 192.168.2.22 snode1-priv IN A 10.10.10.21 snode2 IN A 192.168.2.24 snode2-vip IN A 192.168.2.25 snode2-priv IN A 10.10.10.22 scan-cluster IN A 192.168.2.13 scan-cluster IN A 192.168.2.23 scan-cluster IN A 192.168.2.26
[root@linux named]# vim 2.168.192.in-addr.arpa $TTL 86400 @ IN SOA localhost. root.localhost. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. 60 IN PTR localhost. 11 IN PTR pnode1.localdomain 12 IN PTR pnode1-vip.localdomain 14 IN PTR pnode2.localdomain 15 IN PTR pnode2-vip.localdomain 21 IN PTR snode1.localdomain 22 IN PTR snode1-vip.localdomain 24 IN PTR snode2.localdomain 25 IN PTR snode2-vip.localdomain 23 IN PTR scan-cluster.localdomain 26 IN PTR scan-cluster.localdomain 13 IN PTR scan-cluster.localdomain
重啓bind:/etc/init.d/named restart
驗證解析結果,正向:
[root@linux named]# nslookup snode1 up scan-cluster nslookup scan-clusterServer: 192.168.2.60 Address: 192.168.2.60#53 Name: snode1.localdomain Address: 192.168.2.21 [root@linux named]# nslookup snode1-vip Server: 192.168.2.60 Address: 192.168.2.60#53 Name: snode1-vip.localdomain Address: 192.168.2.22 [root@linux named]# nslookup snode1-priv Server: 192.168.2.60 Address: 192.168.2.60#53 Name: snode1-priv.localdomain Address: 10.10.10.21 [root@linux named]# nslookup snode2 Server: 192.168.2.60 Address: 192.168.2.60#53 Name: snode2.localdomain Address: 192.168.2.24 [root@linux named]# nslookup snode2-vip Server: 192.168.2.60 Address: 192.168.2.60#53 Name: snode2-vip.localdomain Address: 192.168.2.25 [root@linux named]# nslookup snode2-priv Server: 192.168.2.60 Address: 192.168.2.60#53 Name: snode2-priv.localdomain Address: 10.10.10.22 [root@linux named]# nslookup pnode1 Server: 192.168.2.60 Address: 192.168.2.60#53 Name: pnode1.localdomain Address: 192.168.2.11 [root@linux named]# nslookup pnode1-vip Server: 192.168.2.60 Address: 192.168.2.60#53 Name: pnode1-vip.localdomain Address: 192.168.2.12 [root@linux named]# nslookup pnode1-priv Server: 192.168.2.60 Address: 192.168.2.60#53 Name: pnode1-priv.localdomain Address: 10.10.10.11 [root@linux named]# nslookup pnode2 Server: 192.168.2.60 Address: 192.168.2.60#53 Name: pnode2.localdomain Address: 192.168.2.14 [root@linux named]# nslookup pnode2-vip Server: 192.168.2.60 Address: 192.168.2.60#53 Name: pnode2-vip.localdomain Address: 192.168.2.15 [root@linux named]# nslookup pnode2-priv Server: 192.168.2.60 Address: 192.168.2.60#53 Name: pnode2-priv.localdomain Address: 10.10.10.12 [root@linux named]# nslookup scan-cluster Server: 192.168.2.60 Address: 192.168.2.60#53 Name: scan-cluster.localdomain Address: 192.168.2.13 Name: scan-cluster.localdomain Address: 192.168.2.23 Name: scan-cluster.localdomain Address: 192.168.2.26
反向:
[root@linux etc]# nslookup 192.168.2.21 Server: 192.168.2.60 Address: 192.168.2.60#53 21.2.168.192.in-addr.arpa name = snode1.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.22 Server: 192.168.2.60 Address: 192.168.2.60#53 22.2.168.192.in-addr.arpa name = snode1-vip.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 10.10.10.21 Server: 192.168.2.60 Address: 192.168.2.60#53 21.10.10.10.in-addr.arpa name = snode1-priv.localdomain.10.10.10.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.24 Server: 192.168.2.60 Address: 192.168.2.60#53 24.2.168.192.in-addr.arpa name = snode2.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.25 Server: 192.168.2.60 Address: 192.168.2.60#53 25.2.168.192.in-addr.arpa name = snode2-vip.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 10.10.10.22 Server: 192.168.2.60 Address: 192.168.2.60#53 22.10.10.10.in-addr.arpa name = snode2-priv.localdomain.10.10.10.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.11 Server: 192.168.2.60 Address: 192.168.2.60#53 11.2.168.192.in-addr.arpa name = pnode1.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.12 Server: 192.168.2.60 Address: 192.168.2.60#53 12.2.168.192.in-addr.arpa name = pnode1-vip.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 10.10.10.11 Server: 192.168.2.60 Address: 192.168.2.60#53 11.10.10.10.in-addr.arpa name = pnode1-priv.localdomain.10.10.10.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.14 Server: 192.168.2.60 Address: 192.168.2.60#53 14.2.168.192.in-addr.arpa name = pnode2.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.15 Server: 192.168.2.60 Address: 192.168.2.60#53 15.2.168.192.in-addr.arpa name = pnode2-vip.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 10.10.10.12 Server: 192.168.2.60 Address: 192.168.2.60#53 12.10.10.10.in-addr.arpa name = pnode2-priv.localdomain.10.10.10.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.23 Server: 192.168.2.60 Address: 192.168.2.60#53 23.2.168.192.in-addr.arpa name = scan-cluster.localdomain.2.168.192.in-addr.arpa. [root@linux etc]# nslookup 192.168.2.26 Server: 192.168.2.60 Address: 192.168.2.60#53 26.2.168.192.in-addr.arpa name = scan-cluster.localdomain.2.168.192.in-addr.arpa.
說明配置成功。剩下的工做就是配置網絡內其餘主機的默認dns服務器地址就可使用了。
可是在配置其餘主機的DNS的服務器時咱們一般使用/etc/resolv.conf文件來修改,可是我測試在centos7中修改後/etc/init.d/network restart重啓網絡,發現/etc/resolv.conf文件又被複原了,可是不重啓網絡又不能使DNS設置生效。若是是這樣,解決方法就是修改網絡接口的DNS配置,即/etc/sysconfig/network-script/ifcfg-ethN中增長dns的選項。參考https://blog.csdn.net/kadwf123/article/details/78786947。
具體步驟關閉NetworkManager是關鍵,方法以下:
[root@localhost etc]# service NetworkManager stop
Redirecting to /bin/systemctl stop NetworkManager.service[root@localhost etc]# /bin/systemctl stop NetworkManager.service
[root@localhost etc]# service NetworkManager status
Redirecting to /bin/systemctl status NetworkManager.service
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2019-05-08 23:29:19 CST; 29s ago
Process: 10904 ExecStart=/usr/sbin/NetworkManager --no-daemon (code=exited, status=0/SUCCESS)
Main PID: 10904 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/NetworkManager.service
└─12251 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /...[root@localhost etc]# chkconfig NetworkManager offNote: Forwarding request to 'systemctl disable NetworkManager.service'.[root@localhost etc]# systemctl disable NetworkManager.service