keepalived配置高可用


一.介紹

編寫腳本,keepalived是根據返回值判斷的,所以這里直接grep進程名,能查到返回0,否則返回1
讓keepalived每5秒運行一次腳本,2次都返回1則認為httpd服務掛掉了,則降低優先級,釋放vip。

有的博客例子是腳本檢測服務有問題,直接關閉keepalived,這樣其實很麻煩,而且當台機器有多個實例都要高可用,就沒法這么做了。

二.配置

環境聲明

[web-server-1]
    主機名 = host-1
    系統 = centos-7.3
    地址 = 192.168.2.41
    軟件 = keepalived-1.3.5
	       httpd-2.4.6

[web-server-2]
    主機名 = host-2
    系統 = centos-7.3
    地址 = 192.168.2.150
    軟件 = keepalived-1.3.5
	       httpd-2.4.6

服務配置

1.已經有其他需要高可用服務,可以不安裝,這里只是做測試
(機器均操作)
yum -y install httpd
systemctl start httpd

yum -y install keepalived
systemctl enable keepalived

2.添加測試文件
(host-1操作)
echo "one" > /var/www/html/index.html

(host-2操作)
echo "tow" > /var/www/html/index.html

3.創建檢測腳本
(機器均操作)
vim /etc/keepalived/check_httpd.sh

#!/bin/sh
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ]
then
    exit 1
fi

chmod +x /etc/keepalived/check_httpd.sh

4.修改配置文件如下,多余的刪除
(host-1操作)
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id lb01
}

vrrp_script httpd  #vrrp腳本命名
{
    script "/etc/keepalived/check_httpd.sh" #要執行的腳本
    interval 2 #腳本指定間隔
	weight -40   #優先級(如果腳本執行結果為0,並且weight配置的值大於0,則優先級相應的增加,如果腳本執行結果非0,並且weight配置的值小於0,則優先級相應的減少)
}

vrrp_instance VI_1 {
    state MASTER
    interface enp0s8
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script #調用上面定義的檢查腳本
{
    httpd
}
    virtual_ipaddress {
        192.168.2.99
    }
}

(host-2操作)
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id lb02
}

vrrp_script httpd
{
    script "/etc/keepalived/check_httpd.sh"
    interval 2
	weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface enp0s8
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script
{
    httpd
}
   virtual_ipaddress {
        192.168.2.99
    }
}

(機器均操作)
systemctl start keepalived

三.測試

最開始的99報錯,是因為主節點還未運行腳本檢測,等待10秒將切換。這個時間在生產環境無意是非常長的,可以適當調節短。
file

四.多實例

每一段vrrp_instrance都是一個,底下的看起來沒什么不同,但是可以配置腳本,讓VI_1檢測到nginx有問題后,將10.0.0.3下線

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3/24 dev eth0 label eth0:1
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.4/24 dev eth0 label eth0:2
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM