簡體   English   中英

更新服務器上IP地址的所有實例

[英]Update all instances of IP address on a server

當前,我們有一個動態提供的IP地址,並正在切換到一個靜態IP地址。 因此,我需要更改3個LAMP服務器上的IP地址。 這些服務器還運行DNS的bind9和電子郵件的postfix / docotcot。 (MySQL實際上是作為Percona數據庫集群運行的,這可能是無關緊要的。)

我認為我有一個很好的策略,但想與其他之前可能成功完成此工作的人核對我的邏輯。

該概念是一次停止每台計算機上的所有Web,數據庫和郵件服務,將流量推送到其余兩個服務器之一,然后運行以下腳本以將新IP地址替換為舊IP地址,然后重新啟動服務器,然后嘗試將流量推回去,如果一切順利,則繼續使用群集中的下一個服務器。

我使用grep -r在系統中查找舊IP地址的實例,並且需要確保我沒有遺漏任何需要考慮的重要內容。

find /etc/bind -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/postfix -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/apache2 -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/postfix -type f -print0 | xargs -0 sed -i 's/old-ip-address/new-ip-address/g'
find /etc/bind -type f -print0 | xargs -0 sed -i 's/rev.address.ip.old/rev.address.ip.new/g'

為了澄清起見,grep -r在/ etc / bind / zones表,/ etc / postfix配置文件和/ etc / apache2配置文件中找到了IP地址引用。 在后綴配置文件中也找到了用連字符分隔的IP地址。 在/etc/bind/named.conf.local文件中也找到了反向IP地址,也需要將其替換。

誰能看到我是否在這里錯過了什么? 我是在生產環境中這樣做的……當然,這不是最理想的情況。

不好意思 看起來我找到解決方案后就讓它過時了。 為了后代的緣故,這似乎在起作用:

$ORIGIN example.com.
$TTL 12H
; @ symbol represents example.com.
@   12H IN  SOA ns1.example.com.    hostmaster@example.com. (
2015062954 ;serial
30M ;refresh
2M ;retry
2W ;expire
1D ;minimum TTL
)
NS  ns1.example.com.
NS  ns2.example.com.
MX  10  mail.example.com.
IN  A   99.101.XXX.XXX
IN  TXT "v=spf1 a mx ip4:99.101.XXX.XXX ~all"
IN  SPF "v=spf1 a mx ip4:99.101.XXX.XXX -all"
ns1 IN  A   99.101.XXX.XXX
ns2 IN  A   99.101.XXX.XXX
mail    IN  A   99.101.XXX.XXX
IN  TXT "v=spf1 a mx ip4:99.101.XXX.XXX ~all"
IN  SPF "v=spf1 a mx ip4:99.101.XXX.XXX -all"
www IN  A   99.101.XXX.XXX
dev IN  A   99.101.XXX.XXX
demo    IN  A   99.101.XXX.XXX
webconf IN  A   99.101.XXX.XXX
stats   IN  A   99.101.XXX.XXX

盡管使用通過管道傳送到xargsfind的想法聽起來很合理,但我會以15年的經驗告訴您,這是一個壞主意。 我建議:

  1. 識別那些在重要框上運行的服務(您的find命令在這里非常有用)
  2. 識別那些對定義了地址的服務中的每一個都重要的文件
  3. 備份這些文件(將CP轉換為.orig效果很好)
  4. 創建包含您的新地址的新文件

這樣,您可以通過以下方式快速過渡:

cp somefile.new somefile

並通過以下方式快速退出:

cp somefile.orig somefile

另外,我希望區域文件包含實際的DNS條目,因此可以進行更改,但是您可能需要重新加載具名才能使這些更改生效。 postfix也一樣,您也希望通過postfix重新加載這些內容。

編輯(我還沒有花時間實際加載該區域,但是看起來相當正確):

$ORIGIN example.com. 
$TTL 12H @  IN  SOA ns1.example.com.    hostmaster@example.com. ( 
                2015062660 ; 
                30M ;refresh 
                2M ;retry 
                2W ;expire 
                1D ;minimum TTL 
                )   

        IN  NS  ns1.example.com. 
        IN  NS  ns2.example.com. 

        IN  A   99.101.XXX.X 

example.com.    IN  MX  10  mail.example.com. 
mail        IN  A   99.101.XXX.X 
        IN  TXT     "v=spf1 a mx ip4:99.101.XXX.X ~all

ns1     IN  A   99.101.XXX.X 
ns2     IN  A   99.101.XXX.X 
www     IN  CNAME   example.com. 
dev         IN  CNAME   example.com. 
demo        IN  CNAME   example.com. 
webconf     IN  CNAME   example.com. 
stats       IN  CNAME   example.com. 

編輯: 膠水記錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM