天天看點

故障集---Postgresql + keepalived 主備切換故障

前言:

在部署postgresql + keepalived 高可用的時候,我們一般會在keepalived配置檔案中設定監測腳本來關聯postgresql服務,本來這也是個小問題,算是粗心造成的,不過也記錄一下吧

叢集配置

  • 2台伺服器,做的postgresql 主從,同時在兩台伺服器上做了keepalived主備切換
  • keepalived配置檔案如下(另一台為BACKUP,配置正常):
! Configuration File for keepalived

global_defs {
   router_id LVS_3
   script_user root
   enable_script_security
}
vrrp_script chk_http_port {
    script "/usr/local/bin/check_postgres.sh"
    interval 2
    weight -20
}
vrrp_instance VI_PG {
    state MASTER
    interface ens160
    virtual_router_id 50
    priority 101
    advert_int 1
    unicast_src_ip  192.168.230.128
    unicast_peer {
        192.168.230.122
    }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.230.100
    }
    track_script {
        chk_http_port
    }

}
           
  • check_postgres.sh檢測腳本如下:
#!/bin/bash

count=`netstat -an|grep ":5432" | grep LISTEN| wc -l`

if [ "$count" == "0" ]; then
    systemctl stop keepalived
fi
           
  • 同時設定了crontab周期性執行check_postgres.sh
  • 問題現象:
  • keepalived 啟動一小會之後,會被check_postgres.sh監測腳本幹掉(但是主伺服器上PG服務是正常的)
  • 解決:
  • 很粗心的一個錯誤,keepalived中已設定了周期性執行腳本,而又設定了crontab周期性任務來執行檢測。因為重複觸發導緻的異常現象,隻要删除crontab的資訊即可。。。

小結

  • emmm…要多熟悉配置檔案的各個配置項的功能和作用。。多細心觀察