目錄
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