背景:
公司專案采用nginx+tomcat+mysql搭建,最近某個新專案客戶給的2臺web服務器(以A、B區分)網路不穩定,A服務器在某次活動中訪問量很大時,機器回應越來越慢,后來直接掛掉,此服務器當時只啟用了nginx,相當于只訪問靜態圖片,所以后來決定采用(keepalived+nginx)+tomcat+mysql來搭建。參考了網上很多文章后,AB服務器按如下搭建:
A:xx.xx.xx.10(eth0,公網)做master
B:xx.xx.xx.11(eth0,公網)做backup
A、B都安裝Nginx 1.10.1+keepalived 1.3.2,域名系結到10的IP,keepalived的VIP配置為10,組態檔如下:
A服務器10:
! Configuration File for keepalived
global_defs {
router_id hlwweb
}
vrrp_script nginx_check {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
mcast_src_ip xx.xx.xx.11
priority 90
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
nginx_check
}
virtual_ipaddress {
xx.xx.xx.11/8 scope global eth0
}
}
B服務器11:
! Configuration File for keepalived
global_defs {
router_id hlwweb
}
vrrp_script nginx_check {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
mcast_src_ip xx.xx.xx.11
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
nginx_check
}
virtual_ipaddress {
xx.xx.xx.11/8 scope global eth0
}
}
問題現象:
1、啟動A和B的nginx和keepalived后,keepalived日志正常,10進master、11進backup,域名訪問正常,停止10或者11的nginx,keepalived中的vrrp_script腳本會自動重新啟動nginx;
2、停止11的keepalived服務,沒有例外現象;
3、停止10的eth0網卡ifdown eth0,漂移成功,訪問域名會跳到B服務器的nginx;
4、停止10的keepalived服務,出現過2種現象,可能和keepalived配置不同有關:
4.1、此時10的公網IP會丟失,B服務器keepalived日志立刻顯示切到master,網卡資訊里顯示VIP,但實際并未生效,也就是訪問域名會卡住,過幾秒提示無法訪問,此時無法連接A服務器,也ping不通,過大概5-10分鐘,漂移生效,訪問域名會跳到B服務器的nginx,ssh連接A服務器會登到B服務器;
4.2、B服務器keepalived日志立刻顯示切到master,網卡資訊里顯示VIP,但實際并未生效,也就是訪問域名仍然會訪問到A服務器的nginx。
主要問題:
1、上述問題現象,是否有人遇到過,是和網卡配置有關還是keepalived配置有關?我把AB主從對調過,效果一樣。
2、VIP配置為A服務器的IP是否有問題,看網上都說要3個IP,我這里之前由于機房限制,只有公網IP,后來自己設定了內網IP,在eth1,應該利用內網的eth1做配置嗎,如何做?
3、有其他同事做了一套類似的架構,AB兩臺服務器有外網也有內網IP,單獨購買了一個公網IP做為VIP,那么我想問的是,如果我有兩臺服務器,配置的VIP是同網段的別人的公網IP,也可以配置成功嗎?如果可以的話,這個原理是什么?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/123004.html
標籤:網絡協議與配置
