Keepalived部署雙主熱備

Keepalived部署雙主熱備


一、Keepalived安裝部署

1.1、去Keepalived官網下載壓縮包

1.2、上傳壓縮包到服務器,並解壓

# 上傳壓縮包
scp ./keppalived.tar.gz [email protected]:/home/software
# 解壓
tar -zxvf keppalived.tar.gz

1.3、進入解壓目錄使用configure命令進行配置安裝

./configure --prefix=/usr/local/keepalived --sysconf=/etc
  • prefix:keepalived安裝的位置
  • sysconf:keepalived核心配置文件所在位置,固定位置,改成其他位置則keepalived啓動不了,/var/log/message中會報錯

警告

  • 安裝過程可能報錯:WARNING -this build will not support IPVS with IPv6. …
  • 解決:安裝libnl/libnl-3依賴,重新configure一下,就OK了
    yum -y install libnl libnl-devel

1.4、安裝keepalived

make && make install

進入/etc/keepalived,該目錄下爲keepalived核心配置文件


二、配置Keepalived主和從

2.1配置Keepalived - 主

2.1.1、通過命令 vim keepalived.conf打開配置文件,文件位置/etc/keepalived文件夾下

global_defs {
   # 路由id:當前安裝keepalived節點主機的標識符,全局唯一標識符
   router_id keep_192.168.64.131
}

# 計算機節點
vrrp_instance VI_1 {
    # 表示的狀態,當前的192.168.64.131的nginx的主節點
    # 主節點:MASTER,備用機:BACKUP
    state MASTER
    # 當前實例綁定的網卡
    interface ens33
    # 保證主備節點一致
    virtual_router_id 51
    # 優先級/權重,誰的優先級高,在MASTER掛掉以後,就能成爲MASTER
    priority 100
    # 主備之間同步檢查的時間間隔,默認1s
    advert_int 1
    # 認證授權的密碼,防止非法節點的進入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.64.121
    }
}

ip addr 命令可以查看自己的ip和網卡地址

2.1.2、啓動Keepalived

# 進去啓動目錄
cd /usr/local/keeplived/sbin

# 啓動
./keepalived

# 查看進程
ps -ef|grep keepalived

# 查看虛擬ip
ip addr

2.2、配置Keepalived - 從

2.2.1、通過命令 vim keepalived.conf打開配置文件,文件位置/etc/keepalived文件夾下

global_defs {
   # 路由id:當前安裝keepalived節點主機的標識符,全局唯一標識符
   router_id keep_192.168.64.132
}

# 計算機節點
vrrp_instance VI_1 {
    # 表示的狀態,當前的192.168.64.131的nginx的主節點
    # 主節點:MASTER,備用機:BACKUP
    state BACKUP
    # 當前實例綁定的網卡
    interface ens33
    # 保證主備節點一致
    virtual_router_id 51
    # 優先級/權重,誰的優先級高,在MASTER掛掉以後,就能成爲MASTER
    priority 80
    # 主備之間同步檢查的時間間隔,默認1s
    advert_int 1
    # 認證授權的密碼,防止非法節點的進入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.64.121
    }
}

ip addr 命令可以查看自己的ip和網卡地址

2.3、啓動Keepalived

# 進去啓動目錄
cd /usr/local/keeplived/sbin

# 啓動
./keepalived

# 查看進程
ps -ef|grep keepalived

# 查看虛擬ip
ip addr

三、Keepalived註冊爲系統服務

3.1、進入keepalived解壓目錄並拷貝配置文件到指定位置

# 進入解壓目錄
cd /home/software/keepalived-2.0.18

# 進入keepalived目錄
cd keepalived

# 進入etc目錄
cd etc

# 拷貝配置文件到系統etc下的init.d文件夾下
cp init.d/keepalived /etc/init.d/

# 拷貝配置文件到系統etc下的sysconfig文件夾下
cp sysconfig/keepalived /etc/sysconfig/

# 刷新配置
systemctl daemon-reload

3.2、使用系統服務器進行keepalived啓動關閉

# 啓動keepalived服務
systemctl start keepalived.service

# 檢測keepalived服務狀態,兩種方法都可以
systemctl status keepalived.service
ps -ef|grep keepalived

# 停止keepalived服務
systemctl stop keepalived.service

# 重啓keepalived服務
systemctl restart keepalived.service

四、Keepalived配置Nginx自動重啓

4.1、增加nginx重啓檢測腳本

vim /etc/keepalived/check_nginx_alive_or_not.sh

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`
# 判斷nginx是否宕機,如果宕機了,嘗試重啓
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    # 等待一小會再次檢查nginx,如果沒有啓動成功,則停止keepalived,使其啓動備用機
    sleep 3
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi
  • 增加運行權限
    chmod +x /etc/keepalived/check_nginx_alive_or_not.sh
    

4.2、配置keepalived監聽nginx腳本

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2 # 每隔兩秒運行上一行腳本
    weight 10 # 如果腳本運行成功,則升級權重+10
}

這段代碼配置在/etc/keepalived/keepalived.conf腳本中’

4.3、配置vrrp_instance中新增監控的腳本

track_script {
        check_nginx_alive   # 追蹤 nginx 腳本
}

4.4、重啓Keepalived是的配置文件生效

systemctl restart keepalived

附:Keepalived.conf完整配置

global_defs {
   # 路由id:當前安裝keepalived節點主機的標識符,全局唯一標識符
   router_id keep_192.168.64.131
}

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2 # 每隔兩秒運行上一行腳本
    weight 10 # 如果腳本運行成功,則升級權重+10
}

# 計算機節點
vrrp_instance VI_1 {
    # 表示的狀態,當前的192.168.64.131的nginx的主節點
    # 主節點:MASTER,備用機:BACKUP
    state MASTER
    # 當前實例綁定的網卡
    interface ens33
    # 保證主備節點一致
    virtual_router_id 51
    # 優先級/權重,誰的優先級高,在MASTER掛掉以後,就能成爲MASTER
    priority 100
    # 主備之間同步檢查的時間間隔,默認1s
    advert_int 1
    # 認證授權的密碼,防止非法節點的進入
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx_alive   # 追蹤 nginx 腳本
    }

    virtual_ipaddress {
        192.168.64.121
    }
}

五、配置Keepalived雙主熱備

5.1、進入主節點然後 vim /etc/keepalived/keepalived.conf

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive_or_not.sh"
    interval 2 # 每隔兩秒運行上一行腳本
    weight 10 # 如果腳本運行成功,則升級權重+10
}

# 計算機節點
vrrp_instance VI_1 {
    # 表示的狀態,當前的192.168.64.131的nginx的主節點
    # 主節點:MASTER,備用機:BACKUP
    state MASTER
    # 當前實例綁定的網卡
    interface ens33
    # 保證主備節點一致
    virtual_router_id 51
    # 優先級/權重,誰的優先級高,在MASTER掛掉以後,就能成爲MASTER
    priority 100
    # 主備之間同步檢查的時間間隔,默認1s
    advert_int 1
    # 認證授權的密碼,防止非法節點的進入
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx_alive   # 追蹤 nginx 腳本
    }

    virtual_ipaddress {
        192.168.64.121
    }
}


vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        192.168.64.122
    }
}

5.2、進入主節點然後 vim /etc/keepalived/keepalived.conf

global_defs {
   # 路由id:當前安裝keepalived節點主機的標識符,全局唯一標識符
   router_id keep_192.168.64.132
}

# 計算機節點
vrrp_instance VI_1 {
    # 表示的狀態,當前的192.168.64.131的nginx的主節點
    # 主節點:MASTER,備用機:BACKUP
    state BACKUP
    # 當前實例綁定的網卡
    interface ens33
    # 保證主備節點一致
    virtual_router_id 51
    # 優先級/權重,誰的優先級高,在MASTER掛掉以後,就能成爲MASTER
    priority 80
    # 主備之間同步檢查的時間間隔,默認1s
    advert_int 1
    # 認證授權的密碼,防止非法節點的進入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.64.121
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.64.122
    }
}

5.3、分別重啓兩臺服務器的keepalived服務

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