Linux
重啟後 PostgreSQL 不在本地 eth1 上監聽
我有一個帶有 2 個網路介面的伺服器 - eth0 上的全域介面和 eth1 上的本地介面,IP 為 10.181.xx.xx。執行 Ubuntu 16.04。
我設置 PostgreSQL 來監聽這個本地地址,這樣網路中的另一台伺服器就可以訪問它。
問題是當我重新啟動數據庫伺服器時,PostgreSQL 無法綁定到這個本地地址。在 postgresql.log 中有這個:
2016-07-01 15:06:09 GMT LOG: could not bind IPv4 socket: Cannot assign requested address 2016-07-01 15:06:09 GMT HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. 2016-07-01 15:06:09 GMT WARNING: could not create listen socket for "10.181.xx.xx"
完成後
service postgresql restart
一切正常。如何讓 Postgres 等到重啟後 eth1 啟動並綁定到它?
調查
/var/log/syslog
並發現這是systemd
啟動順序的問題。添加
After=network-online.target
行
/lib/systemd/system/postgresql@.service
到[Unit]
部分所以它看起來像這樣:
[Unit] Description=PostgreSQL Cluster %i ConditionPathExists=/etc/postgresql/%I/postgresql.conf PartOf=postgresql.service ReloadPropagatedFrom=postgresql.service Before=postgresql.service After=network-online.target
一切都開始工作 - PostgreSQL 現在在網路線上後載入。