1、安裝依賴包
yum -y install libnl libnl-devel yum install -y libnfnetlink libnfnetlink-devel rpm -ivhlibnfnetlink-1.0.0-1.el6.x86_64.rpm libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm
2、安裝Keepalived
cd /app tar -zxfkeepalived-1.3.5.tar.gz cd/app/keepalived-1.3.5 ./configure make && makeinstall
3、安裝後配置開啓自啓動
cp /usr/local/etc/sysconfig/keepalived/etc/sysconfig/keepalived cp -r /usr/local/etc/keepalived/ /etc/ cp /app/keepalived-1.3.5/keepalived/etc/init.d/keepalived/etc/init.d/keepalived chkconfig --add keepalived chkconfig keepalived on
4、配置Keepalived
/etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { [email protected] #發生郵件目標地址 [email protected] [email protected] } notification_email_from [email protected] #發生郵件源地址 smtp_server 192.168.200.1 #smtp服務器 smtp_connect_timeout 30 router_id LVS_DEVEL #機器標識,通常可設爲hostname。故障發生時,郵件通知會用到 ## -------------------------------------------------- vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_script chk_http_port { script "/usr/local/src/check_nginx_pid.sh" #監控服務腳步 interval 2 #檢測時間間隔(執行腳步間隔),每2s檢測一次 weight 2 #檢測失敗(腳本返回非0)則優先級 2,增減優先級 fall 2 #檢測連續 2 次失敗纔算確定是真失敗。會用weight減少優先級(1-255之間) rise 1 #檢測 1 次成功就算成功。但不修改優先級 } vrrp_instance VI_1 { state MASTER #主備的區別點,標識 MASTER BACKUP interface eth0 #對應的網卡 # mcast_src_ip 172.29.88.224 #發送多播數據包時的源IP地址,默認綁定網卡的IP virtual_router_id 51 #主、備機的virtual_router_id必須相同 priority 100 #優先級,誰做主(值越大,優先級越高) advert_int 2 #檢查間隔,默認爲1秒。這就是VRRP的定時器,MASTER每隔這樣一個時間間隔,就會發送一個advertisement報文以通知組內其他路由器自己工作正常 authentication { #定義認證方式和密碼,主從必須一樣 auth_type PASS auth_pass 1111 } track_interface { #監控的網卡。如果只監控服務,這裏可以不填 eth1 } track_script { #以腳本爲監控chk_http_port是前面填寫的 chk_http_port } virtual_ipaddress { #虛擬IP地址,可以設置多個IP地址 10.252.3.165/24 dev eth0 label eth0:1 # 192.168.200.16 # 192.168.200.17 # 192.168.200.18 } }
/usr/local/src/check_nginx_pid.sh
## ----------------------------- # 該腳本檢測ngnix的運行狀態,並在nginx進程不存在時嘗試重新啓動ngnix,如果啓動失敗則停止keepalived,準備讓其它機器接管。 ## ----------------------------- #!/bin/bash counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then /usr/local/bin/nginx sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then /etc/init.d/keepalived stop fi fi
5、管理Keepalived
停止:
service keepalived stop
啓動:
service keepalived start
重啓:
service keepalived restart
重新加載配置文件:
service keepalived reload