PID file /var/run/keepalived.pid not readable (yet?) after start.

廢話不多說,網上大多數人的 keepalived 都是以 tar.zh 方式解壓安裝的,都不是用 yum 方式安裝的,你查了半天也解決不了現在的問題,因爲根本不對應。

我開始也是各種嘗試,各種查解決方案,但是還是解決不了,最後決定也同樣從官網下載 tar.zh的壓縮包吧。

環境:

通過yum安裝的keepalived,使用 keepalived -version 查到的版本號是1.3.5
而通過官網下載最新的安裝包,已經可以下到2.0.20了,所以會出現各種問題,你猜到是因爲什麼了嘛?

首先卸載原先通過yum方式下載的keepalived

yum remove keepalived

下載最新的壓縮包格式的keepalived
官網:https://www.keepalived.org/ 我下載的是 2.0.20

下載後放到你想放的任何地方,然後解壓,進入到該目錄

執行檢測命令:(這個地方是我建議放的地方,因爲後面的配置都是以這個配置爲基礎的)

./configure -prefix=/usr/local/keepalived

執行安裝命令:(不要換目錄繼續執行)
安裝的內容就被安裝到上面自己寫的目錄中

make && make install

初始化及啓動:
啓動腳本變量引用文件

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived

將keepalived主程序加入到環境變量

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived

keepalived啓動腳本,放到/etc/init.d/目錄下就可以使用service命令便捷調用

cp /你當初解壓的keepalived目錄/keepalived/etc/init.d/keepalived  /etc/init.d/keepalived
#你可以可以不做這步,可以使用主程序/usr/local/keepalived/sbin/keepalived來做相關操作

將配置文件放到默認路徑下

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

啓動、關閉、重啓、查看狀態 (等配置完配置信息再啓動)

service keepalived start|stop|restart|status

配置文件配置和腳本文件

兩臺服務器的配置文件
主服務器 /etc/keepalived/keepalived.conf

#全局定義
global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.235.129  #改這裏了
   smtp_connect_timeout 30
   router_id nginx_master  #唯一的值,也可以改成IP
}

#檢測腳本定義
vrrp_script chk_http_port {
    script "/usr/local/src/nginx_check.sh"
    interval 2   # 檢測腳本執行的間隔
    weight   2   # 權重等級
}

#虛擬實例定義
vrrp_instance VI_1 {
    state MASTER   #主機爲MASTER,備用機爲BACKUP
    interface ens33   #網卡名,用ifconfig查看
    virtual_router_id 66   #主、備機的virtual_router_id必須相同
    priority 100   #主、備機取不同的優先級,主機值較大,備份機值較小
    advert_int 1		 #心跳,每隔1秒鐘檢測一下服務器是否還活着
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.235.50   # 暴露給外界的虛擬IP地址,切記要與實際服務器處於同一網段
    }
}

從服務器 /etc/keepalived/keepalived.conf

#全局定義
global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.235.131  #改這裏了
   smtp_connect_timeout 30
   router_id nginx_backup  #唯一的值,也可以改成IP
}

#檢測腳本定義
vrrp_script chk_http_port {
    script "/usr/local/src/nginx_check.sh"
    interval 2   # 檢測腳本執行的間隔
    weight   2   # 權重等級
}

#虛擬實例定義
vrrp_instance VI_1 {
    state BACKUP     #主機爲MASTER,備用機爲BACKUP
    interface ens33  #網卡名,用ifconfig查看
    virtual_router_id 51   #主、備機的virtual_router_id必須相同
    priority 90             #主、備機取不同的優先級,主機值較大,備份機值較小
    advert_int 1			 #心跳,每隔1秒鐘檢測一下服務器是否還活着
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.235.50  # 暴露給外界的虛擬IP地址,切記要與實際服務器處於同一網段
    }
}

注意:
(1)例如:chk_http_port { ,這裏的 “{” 要與前面的名稱要有空格
(2)vip(virtual_ipaddress) 的地址網關要與實際服務器的網關一致,例如服務器IP地址爲 192.168.235.131 ,寫的vip的地址 也應該是 192.168.235.xxx

兩臺服務器的腳本文件
/usr/local/src/nginx_check.sh

#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then
  /usr/local/nginx/sbin/nginx
  sleep 2
  if [ `ps -C nginx --no-header |wc -l` -eq 0];then
    killall keepalived
  fi
fi

配置完信息後啓動 keepalived

service keepalived start

你可以使用 ps -ef|grep keepalived 來看它是否真的已經啓動了,用 service keepalived status可能看不出來

測試
這裏我增加了一個靜態的網頁資源,你可能沒有這個網頁,但也可以直接訪問192.168.xx.xx(你自己設置的virtual_ipaddress 地址),不出意外它就會訪問到Nginx的默認主頁,我這裏只是多配了個網頁方便測試而已。
在這裏插入圖片描述
當主服務器nginx還活着的時候,主服務器的ip是綁定着 ens33 網卡的
在這裏插入圖片描述
從服務器就沒有
在這裏插入圖片描述

當把主服務器的 nginx 和 keepalived 停止服務2秒鐘後
在這裏插入圖片描述
從服務器
在這裏插入圖片描述

同樣,當主服務器再次打開時,再次訪問同樣的地址,立刻就切回了主服務器的頁面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章