
我有一個在 debian 上運行的 VCS 作為產品伺服器,由於一些虛擬機器管理程式問題,它必須在過去一周重新啟動/遷移/更新幾次。
因為我使用 docker 容器運行我的應用程序,所以我不能只是localhost
通過它連接到我的本地 postgres,所以我使用 ipens2
代替。
ens2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.12.174.3 netmask 255.255.255.254 broadcast 10.12.174.3
inet6 fe80::dc1c:14ff:fe51:5002 prefixlen 64 scopeid 0x20<link>
inet6 2001:bc8:4740:205::1 prefixlen 127 scopeid 0x0<global>
ether de:1c:14:51:50:02 txqueuelen 1000 (Ethernet)
RX packets 37139 bytes 4801851 (4.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 39791 bytes 35291408 (33.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
但是每次重新啟動時,ip都會發生變化,我必須手動去環境變數中更改它,以便我的應用程式可以再次訪問資料庫,我相信您會同意這不是很實用。
所以這是我的問題:有沒有一種方法可以自動為這個特定的介面分配一個別名,非常類似localhost
?
我想我仍然可以嘗試解析ifconfig
輸出,但我寧願先詢問實際的解決方案
答案1
域名系統。
也許維護一個記錄以供應用程式使用appdb.prod.example.org
。由於這是服務名稱,請考慮為目前正在執行它的主機建立 CNAME。
每次主機取得 IP 時更新 DNS 中的名稱。例如,AAAA 記錄稱為container1.example.org
contains 2001:bc8:4740:205::1
。具體如何執行此操作取決於您的編號方案和 DNS 配置。靜態 IP 分配後即可輸入。 DHCP 掛鉤可用於更新 DNS。並且有軟體可以監視每個介面的 IP 變更並執行 nsupdate,例如 自動域名。
不要在 Linux 上使用 ifconfig,不適用於新腳本。它已經過時了至少 11 年。
答案2
總是可以使用:
alias ip="hostname -I"