1. 程式人生 > >keepalived+lvs+負載均衡的windows實現

keepalived+lvs+負載均衡的windows實現

       關於這方面的文章網上一大堆,但是大部分都是寫keepalived的配置問題,並沒有說明白原理方面的東西,如果配置上稍微有點問題,都不知道問題出在什麼地方,下面我寫下keepalived的常用配置以及lvs的原理、負責均衡的工作原理。

1.keepalived和lvs是幹什麼的    

        LVS 是 Linux  Virtual Server ,Linux 虛擬伺服器;是一個虛擬的伺服器叢集【多臺機器 LB IP】;常用與實現外網對 一臺虛擬主機的訪問時,而虛擬主機負責將請求轉移到真實的主機上面來,這樣就實現了對外公開一個ip節點,內部有多個真實的伺服器負責處理請求。
        keepalived主要用作realserver的健康狀態的檢查,和負責均衡主備機之間的failover的實現。主要用於上面lvs的輔助,上的多節點真實伺服器處理同一個虛擬ip(lvs伺服器)的請求時,如果真實伺服器宕機,但是lvs並不能自動響應,不在將請求分配到這臺真實的伺服器節點上面來,而keepalived就實現了這樣的功能,當真是的伺服器節點宕機,keepalived的健康檢查機制檢查到了宕機的伺服器不能再提供服務了,keepalived就將這個節點從虛擬ip(lvs伺服器)上面剔除,保證對外提供的服務能夠穩健的執行。

2.lvs的幾種常見的模式(讀懂這一部分需要有TCP封包的基礎知識)

        DR模式(Direct Routing)【這個模式比較常用】

       (1)基本工作原理
                    1)client傳送請求【package】到VIP(lvs伺服器,下面統一用VIP,不再解釋)
                    2)VIP收到請求之後會根據lvs設定的LB演算法選擇一個比較合理的realserver,把此請求的封包中的dest MAC地址(目的MAC地址)修改為realserver的MAC地址,將這個資料包廣播到VIP所在的整個網段上面,ARP協議會將package傳送到realserver上面(根據MAC地址),然後lvs伺服器會將這個src ip-----> realserver之間的聯絡記錄下來(為什麼需要記錄?因為client只能看見VIP並不能看見後面的realserver這個伺服器,是lvs負責將請求轉發到realserver伺服器上面),此次連結沒有斷開之前,這個client發出的所有請求都將轉發到這個realserver上面。
                    3)realserver收到package之後解析裡面的dest ip(目的ip地址,對你沒看到錯就是解析這個ip,你要注意到這個時候解析到的這個ip地址是VIP的ip地址,因為client發出的請求是給VIP這個伺服器的,而DR這個模式並沒有將目的 ip轉換為realserver的ip,所以這個模式的realserver需要配置一個環回介面卡,下面的答疑環節還要解釋這個問題,以及具體的配置方法都會給出)
                    4)因為realserver已經配置了VIP的環回介面卡,所以當realserver收到這個package之後認為這個package是傳送到本機的,然後realserver受理這個請求,然後將請求的結果傳送出去(這個結果是通過環回介面卡傳送出去的,所以DR這個模式realserver和client是有直接通訊的【不太安全,但是比較快】)
        (2)注意事項:
                1)realserver必須繫結VIP的地址,就是每臺realserver必須要配置環回介面卡(將介面卡的ip地址配置為VIP的地址)
                2)realserver和VIP必須在同一個網段(怎麼判斷是不是在同一個網段,可以去網上百度下子網掩碼和ipv4,也可以看下我下面的部落格)
         NAT模式:
        (1)基本原理:

                    1)client傳送請求【package】到VIP;

                    2)VIP收到請求之後會根據lvs設定的LB演算法選擇一個比較合理的realserver,將收到 package的dest ip地址修改為realserver的ip地址;

                    3)realserver收到這個package之後,判斷這個dest ip是本機ip就處理這個請求,然後將請求的結果傳送到VIP;

                    4)VIP收到請求結果之後將請求結果的dest ip改為client ip,將src ip改為VIP;

           FULL NAT模式:

            (1)基本原理:

                     1)client傳送請求【package】到VIP;

                    2)VIP收到請求之後會根據lvs設定的LB演算法選擇一個比較合理的realserver,將收到 package的dest ip地址修改為realserver的ip地址,將src ip修改為VIP的ip地址;

                   3)realserver收到這個package之後,判斷是傳送給自己的,然後就處理這個請求,將請求的結果傳送到VIP上面;

                    4)VIP收到請求結果之後將請求結果的src ip修改為VIP的ip地址,將dest ip修改為clien的ip地址;

        IP TUNNEL模式:

                (1)基本原理:

                     1)client傳送請求【package】到VIP;

                    2)VIP收到請求之後會根據lvs設定的LB演算法選擇一個比較合理的realserver,VIP會將收到的package重新包裝到一個新的ip包裡面,新的dest ip是realserver的ip地址;

                    3)realserver收到package之後,判斷dest ip是本機,於是處理package,然後發現裡面那層package的dest ip是VIP然後判斷是不是本機(這裡還是需要繫結VIP的ip地址到本機要不然直接就將封包丟棄了)

3.keepalived常用配置和說明

        keepalived的配置全都在keepalived.conf的配置檔案中;
#全域性定義塊
global_defs {
    # 郵件通知配置
    notification_email {
        email1
        email2
    }#這個括號裡面的內容是伺服器故障的通知物件
    notification_email_from email       #指定發件人
    smtp_server host                    #指定smtp伺服器地址
    smtp_connect_timeout num            #制定smtp伺服器連結超時

    lvs_id string
    router_id string    ## 標識本節點的字條串,通常為hostname
}

#VRRP 例項定義塊
vrrp_sync_group string { 
    group {
        string
        string
    }
}

vrrp_instance string {
    state MASTER|BACKUP         #指定該keepalived的初始狀態
    virtual_router_id num        
    interface string            #vrrp例項繫結的介面

    mcast_src_ip @IP             #指定傳送組播資料包的源IP地址。預設是繫結VRRP例項的介面的主IP地址。
    priority num                #指定優先順序,優先順序高的將成為MASTER。
    advert_int num                #指定傳送VRRP通告的間隔。單位是秒。
    nopreempt                    #設定為不搶佔。預設是搶佔的,當高優先順序的機器恢復後,會搶佔低優先順序的機器成為MASTER,而不搶佔,則允許低優先順序的機器繼續成為MASTER,即使高優先順序的機器已經上線。如果要使用這個功能,則初始化狀態必須為BACKUP。
    smtp_alert                   
    authentication {
        auth_type PASS|AH
        auth_pass string
    }

    virtual_ipaddress {  # Block limited to 20 IP addresses @IP
        @IP             #這裡填寫VIP伺服器的對外的IP地址
        @IP
    }
}

#虛擬伺服器定義塊
virtual_server (@IP PORT)|(fwmark num) { 
    delay_loop num                        #健康檢查的時間間隔。
    lb_algo rr|wrr|lc|wlc|sh|dh|lblc      #LVS排程演算法。
    lb_kind NAT|DR|TUN                    #lvs工作模式,具體的原理見上面
    persistence_timeout num               #持久化超時時間,單位是秒。預設是6分鐘。
    protocol TCP|UDP                      #4層協議。
    real_server @IP PORT { 
        weight num                        #給伺服器指定權重。預設是1.
        notify_down /path/script.sh       #當伺服器健康檢查失敗時,執行的指令碼。
        TCP_CHECK { 
            connect_port num 
            connect_timeout num
        }
    }

    real_server @IP PORT {
        weight num
        MISC_CHECK {
            misc_path /path_to_script/script.sh(or misc_path “/path_to_script/script.sh <arg_list>”)
        }
    }

    real_server @IP PORT {
        weight num
        HTTP_GET|SSL_GET {
            url { 
                # You can add multiple url block path alphanum
                digest alphanum
            }
            connect_port num
            connect_timeout num 
            nb_get_retry num 
            delay_before_retry num
        }
    }
}

4.答疑:

        1)為什麼windows的真實主機需要配置IP地址為VIP的環回介面卡?            答:lvs的工作模式需要,lvs中DR,IP TUNNER工作模式,lvs伺服器轉發到realserver的package中的dest ip為VIP的IP地址,所以在windows中需要配置這個ip;而且在windows中需要執行下面的指令碼        
netsh interface ipv4 set interface "realserver網路介面名稱" weakhostreceive=enabled
netsh interface ipv4 set interface "realserver網路介面名稱" weakhostsend=enabled
netsh interface ipv4 set interface "環回網路介面名稱" weakhostreceive=enabled
netsh interface ipv4 set interface "環回網路介面名稱" weakhostsend=enabled
        2)為什麼需要在windows上面執行上面的指令碼            答:因為在上面的lvs工作模式下,realserver收到封包之後,需要確認封包是傳給本機的,這個時候接收封包的介面是realserver網路介面,而收到的封包是傳送給VIP的,windows在預設情況下環回介面和真實介面是不能通訊的,也就是說不輸入上面的命令,realserver是沒有辦法識別封包是傳送給本機的,當執行上面的指令碼之後,realserver的真實介面和環回介面可以正常的通訊了,就可以接收封包了。

    

相關推薦

keepalived+lvs+負載均衡windows實現

       關於這方面的文章網上一大堆,但是大部分都是寫keepalived的配置問題,並沒有說明白原理方面的東西,如果配置上稍微有點問題,都不知道問題出在什麼地方,下面我寫下keepalived的常用配置以及lvs的原理、負責均衡的工作原理。1.keepalived和lv

Linux CentOs集群LVS負載均衡實現

mac host 明顯 獲取 輸出 最好 開始 director 沒有 準備工作 環境:Win10下Centos6.4虛擬機。 負載均衡:兩臺(一主一備) LVS + Keepalived。 HTTP服務器:3臺。 給每臺服務器配置IP 1、VIP(virtual ip)

Linux下部署搭建Keepalived+LVS負載均衡實戰

1.1 LVS簡介     LVS(Linux Virtual Server),也就是Linux虛擬伺服器, 是一個自由軟體專案。使用LVS技術要達到的目標是:通過LVS提供的負載均衡技術和Linux作業系統實現一個高效能、高可用的伺服器群集,它具有良好可靠性、可擴充套件性和可

Keepalived+LVS負載均衡雙機備熱

實驗環境 兩臺Keepalived伺服器,三臺提供http服務的節點伺服器 主排程器(192.168.3.4) 從排程器(192.168.3.5) HTTP-1(192.168.3.1) HTTP-2(192.168.3.2) HTTP-3(192.168.3.3) 主

CentOS7 Keepalived+LVS 負載均衡 後臺節點健康檢查

CentOS7 安裝Keepalived以及基本配置    這篇文章介紹瞭如何安裝keepalived以及配置虛擬IP實現雙機故障切換。 本文主要介紹 Keepalived+LVS 負載均衡配置與後臺節點健康檢查。 1.安裝LVS 1:下載RPM軟體包 http://w

Keepalived + LVS + LAMP 高可用負載均衡叢集實現

一、Keepalived 簡介           Keepalived 是一個用 C 語言編寫的路由軟體。它最初是專門為 LVS 負載均衡軟體設計的,用來管理並監控 LVS 集群系統中各個服務節點的狀態,後來又加

基於keepalived+nginx+lvs負載均衡實現(DR模式)

LVS結合keepalive LVS可以實現負載均衡,但是不能夠進行健康檢查,比如一個rs出現故障,LVS 仍然會把請求轉發給故障的rs伺服器,這樣就會導致請求的無效性。keepalive 軟體可以進行健康檢查,而且能同時實現 LVS 的高可用性,解決 LVS 單點故障的問

lvs負載均衡的四種模式原理,LVS之DR模型,LVS+keeaplived實現負載均衡keepalived實現高可用

一,LVS的簡介: Linux virtual system,是由目前阿里著名工程師章文嵩開發的一寬開源的軟體。LVS工作在一臺server上提供Directory(負載均衡器)的功能,它本身並不提供任何服務,只是把特定的請求轉發給對應的realserver(

keepalived+lvs+mysql cluster架構實現負載均衡

一、環境 用途 ip os memory 排程器 172.16.48.204 CentOS 5.5 64bit 32G sql節點1 172.16.48.206 CentOS 5.5 64bit 32G sql節點2 172.16.48.207 CentOS 5.5 64bit 32G sql節點3 1

lvs負載均衡realserver windows配置

interface windows linux 本地連接 網絡 linux中在lo上綁定vip比較簡單,windows也不難。首先打開運行——>輸入hdwwiz會彈出添加設備:在lo中綁定好vip地址以後,還需要做一項工作,至關重要!!!編寫腳本:test.bat@echo off

LVS(負載均衡)+keepalived(HA)+Nginx(反向代理)+Web(動靜態網站服務器)

網站服務器 web服務器 虛擬機 帶寬 規模 集群 考慮到LVS和Nginx的缺點(由於LVS采用的是同步請求轉發策略而Nginx采用的是異步轉發策略,結合兩者的缺點:作為負載均衡服務器的Nginx和LVS處理相同的請求時,所有的請求和響應流量都會經過Nginx服務器,但是使用LVS時

手把手教程: CentOS 6.5 LVS + KeepAlived 搭建 負載均衡 高可用 集群

ipvs 管理 bar 10.10 方正 希望 滿足 open chm 為了實現服務的高可用和可擴展,在網上找了幾天的資料,現在終於配置完畢,現將心得公布處理,希望對和我一樣剛入門的菜鳥能有一些幫助。 一、理論知識(原理) 我們不僅要知其然,而且要知其所以然,所以先

實現基於LVS負載均衡集群的電商網站架構

nat lvs dr 實現基於LVS負載均衡集群的電商網站架構具體如何實現電商網站請參看博客:http://13150617.blog.51cto.com/13140617/1978954實驗一、實現基於NAT模式的LVS負載均衡:準備三臺主機:一臺Director(橋接網卡、僅主機網卡):

實現LVS負載均衡NAT模式

linux 負載均衡 lvs nat模式 1、LVS-NAT實現原理簡述 註釋: ipvs:工作於內核上的netfilterINPUT鉤子之上的程序,可根據用戶定義的集群實現請求轉發; VS:Virtual Server 虛擬服務 Director, Bal

企業實戰-實現基於LVS負載均衡集群的電商網站架構

企業實戰 lvs lnmp 實現LVS-DR工作模式:環境準備:一臺centos系統做DR、兩臺實現過基於LNMP的電子商務網站機器名稱IP配置服務角色備註lvs-serverVIP:172.17.252.110DIP:172.17.250.223負載均衡器開啟路由功能(VIP橋接)rs01RIP

lvs+keepalived+nginx負載均衡搭建測試

lvs keepalived nginx centos7 ipvsadm 1. 簡介1.1 LVS簡介 LVS(Linux Virtual Server),也就是Linux虛擬服務器, 是一個由章文嵩博士發起的自由軟件項目。使用LVS技術要達到的目標是:通過LVS提供的負載均衡技

LVS DR模式負載均衡搭建、keepalived高可用+LVS負載均衡配合

lvs lvs dr模式 lvs負載均衡 keepalived+LVS LVS DR模式搭建 準備:dir(調度器):192.168.188.2rs1:192.168.188.3rs2:192.168.188.6vip:192.168.188.200 安裝ipvsadm yum insta

Keepalived管理LVS負載均衡實戰

Keepalived LVS Linux 負載均衡 眾所周知,早期LVS軟件,需要通過命令行或腳本實現管理,而且沒有針對LVS節點的健康檢查功能。為了解決LVS的這些使用不便問題,Keepalived便誕生。Keepalived服務的三大重要功能 管理VLS負載均衡 實現對LVS集群node

centos7上實現LVS負載均衡群集之NAT轉換模式

基於ip地址 ted 應用 立即生效 iptable 顯示 反饋 輪詢 模式 LVS虛擬服務器 Linux Virtual Server(LVS)是針對 Linux內核開發的一個負載均衡項目,由我國的章文嵩博土在1998年5月創建,官方站點位於http://www.linu

LVS負載均衡群集的實現

 1、群集的型別 ①負載均衡群集(Load Balancer):提高應用系統的響應能力,減少延遲,獲得高併發、高負載;負載的分配依賴於主節點的分流演算法,將客戶機的請求分擔給多個節點伺服器 ②高可用群集(High Available):提高應用系統的可靠性,減少中斷時間,達到高可用性;