1. 程式人生 > >Nginx+keepalived主從雙機熱備自動切換架構

Nginx+keepalived主從雙機熱備自動切換架構

1:安裝 keepalived

安裝 keepalived 非常的簡單和容易,這跟安裝其他 GNU 原始碼軟體步驟是以模一樣的。下面 給出其安裝過程

下載最新穩定版  wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz

解包    tar zxvf keepalived-1.1.17.tar.gz

切換目錄  cd keepalived-1.1.17

配置  ./configure –prefix=/usr/local/keepalive

編譯和安裝  make ; make install  

Keepalived 安裝完成後,會在安裝目錄/usr/local/keepalived 生成  bin,etc,man,sbin 這 4 個目錄。 其中 etc 為配置檔案所在的目錄.

值得注意的是,keepalived 的啟動過程並不會對配置檔案進行語法檢查,就算沒有配置檔案,

keepalived的守護程序照樣能夠被執行起來.在預設狀態下– 即不指定配置檔案的位置,

keepalived先查詢檔案  /etc/keepalived/keepalived.conf,如果為了省事,

可以手動建立這個檔案,然後在這個檔案裡書寫規則,來達到控制keepalived 執行的目的。  

2:配置 keepalived.conf

一個功能比較完整的keepalived 的配置檔案,其配置檔案keepalived.conf可以包含三個文字

塊:全域性定義塊、VRRP 例項定義塊及虛擬伺服器定義塊.全域性定義塊和虛擬伺服器定義塊

是必須的,如果在只有一個負載均衡器的場合,就不須VRRP例項定義塊.  

接下來,我們以一個配置檔案模版為例,有選擇的說明其中一些重要項的功能或作用.

#全域性定義塊

global_defs {

   notification_email {

     [email protected]

   }

   notification_email_from [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   #以上是email通知,作用:有故障,發郵件報警。這是可選專案,建議不用

   router_id LVS_DEVEL

   #Lvs負載均衡器標識(lvs_id),在一個網路內,它應該是唯一的

}

#VRRP定義塊

vrrp_sync_group VG_1 {

    group {

       VI_1

    }

}

vrrp_instance VI_1 {

    state MASTER    #例項狀態state.只有 MASTER 和 BACKUP 兩種狀態,並且需要大寫這些單詞

    interface eth0    #通訊介面 interface 。對外提供服務的網路介面,如 eth0,eth1

    virtual_router_id 86    #虛擬路由標識,這個標識是一個數字,並且同一個vrrp例項使用唯一的標識

    priority 188            #優先順序priority.這是一個數字,數值愈大,優先順序越高

    advert_int 1            #同步通知間隔,單位為秒

    authentication {

        auth_type PASS        #驗證型別

        auth_pass 1234        #驗證密碼

    }

    virtual_ipaddress {

        192.168.1.123 dev eth0    #虛擬ip地址

    }

}

#虛擬伺服器定義塊,是keepalived最重要的專案了,是keepalived.conf必不可少的部分

virtual_server 192.168.1.123 80 {

    delay_loop 6    #健康檢查時間間隔,單位是秒

    lb_kind DR        #負載均衡轉發規則,一般包括 DR,NAT,TUN3種,在我的方案中,都使用DR的方式

    persistence_timeout 50    #會話保持時間,單位是秒

    protocol TCP            #轉發協議,一般有tcp和udp兩種

    #真實伺服器

    real_server 192.168.1.100 80 {

        weight 1    #權重weight.權重值是一個數字,數值越大,權重越高

        notify_down “/root/service_down.sh”    #檢測到真實服務down後執行的指令碼

        #下面檢查任意一種檢查方式

        #http或ssl檢查

        HTTP_GET|SSL_GET {

            url {

              path /

              digest ff20ad2481f97b1754ef3e12ecd3a9cc

            }

            connect_port    444

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

        #Tcp檢查

        TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

        #指令碼檢查

        MISC_CHECK {

              misc_path /usr/local/bin/script.sh!    #外部程式檢查

              misc_timeout    10                    #指令碼執行超時時間                        

        }

    }

}

3:nginx+keepalived主從自動切換示例

有兩臺機器:

192.168.1.6        主

192.168.1.7        從

虛ip    192.168.1.8     最好保區域網內無此IP

前提是兩臺主機已經安裝好了nginx和keepalived.假設nginx的虛擬主機是test.xtgxiso.cn

主(192.168.1.6)keepalived配置檔案

vrrp_instance VI_1 {

    state MASTER    

    interface eth0    

    virtual_router_id 86    

    priority 188            

    advert_int 1            

    authentication {

        auth_type PASS        

        auth_pass 1234        

    }

    virtual_ipaddress {

        192.168.1.8 dev eth0

    }

}

virtual_server 192.168.1.8 80 {

    delay_loop 6    

    lb_kind DR        

    persistence_timeout 50    

    protocol TCP            

    real_server 192.168.1.6     80 {

        weight 1    

        notify_down “/sbin/service keepalived stop”

        HTTP_GET{

            url {

              path “/index.php”

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

為了檢查的正確性,最好在hosts將域名指向本機(192.168.1.6)

從(192.168.1.7)keepalived配置檔案

vrrp_instance VI_1 {

    state BACKUP    

    interface eth0    

    virtual_router_id 86    

    priority 100            

    advert_int 1            

    authentication {

        auth_type PASS        

        auth_pass 1234        

    }

    virtual_ipaddress {

        192.168.1.8 dev eth0

    }

}

virtual_server 192.168.1.8 80 {

    delay_loop 6    

    lb_kind DR        

    persistence_timeout 50    

    protocol TCP            

    real_server 192.168.1.7     80 {

        weight 1    

        notify_down “/sbin/service keepalived stop”

        HTTP_GET{

            url {

              path “/index.php”

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

同樣為了檢查的正確性,最好在hosts將域名指向本機(192.168.1.7)

4:測試

分別在2臺nginx上啟動nginx和keepalived服務,然後分別用ip a 檢視ip

也可以通過tail -f /var/log/message 檢視日誌資訊.

通過殺掉主從的nginx看到切換情況

總結:

有的時候會出現主從不正常或其他異常情況,一般是keepalived不能正常通訊造成的 keepalived不能正常通訊,除了配置錯誤之外,通常是由於防火牆的原因,很多資料都沒有提及這點

請檢查防火牆規則符合下面的條件:

1:keepalived 預設需要使用D類多播地址224.0.0.18進行心跳通訊

2:keepalived 使用vrp協議進行通訊(埠號為112)

檢測兩個keepalived主機之間是否能通訊的辦法有 停掉一個keepalived,看另外一個keepalived的日誌/var/log/messages 裡是否有新的日誌

相關推薦

Nginx+keepalived主從自動切換架構

1:安裝 keepalived 安裝 keepalived 非常的簡單和容易,這跟安裝其他 GNU 原始碼軟體步驟是以模一樣的。下面 給出其安裝過程 下載最新穩定版  wget http://www.keepalived.org/software/keepaliv

解決Nginx + Keepalived主從+自動切換,實現負載均衡及高可用

解決Nginx + Keepalived主從雙機熱備+自動切換,實現負載均衡及高可用 IP 伺服器 服務 192.168.1.10 lb-node1 Nginx、kee

keepalived安裝與nginx主從配置

nginx檢測指令碼 #!/bin/bash run=`ps -C nginx --no-header | wc -l` if [ $run -eq 0 ] then /usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin

Nginx+keepalived,實現負載均衡(主主模式)

nginx keepalive Keepalived: 簡介:Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepali

Linux學習總結(五十四)keepalived+lvs 負載均衡架構

DR LVS keepalived+lvs 一 LVS IP tunnel 模式介紹 IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術,這可以使得目標為一個IP地址的數據報文能被封裝和轉發到另一個IP地址。IP隧道技術亦稱為IP封裝技術(IP encapsulatio

keepalived實現

lin fire per 安裝 arp index 正常 綁定 type   keepalived的作用是檢測後端TCP服務的狀態,如果有一臺提供TCP服務的後端節點死機,或者工作出現故障,keepalived會及時檢測到,並將有故障的節點從系統中剔除,當提供TCP服務的節

使用keepalived實現

figure 設置 dha boa message mtu hat 並不是 pid 通常說的雙機熱備是指兩臺機器都在運行,但並不是兩臺機器都同時在提供服務。當提供服務的一臺出現故障的時候,另外一臺會馬上自動接管並且提供服務,而且切換的時間非常短。下面來以keepalived

Haproxy+Keepalived)搭建高可用web架構

ise mark 高可用web keepalive email protocol rip 火墻 詳情 1、目的搭建web高可用架構,用haproxy作為前段負載均衡分攤後端web服務器壓力,Keepalived保證haproxy的存活(雙機熱備:一臺haproxy掛了,自動

keepalived)深度解析

以下內容為親自研究得出的結果: 雙機熱備切換時間: 主機interval*主機fail+檢測時間(檢測指令碼執行時間)與備機interval*備機rise+檢測時間(檢測指令碼執行時間)中較大的那個

LVS+KeepAlived搭建負載均衡

從下載內容包中找到ipvsadm-1.24.tar.gz,執行如下命令(執行命令出錯的說明編譯環境存在問題,請更新下載GCC) #tar -zxvf keepalived-1.1.15.tar.gz #cd keepalived-1.1.15 #./configure --prefix=/usr/local

Oracle之部署+切換故障問題解決

str 但是 雙機切換 流程 star 運行 需要 har 問題處理 最近實施的一個項目中使用了某國產雙機熱備產品,但是在數據庫做雙機熱備時出現了一些問題,沒辦法。不得不研究一番了!經過兩天的研究終於問題得以解決。將問題處理步驟記錄下來以備後用,也希望能幫助到需要的人。

Nginx + keepalived 主從模式)

綁定 html 負載均衡 基於 模式 主備 class 接管 主主 雙機高可用一般是通過虛擬IP(飄移IP)方法來實現的,基於Linux/Unix的IP別名技術。 雙機高可用方法目前分為兩種: 1)雙機主從模式:即前端使用兩臺服務器,一臺主服務器和一臺熱備服務器,正常情況

Nginx+keepalived主從模式)

負載均衡技術對於一個網站尤其是大型網站的web伺服器叢集來說是至關重要的!做好負載均衡架構,可以實現故障轉移和高可用環境,避免單點故障,保證網站健康持續執行。 關於負載均衡介紹,可以參考:linux負載均衡總結性說明(四層負載/七層負載) 由於業務擴充套件,網站的訪

Nginx+keepalived(主從模式)

簡單介紹: Keepalived是Linux下面實現VRRP備份路由的高可靠性執行軟體,能夠真正做到 主伺服器和備份伺服器故障時IP瞬間無縫交接; Keepalived的目的是模擬路由器的高可用; Heartbeat或Corosync的目的是實現Service的高可用. 那heartbaet與cor

Nginx+keepalived 高可用主從模式/主模式)

基礎介紹 負載均衡技術對於一個網站尤其是大型網站的web伺服器叢集來說是至關重要的!做好負載均衡架構,可以實現故障轉移和高可用環境,避免單點故障,保證網站健康持續執行。 由於業務擴充套件,網站的訪問量不斷加大,負載越來越高。現需要在web前端放置ngin

keepalived+nginx+負載均衡

ethernet auth 超時任務 collision boot .rpm ocl bnl host keepalived+nginx雙機熱備+負載均衡最近因業務擴展,需要將當前的apache 轉為nginx(web), 再在web前端放置nginx(負載均衡)。同時結合

Nginx+keepalived(主主模式)

實現 nginx keepalived Nginx+keepalived實現高可用負載均衡的主主模式由於網站的訪問需求不斷加大,負載越來越高。現需要在web前端放置nginx負載均衡,同時結合keepalived對前端nginx實現HA高可用。1、nginx進程基於Master+Slave(wor

Nginx+keepalived

nginx ha keepalive 一、nginx簡介Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好,中國大陸使用

群集架構篇——nginx反向代理+keepalived+tomcat伺服器池+後端資料庫

群集架構篇——nginx反向代理+keepalived雙機熱備+tomcat伺服器池+後端資料庫 實驗所需   兩臺nginx都佈置了keepalived   漂移地址 192.168.30.100  Nginx    

群集架構篇 ——nginx反向代理+keepalived+tomcat伺服器池+後端資料庫

首先準備好兩臺nginx,兩臺tomcat,一臺mysql資料庫,如下NginxIP地址:192.168.20.39(lvs01)192.168.20.40(lvs02)漂移地址:192.168.20.66TomcatIP地址:192.168.20.41(TM01)192.168.20.42(TM02)Mys