Keeplived配置Nginx双机高可用【转】
生活随笔
收集整理的這篇文章主要介紹了
Keeplived配置Nginx双机高可用【转】
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文:http://bbs.51cto.com/thread-1021620-1.html一、簡(jiǎn)介
不管是Keepalived還是Heartbeat做高可用,其高可用,都是站在服務(wù)器腳本去說(shuō)的高可用,而不是服務(wù)的角度。
也就是說(shuō),如果服務(wù)器DOWN機(jī)或者網(wǎng)絡(luò)出現(xiàn)故障,高可用是可以實(shí)現(xiàn)自動(dòng)切換的。如果運(yùn)行的服務(wù),比如Nginx掛掉
這些高可用軟件是意識(shí)不到的,需要自己寫腳本去實(shí)現(xiàn)服務(wù)的切換。
二、安裝配置Keepalived復(fù)制內(nèi)容到剪貼板
# make
# make install
# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
# cp /usr/local/sbin/keepalived /usr/bin/
# chkconfig --add keepalived?
# mkdir /etc/keepalived/
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/編輯MASTER的主配置文件(MASTER: 1.1.1.1)復(fù)制內(nèi)容到剪貼板
! Configuration File for keepalived
global_defs {
? ?router_id LVS_DEVEL
}
vrrp_script chk_nginx {
? ?? ???script "/opt/monnginx.sh"
? ?? ???interval 2
? ?? ???weight 2
}
vrrp_instance VI_1 {
? ? state MASTER
? ? interface eth0
? ? virtual_router_id 51
? ? priority 100
? ? advert_int 1
? ? authentication {
? ?? ???auth_type PASS
? ?? ???auth_pass mdnginx
? ? }
? ? virtual_ipaddress {
? ?? ???1.1.1.100
? ? }
? ? track_script {
? ?? ???chk_nginx
??}
}編輯BACKUP的主配置文件(BACKUP:1.1.1.2)
復(fù)制內(nèi)容到剪貼板
! Configuration File for keepalived
global_defs {
? ?router_id LVS_DEVEL
}
vrrp_script chk_nginx {
? ?? ???script "/opt/monnginx.sh"
? ?? ???interval 2
? ?? ???weight 2
}
vrrp_instance VI_1 {
? ? state BACKUP
? ? interface eth0
? ? virtual_router_id 51
? ? priority 100
? ? advert_int 1
? ? authentication {
? ?? ???auth_type PASS
? ?? ???auth_pass mdnginx
? ? }
? ? virtual_ipaddress {
? ?? ???1.1.1.100
? ? }
? ? track_script {
? ?? ???chk_nginx
??}
}三、啟動(dòng)服務(wù)與腳本編寫(主機(jī)和備機(jī)都要執(zhí)行)復(fù)制內(nèi)容到剪貼板
# service keepalived start編寫監(jiān)控Nginx的腳本復(fù)制內(nèi)容到剪貼板
#!/bin/bash
# author: honway.liu
# date: 2013-03-15
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
? ? ? ? service nginx start
fi
sleep 3
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
? ? ? ? service keepalived stop
fi改進(jìn)腳本,加上報(bào)警功能。復(fù)制內(nèi)容到剪貼板
#!/bin/bash
# author: honway.liu
# date: 2013-03-15
IPADDR=$(ip addr show eth0|awk '{print $2}' | sed -n 3p)
contact=(137XXXXXXXX@139.com)
num=${#contact[@]}
function email() {
for ((i=0;i<num;i++));do
? ?? ???echo "$IPADDR service problem" | mail -s "WARNING" ${contact[i]} -- -f gm100861@gmail.com
done
}
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
? ? ? ? service nginx start
fi
email
sleep 3
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
? ? ? ? service keepalived stop
email
fi這里的報(bào)警使用的是139郵箱,在139郵箱里面設(shè)置有郵件的時(shí)候,通知到手機(jī),并且以長(zhǎng)短信的方式。
需要開(kāi)戶本機(jī)的sendmail服務(wù)。
不管是Keepalived還是Heartbeat做高可用,其高可用,都是站在服務(wù)器腳本去說(shuō)的高可用,而不是服務(wù)的角度。
也就是說(shuō),如果服務(wù)器DOWN機(jī)或者網(wǎng)絡(luò)出現(xiàn)故障,高可用是可以實(shí)現(xiàn)自動(dòng)切換的。如果運(yùn)行的服務(wù),比如Nginx掛掉
這些高可用軟件是意識(shí)不到的,需要自己寫腳本去實(shí)現(xiàn)服務(wù)的切換。
二、安裝配置Keepalived復(fù)制內(nèi)容到剪貼板
代碼:
# ./configure# make
# make install
# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
# cp /usr/local/sbin/keepalived /usr/bin/
# chkconfig --add keepalived?
# mkdir /etc/keepalived/
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/編輯MASTER的主配置文件(MASTER: 1.1.1.1)復(fù)制內(nèi)容到剪貼板
代碼:
# vim /etc/keepalived/keepalived.conf! Configuration File for keepalived
global_defs {
? ?router_id LVS_DEVEL
}
vrrp_script chk_nginx {
? ?? ???script "/opt/monnginx.sh"
? ?? ???interval 2
? ?? ???weight 2
}
vrrp_instance VI_1 {
? ? state MASTER
? ? interface eth0
? ? virtual_router_id 51
? ? priority 100
? ? advert_int 1
? ? authentication {
? ?? ???auth_type PASS
? ?? ???auth_pass mdnginx
? ? }
? ? virtual_ipaddress {
? ?? ???1.1.1.100
? ? }
? ? track_script {
? ?? ???chk_nginx
??}
}編輯BACKUP的主配置文件(BACKUP:1.1.1.2)
復(fù)制內(nèi)容到剪貼板
代碼:
# vim /etc/keepalived/keepalived.conf! Configuration File for keepalived
global_defs {
? ?router_id LVS_DEVEL
}
vrrp_script chk_nginx {
? ?? ???script "/opt/monnginx.sh"
? ?? ???interval 2
? ?? ???weight 2
}
vrrp_instance VI_1 {
? ? state BACKUP
? ? interface eth0
? ? virtual_router_id 51
? ? priority 100
? ? advert_int 1
? ? authentication {
? ?? ???auth_type PASS
? ?? ???auth_pass mdnginx
? ? }
? ? virtual_ipaddress {
? ?? ???1.1.1.100
? ? }
? ? track_script {
? ?? ???chk_nginx
??}
}三、啟動(dòng)服務(wù)與腳本編寫(主機(jī)和備機(jī)都要執(zhí)行)復(fù)制內(nèi)容到剪貼板
代碼:
# service nginx start# service keepalived start編寫監(jiān)控Nginx的腳本復(fù)制內(nèi)容到剪貼板
代碼:
# vim /opt/monnginx.sh#!/bin/bash
# author: honway.liu
# date: 2013-03-15
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
? ? ? ? service nginx start
fi
sleep 3
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
? ? ? ? service keepalived stop
fi改進(jìn)腳本,加上報(bào)警功能。復(fù)制內(nèi)容到剪貼板
代碼:
# vim /opt/monnginx.sh#!/bin/bash
# author: honway.liu
# date: 2013-03-15
IPADDR=$(ip addr show eth0|awk '{print $2}' | sed -n 3p)
contact=(137XXXXXXXX@139.com)
num=${#contact[@]}
function email() {
for ((i=0;i<num;i++));do
? ?? ???echo "$IPADDR service problem" | mail -s "WARNING" ${contact[i]} -- -f gm100861@gmail.com
done
}
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
? ? ? ? service nginx start
fi
sleep 3
if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
? ? ? ? service keepalived stop
fi這里的報(bào)警使用的是139郵箱,在139郵箱里面設(shè)置有郵件的時(shí)候,通知到手機(jī),并且以長(zhǎng)短信的方式。
需要開(kāi)戶本機(jī)的sendmail服務(wù)。
轉(zhuǎn)載于:https://blog.51cto.com/swenzhao/1221682
總結(jié)
以上是生活随笔為你收集整理的Keeplived配置Nginx双机高可用【转】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDU-4536 XCOM Enemy
- 下一篇: C# 中文件路径的操作