hosts文件是Linux系統中一個負責IP地址與域名快速解析的文件,包含了IP地址和主機名之間的映射,還包括主機名的別名。文件目錄位於 /etc/hosts ,作用相當於DNS 。 這個與 /etc/hostname 文件不一樣,這個文件只包含hostname這一個名字(命令行hostname返回就是這個文件的內容), hosts文件存放的是域名與ip的對應關系。修改主機名時,這兩個文件都需要修改。
在沒有域名伺服器的情況下,系統上的所有網路程序都通過查詢/etc/hosts文件來解析對應於某個主機名的IP地址,實現快速訪問。
在支持 mDNS(multicast DNS) 多播DNS的區域網中,使用主機名加上」.local」即可直接訪問主機名對應的設備。這個就不需要配置/etc/hosts文件來完成P地址與域名解析,筆者的小米路由器支持這個功能。但是筆者覺得配置/etc/hosts文件更加方便,也可以設置別名。
下圖是筆者配置的,填入區域網內所有linux伺服器的IP和域名,而且每個伺服器都需要設置一樣。當主機互連時,每台主機都需要設置自己的ip與域名,同時在對方的hosts文件里加入自己的ip和主機名。筆者遇到的linux伺服器上,都配置了這個文件,方便通過域名或別名來訪問。
下圖是筆者實驗的兩個樹莓派配置信息。
hosts文件的格式如下:
第一部份:網路IP地址,比如192.168.31.76。
第二部份:主機名或域名,比如host1。
第三部份:主機名別名,比如host_maria。
在marai伺服器上測試域名和別名, ping host2或者ping host_LAMP都可以實現,筆者在這里就不把測試結果貼出來了。
2. 如何修改vip 或者vip 對應的hostname
答:修改vip 或者vip 對應的hostname詳細步驟如下:
在oracle 10g 和 11g 的Clusterware 環境中,客戶端使用vip(Virtual IP)來連接資料庫,客戶端應用程序通過vip訪問對應的節點上的資料庫實例。每個節點都要有一個vip,這些vip是靜態的ip地址,必須與公共網路屬於同一個子網。每一個vip也要對應一個主機名,而且對於客戶端來說,這個主機名應該能夠被解析為VIP.VIP通過DNS,/etc/hosts文件來解析(11GR2 可以使用GNS),在安裝GI軟體時候,會提示為每一個節點填寫對應的VIP和VIP對應的hostname,vip信息會存儲在OCR和HA架構相關的組件中。
通常來說,VIP的修改需要在規定的時間窗口內,cluster 停止服務。然而對於某種情況下,是不需要停機時間,比如只是修改一個節點的vip維護操作只要在那個節點上就可以了,而不必停止整個cluster。
從10.2.0.3 以來,oracle 去除了ASM/DATABSE對vip的依賴關系,這樣對vip的修改可以在不必停止ASM/DATABASE實例的情況下進行,需要做的僅僅是與這個節點連接的客戶端受到影響。
實驗環境:
版本:
Clusterware :11.2.0.2
database :11.2.0.1
修改vip的操作步驟:
舊vip:
10.10.10.201 rac1-vip
10.10.10.202 rac2-vip
新vip:
10.250.7.111 rac1-vip
10.250.7.112 rac2-vip
子網 10.250.7.0
掩碼 255.255.255.0
1 確定vip
對於 10g and 11gR1, 以CRS的屬主:
$ srvctl config nodeapps -n -a
比如:
$ srvctl config nodeapps -n racnode1 -a
VIP exists.: /racnode1-vip/101.17.80.184/255.255.254.0/eth1
對於 11gR2, 以Grid 屬主:
$ srvctl config nodeapps -a
grid@rac1:/home/grid>srvctl config nodeapps -a
網路存在: 1/10.250.7.0/255.255.255.0/eth0, 類型 static
VIP 存在: /rac1-vip/10.10.10.201/10.250.7.0/255.255.255.0/eth0, 託管節點 rac1
VIP 存在: /rac2-vip/10.10.10.202/10.250.7.0/255.255.255.0/eth0, 託管節點 rac2
2. 確定VIP的狀態
grid@rac1:/home/grid>crs_stat -t | grep vip
Name Type Target State Host
------------------------------------------------------------
ora.rac1.vip ora....t1.type ONLINE ONLINE rac1
ora.rac2.vip ora....t1.type ONLINE ONLINE rac2
ora.scan1.vip ora....ip.type ONLINE ONLINE rac1
grid@rac1:ifconfig -a
.....省略.....
eth0:2 Link encap:Ethernet HWaddr 00:50:56:8F:25:0A
inet addr:10.10.10.201 Bcast:10.250.7.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Base address:0x2400 Memory:d8960000-d8980000
.....省略.....
Stopping Resources
3. 停止nodeapps資源和所有依賴於VIP的資源(如果有計劃的中斷所有服務,則停止ASM/DB 實例)
10g and 11gR1,以CRS的屬主:
$ srvctl stop asm -n
$ srvctl stop instance -d -i
$ srvctl stop nodeapps -n
比如:
$ srvctl stop asm -n racnode1
$ srvctl stop instance -d RACDB -i RACDB1
$ srvctl stop nodeapps -n racnode1
11gR2,以Grid屬主:
$ srvctl stop instance -d -n
$ srvctl stop vip -n -f
grid@rac1:srvctl stop database -d rac -o immediate
PRCD-1027 : 無法檢索資料庫 rac
PRCD-1229 : 嘗試訪問資料庫 rac 的配置時被拒絕, 因為其版本 11.2.0.1.0 不同於程序版本 11.2.0.2.0。請改從 /opt/rac/oracle/11.2.0/dbs 運行程序。
oracle@rac1:/home/oracle>srvctl stop database -d rac -o immediate
grid@rac1:/home/grid>srvctl stop vip -n rac1 -f -v
已成功停止 VIP。
grid@rac1:/home/grid>srvctl stop vip -n rac2 -f -v
已成功停止 VIP。
Note: 在 11GR2版本中,-f選項是必須的,否則會報如下錯誤:
PRCR-1014 : Failed to stop resource ora.rac1.vip
PRCR-1065 : Failed to stop resource ora.rac1.vip
CRS-2529: Unable to act on 'ora.rac1.vip' because that would require stopping or relocating 'ora.LISTENER.lsnr', but the force option was not specified
...
grid@rac1:/home/grid>srvctl stop listener -n rac1
PRCC-1017 : LISTENER 已在 rac1 上停止
PRCR-1005 : 資源 ora.LISTENER.lsnr 已停止
grid@rac1:/home/grid>srvctl stop listener -n rac2
PRCC-1017 : LISTENER 已在 rac2 上停止
PRCR-1005 : 資源 ora.LISTENER.lsnr 已停止
為了防止變更未被確認,而asm 或者db 實例的自動啟動,需要將此自動重啟功能暫時禁用。
$ srvctl disable database -d
$ srvctl disable asm -n (對於11.2 版本之前的)
$ srvctl disable nodeapps (使用與 11.2 版本以後的)
而我執行srvctl disable nodeapps命令時遇到如下情況(因為vip服務已經停止了)。不會影響最終的操作。
grid@rac1:/home/grid>srvctl disable nodeapps
PRKO-2409 : GSD 已在節點上禁用: rac1,rac2
PRCR-1071 : 無法注冊或更新 資源 ora.rac1.vip
CRS-0245: User doesn't have enough privilege to perform. the operation
PRCR-1071 : 無法注冊或更新 資源 ora.net1.network
CRS-0245: User doesn't have enough privilege to perform. the operation
4.確認VIP是否已經offline,並且不再綁定到公共網卡上:
grid@rac1:/home/grid>crs_stat -t | grep vip
ora.rac1.vip ora....t1.type OFFLINE OFFLINE
ora.rac2.vip ora....t1.type OFFLINE OFFLINE
ora.scan1.vip ora....ip.type ONLINE ONLINE rac1
使用 ifconfig -a
5 修改VIP和對應的屬性值,確保先在OS上做相應的變更 比如/etc/hosts 或者DNS。如果網卡改變了,先確保新的網卡可用。
舊vip:
10.10.10.201 rac1-vip
10.10.10.202 rac2-vip
新vip
10.250.7.111 rac1-vip
10.250.7.112 rac2-vip
子網 10.250.7.0
掩碼 255.255.255.0
6. 修改VIP資源
以root用戶執行如下命令:
[root@rac1 ~]# /opt/11202/11.2.0/grid/bin/srvctl modify nodeapps -n rac1 -A rac1-vip/255.255.255.0/eth0
[root@rac1 ~]# /opt/11202/11.2.0/grid/bin/srvctl modify nodeapps -n rac2 -A rac2-vip/255.255.255.0/eth0
Note 1: 對於windows平台,如果網卡名稱有空格,必須使用 ""
比如:
> srvctl modify nodeapps -n racnode1 -A 110.11.70.11/255.255.255.0/"Local Area Connection 1
Note 2: 從 11.2 開始,VIP依賴於network資源(ora.net1.network),OCR 僅僅只是記錄VIP 的hostname或者vip 的ip地址。vip的網路屬性比如子網和掩碼是記錄在network資源里的。
From 11.2.0.2起 , 可以使用srvctl modify network 命令修改網路資源信息
grid@rac1:/home/grid>srvctl modify network -h
修改 Oracle Clusterware 中的網路配置。
用法: srvctl modify network [-k ] [-S /[/if1[|if2...]]] [-w ] [-v]
-k 網路編號 (默認編號為 1)
-S //[if1[|if2...]] 網路的 NET 地址說明
-w 網路類型 (static, dhcp, mixed)
-h 輸出用法
-v 詳細輸出
以root用戶:
# srvctl modify network -k 1 -S 110.11.70.0/255.255.255.0/eth2
7. 確認變更:
grid@rac1:/home/grid>srvctl config nodeapps -a
網路存在: 1/10.250.7.0/255.255.255.0/eth0, 類型 static
VIP 存在: /rac1-vip/10.250.7.111/10.250.7.0/255.255.255.0/eth0, 託管節點 rac1
VIP 存在: /rac2-vip/10.250.7.112/10.250.7.0/255.255.255.0/eth0, 託管節點 rac2
8. 重新啟動nodeapps資源和相關依賴資源
grid@rac1:/home/grid>srvctl enable nodeapps
PRKO-2415 : VIP 已在節點上啟用: rac1,rac2
PRKO-2416 : 網路資源已啟用。
oracle@rac1:/home/oracle>srvctl enable database -d rac
grid@rac1:/home/grid>
grid@rac1:/home/grid>srvctl start listener -n rac2
grid@rac1:/home/grid>srvctl start listener -n rac1
grid@rac1:/home/grid>
oracle@rac1:/home/oracle>
oracle@rac1:/home/oracle>srvctl start database -d rac
grid@rac1:/home/grid>
9. 查看新的VIP的狀態
grid@rac1:/home/grid>crs_stat -t | grep vip
ora.rac1.vip ora....t1.type ONLINE ONLINE rac1
ora.rac2.vip ora....t1.type ONLINE ONLINE rac2
ora.scan1.vip ora....ip.type ONLINE ONLINE rac1
grid@rac1:/home/grid>
grid@rac1:/home/grid>
grid@rac1:/home/grid>/sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:56:8F:25:0A
inet addr:10.250.7.225 Bcast:10.250.7.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe8f:250a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:560742 errors:0 dropped:0 overruns:0 frame.:0
TX packets:1472284 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:56118003 (53.5 MiB) TX bytes:126169027 (120.3 MiB)
Base address:0x2400 Memory:d8960000-d8980000
eth0:1 Link encap:Ethernet HWaddr 00:50:56:8F:25:0A
inet addr:10.250.7.210 Bcast:10.250.7.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Base address:0x2400 Memory:d8960000-d8980000
eth0:2 Link encap:Ethernet HWaddr 00:50:56:8F:25:0A
inet addr:10.250.7.111 Bcast:10.250.7.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Base address:0x2400 Memory:d8960000-d8980000
eth1 Link encap:Ethernet HWaddr 00:50:56:8F:6F:49
inet addr:10.10.10.101 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe8f:6f49/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6842717 errors:0 dropped:0 overruns:0 frame.:0
TX packets:4120949 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4798726508 (4.4 GiB) TX bytes:1472194319 (1.3 GiB)
Base address:0x2440 Memory:d8980000-d89a0000
eth1:1 Link encap:Ethernet HWaddr 00:50:56:8F:6F:49
inet addr:169.254.51.141 Bcast:169.254.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Base address:0x2440 Memory:d8980000-d89a0000
grid@rac1:/home/grid>
對於11gR2,只是修改vip的hostname 而不修改其ip地址和vip的其他屬性不變:
1.修改VIP 使其指向另一個可用的 hostname,比如rac1
# srvctl modify nodeapps -n racnode1 -A rac2-vip/255.255.255.0/eth2
2.修改 VIP 指定新的hostname
# srvctl modify nodeapps -n racnode1 -A rac1-nvip/255.255.255.0/eth2
3. 確定 USR_ORA_VIP 的值:
# crsctl stat res ora.rac1.vip
3. Linux如何配置主機名稱
查看hostname
1、查詢命令:hostname
2、輸出對應的文本文件:cat /proc/sys/kernel/hostname
修改hostname
1、hostname命令可以設置系統的hostname,
[root@linuxprobe~]hostnamenewhostname
newhostname即要設置的新的hostname,運行後立即生效,但是在系統重啟後會丟失所做的修改,如果要永久更改系統的hostname,就要修改相關的設置文件。
2、修改系統配置文件 /etc/sysconfig/network
[root@linuxprobe~]#vi/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=linuxprobe
3、修改hosts文件或者dns伺服器
[root@linuxprobe~]#vi/etc/hosts
127.0.0.1localhost.localdomain
4、用sysctl 修改kernel.hostname
[root@linuxprobe~]#sysctlkernel.hostname=hadoop
kernel.hostname=hadoop
備注
1、請使用sudo許可權
2、更多詳細的Linux基本學習教程和書籍可以從linuxprobe.com找到