master服務器ip地址:192.168.0.182
slave服務器ip地址:192.168.0.189
虛擬ip(VIP,一個尚未占用的內網ip即可)地址:192.168.0.180
確認使用的網卡
使用第2個網卡【enp0s3】
使用wget命令下載,下載位置/usr/local/
keepalived下載地址:http://www.keepalived.org/download.html
wget http://www.keepalived.org/software/keepalived-1.4.2.tar.gz
解壓:
tar zxvf keepalived-1.4.2.tar.gz
安裝依賴插件:
yum install -y gcc openssl-devel popt-devel
編譯安裝:
cd keepalived-1.4.2 #指定安裝目錄 ./configure --prefix=/usr/local/keepalived make && make install
運行前配置
# cp /usr/local/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/ # mkdir /etc/keepalived # cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ # cp /usr/local/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ # cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
修改配置文件:
vim /etc/keepalived/keepalived.conf
具體配置如下:
master服務器配置:
! Configuration File for keepalived global_defs { #一個沒重復的名字即可 router_id xxoo_master } # 檢測nginx是否運行 vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { # 此處不設置為MASTER,通過priority來競爭master state BACKUP # 網卡名字,文章下方會給出如何獲取網卡名字的方法 interface enp0s3 # 同一個keepalived集群的virtual_router_id相同 virtual_router_id 51 # 權重,master要大於slave priority 100 # 主備通訊時間間隔 advert_int 1 # 如果兩節點的上聯交換機禁用了組播,則采用vrrp單播通告的方式 # 本機ip unicast_src_ip 192.168.0.182 unicast_peer { # 其他機器ip 192.168.0.189 } # 設置nopreempt防止搶占資源 nopreempt # 主備保持一致 authentication { auth_type PASS auth_pass 1111 } # 與上方nginx運行狀況檢測呼應 track_script { chk_nginx } virtual_ipaddress { # 虛擬ip地址(VIP,一個尚未占用的內網ip即可) 192.168.0.180 } }
slave服務器配置:
! Configuration File for keepalived global_defs { #一個沒重復的名字即可 router_id xxoo_slave } # 檢測nginx是否運行 vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { # 此處不設置為MASTER,通過priority來競爭master state BACKUP # 網卡名字,文章下方會給出如何獲取網卡名字的方法 interface enp0s3 # 同一個keepalived集群的virtual_router_id相同 virtual_router_id 51 # 權重,master要大於slave priority 90 # 主備通訊時間間隔 advert_int 1 # 如果兩節點的上聯交換機禁用了組播,則采用vrrp單播通告的方式 # 本機ip unicast_src_ip 192.168.0.189 unicast_peer { # 其他機器ip 192.168.0.182 } # 設置nopreempt防止搶占資源 nopreempt # 主備保持一致 authentication { auth_type PASS auth_pass 1111 } # 與上方nginx運行狀況檢測呼應 track_script { chk_nginx } virtual_ipaddress { # 虛擬ip地址(VIP,一個尚未占用的內網ip即可) 192.168.0.180 } }
nginx監聽腳本:
#創建nginx檢測腳本
#touch nginx_check.sh
#給腳本增加可執行權限
#chmod +x nginx_check.sh
腳本添加如下內容:
#! /bin/bash pidof nginx if [ $? -ne 0 ];then /etc/init.d/keepalived stop fi
防止出現腦裂現象(主備同時獲取了VIP地址)
# 指定keepalived配置的網卡:enp0s3,固定的VRRP廣播地址:224.0.0.18 firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface enp0s3 --destination 224.0.0.18 --protocol vrrp -j ACCEPT firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface enp0s3 --destination 224.0.0.18 --protocol vrrp -j ACCEPT firewall-cmd --reload # 查看配置的規則 firewall-cmd --direct --get-rules ipv4 filter INPUT firewall-cmd --direct --get-rules ipv4 filter OUTPUT
啟動服務:
service keepalived start
# 配置開機自啟動
systemctl enable keepalived
查看服務啟動情況:
ps -aux |grep keepalived
查看啟動日志:
journalctl -xe
查看keepalived日志
tail -f /var/log/messages
配置成功后的效果。enp0s3是網卡名字;192.168.0.180是虛擬ip,已經成功綁定到網卡上。
QQ技術交流群:282575808
--------------------------------------
聲明: 原創文章,未經允許,禁止轉載!
--------------------------------------