$ vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "/etc/keepalived/chk_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state BACKUP
priority 101
virtual_router_id 50
garp_master_delay 1
authentication {
auth_type PASS
auth_pass Hc8scrRddsLsc3
}
virtual_ipaddress {
172.31.100.1
}
track_script {
chk_haproxy
}
#notify_master "/etc/keepalived/Mailnotify.py backup"
#notify_backup "/etc/keepalived/Mailnotify.py master"
#notify_fault "/etc/keepalived/Mailnotify.py fault"
}
B)Slave:
$ vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "/etc/keepalived/chk_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state BACKUP
priority 100
virtual_router_id 50
garp_master_delay 1
authentication {
auth_type PASS
auth_pass Hc8scrRddsLsc3
}
virtual_ipaddress {
172.31.100.1
}
track_script {
chk_haproxy
}
notify_master "/etc/keepalived/Mailnotify.py backup"
notify_backup "/etc/keepalived/Mailnotify.py master"
#notify_fault "/etc/keepalived/Mailnotify.py fault"
}
C)主備兩邊都需要的檢測腳本和郵件報警腳本:
#keepalive調用該腳本檢測haproxy是否停止
$ vi /etc/keepalived/chk_haproxy.sh
#!/bin/bash
status=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
if [ "${status}" = "0" ]; then
/etc/init.d/haproxy start
status2=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)
if [ "${status2}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
#郵件報警腳本 來自網絡劉天斯大牛
$ vi /etc/keepalived/chk_haproxy.sh
#!/usr/bin/env python
#coding: utf-8
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
from email.header import Header
import sys
import smtplib
strFrom = 'xxxxx@126.com' #郵件來自哪裡
strTo = 'receive@gmail.com' #收件箱
smtp_server='smtp.126.com' #郵件服務器地址
smtp_user='send@126.com' #發件箱
smtp_pass='passwdxx' #密碼
if sys.argv[1]!="master" and sys.argv[1]!="backup" and sys.argv[1]!="fault":
sys.exit()
else:
notify_type=sys.argv[1]
mail_title='[緊急]負載均衡器郵件通知'
mail_body_plain=notify_type+'被激活,請做好應急處理。'
mail_body_html='<b><font color=red>'+notify_type+'被激活,請做好應急處理。</font></b>'
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] =Header(mail_title,'utf-8')
msgRoot['From'] = strFrom
msgRoot['To'] = strTo
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)
msgText = MIMEText(mail_body_plain, 'plain', 'utf-8')
msgAlternative.attach(msgText)
msgText = MIMEText(mail_body_html, 'html','utf-8')
msgAlternative.attach(msgText)
smtp = smtplib.SMTP()
smtp.connect(smtp_server)
smtp.login(smtp_user,smtp_pass)
smtp.sendmail(strFrom, strTo, msgRoot.as_string())
smtp.quit()
3)運行 $ /etc/init.d/keepalived start $ chkconfig keepalived on 4)檢查 $ ps aux|grep keeepalived #查看進程 $ ip addr show #用來查看地址是否切換的 三.結尾 以上是該軟件的全部部署過程