keepalived配置
給出的虛擬IP為10.0.0.110
-
給出MASTER的配置檔案:
! Configuration File for keepalived #這裡給出keepalived -v的版本資訊 #Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2 global_defs { router_id nginx_load_balance_01 enable_script_security on script_user keepalived_script #不對,原因未知 #default_interface ens33 } #注意,這裡一定要給成雙引號,單引號不行 vrrp_script check_nginx { script "/home/keepalived_script/check_nginx" weight -7 } vrrp_instance nginx_load_balance { state MASTER interface ens33 virtual_router_id 51 priority 10 advert_int 1 #nopreempt好像得配置在backup機器上 #nopreempt authentication { auth_type PASS auth_pass 111111 } #不好使__start__ #指定要track哪些網絡卡,一旦這些網絡卡down了,那麼,這個vrrp_instance就進入fault狀態 #track_interface { #ens33 #ens34 #} #不好使__end__ #因為只是在網路層面track網絡卡是不夠的,我們還要進行監控某些應用層的東西 track_script { check_nginx } #注意,這裡一定要給成雙引號,單引號不行 notify_master "/home/keepalived_script/change_to_master" notify_backup "/home/keepalived_script/change_to_backup" notify_fault"/home/keepalived_script/change_to_fault" virtual_ipaddress { 10.0.0.110/8 } }
-
然後是
/home/keepalived_script/check_nginx
指令碼:#!/bin/env sh ret=$(ss -tunlp | grep 80 | wc -l) if [ $ret -lt 1 ]; then exit 1 else exit 0 fi
-
然後是BACKUP的配置:
! Configuration File for keepalived #這裡給出keepalived -v的版本資訊 #Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2 global_defs { router_id nginx_load_balance_02 enable_script_security on script_user keepalived_script } #注意,這裡一定要使用雙引號 vrrp_script check_nginx { script "/home/keepalived_script/check_nginx" weight 7 } vrrp_instance nginx_load_balance { state BACKUP interface ens33 virtual_router_id 51 priority 5 advert_int 1 #這個不能開啟。這個選項的意思是當MASTER down了以後, #BACKUP不搶佔虛擬IP。 #啟動時,日誌輸出中有Preempt disabled #nopreempt on authentication { auth_type PASS auth_pass 111111 } #不好使__start__ #指定要track哪些網絡卡,一旦這些網絡卡down了,那麼,這個vrrp_instance就進入fault狀態 #track_interface { #ens33 #ens34 #} #不好使__end__ #注意,這裡一定要給成雙引號,單引號不行 notify_master "/home/keepalived_script/change_to_master" notify_backup "/home/keepalived_script/change_to_backup" notify_fault"/home/keepalived_script/change_to_fault" #因為只是在網路層面track網絡卡是不夠的,我們還要進行監控某些應用層的東西 track_script { check_nginx } virtual_ipaddress { 10.0.0.110/8 } }
-
最後是
/home/keepalived_script/check_nginx
指令碼:#!/bin/sh ret=$(ss -tunlp | grep 80 | wc -l) if [ $ret -lt 1 ]; then exit 0 else exit 1 fi
-
遺留問題:
- global_defs中的default_interface什麼意思,會在哪個模組中用到,VRRP,LVS還是SNMP?
-
啟動時,日誌檔案(/var/log/messages)中會有這麼一個報錯:“PID file /var/run/keepalived.pid not readable (yet?) after start.”,這是為什麼?這裡給出/usr/lib/systemd/system/keepalived.service中的配置資訊:
[Unit] Description=LVS and VRRP High Availability Monitor After=syslog.target network-online.target [Service] Type=forking PIDFile=/var/run/keepalived.pid KillMode=process EnvironmentFile=-/etc/sysconfig/keepalived ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target