欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn)

          1.1 LVS簡介
              LVS(Linux Virtual Server),也就是Linux虛擬服務(wù)器, 是一個自由軟件項目。使用LVS技術(shù)要達(dá)到的目標(biāo)是:通過LVS提供的負(fù)載均衡技術(shù)和Linux操作系統(tǒng)實現(xiàn)一個高性能、高可用的服務(wù)器群集,它具有良好可靠性、可擴(kuò)展性和可操作性。從而以低廉的成本實現(xiàn)最優(yōu)的服務(wù)性能。
              LVS主要用來做四層負(fù)載均衡。
           
          1.2 Keepalived簡介
              Keepalived是分布式部署系統(tǒng)解決系統(tǒng)高可用的軟件,結(jié)合LVS(Linux Virtual Server)使用,其功能類似于heartbeat,解決單機(jī)宕機(jī)的問題。
              Keepalived是以VRRP協(xié)議為實現(xiàn)基礎(chǔ)的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議。通過VRRP協(xié)議結(jié)合LVS,對組群服務(wù)器監(jiān)控情況,若master出現(xiàn)宕機(jī)情況,則將VIP漂移到backup機(jī)上。實現(xiàn)了分布式系統(tǒng)高可用??梢岳斫鉃椋簁eepalived是LVS的管理軟件,根據(jù)監(jiān)控情況,將宕機(jī)服務(wù)器從ipvsadm移除掉。
                Keepalived的誕生最初是為LVS ipvs(director)提供高可用性的,后來發(fā)展一個多功能、通用的輕量級高可用組件,可以為ipvs、nginx、haproxy等諸多服務(wù)提供高可用功能,主要應(yīng)用在負(fù)載均衡調(diào)度器上,同時也可以檢查后端各realserver的健康狀態(tài)。
           
          1.3 負(fù)載均衡
              四層負(fù)載均衡工作在OSI模型的傳輸層,由于在傳輸層,只有TCP/UDP協(xié)議,這兩種協(xié)議中除了包含源IP、目標(biāo)IP以外,還包含源端口號及目的端口號。四層負(fù)載均衡服務(wù)器在接受到客戶端請求后,以后通過修改數(shù)據(jù)包的地址信息(IP+端口號)將流量轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器。
                七層負(fù)載均衡工作在OSI模型的應(yīng)用層,應(yīng)用層協(xié)議較多,常用http、radius、dns等。七層負(fù)載就可以基于這些協(xié)議來負(fù)載。這些應(yīng)用層協(xié)議中會包含很多有意義的內(nèi)容。比如同一個Web服務(wù)器的負(fù)載均衡,除了根據(jù)IP加端口進(jìn)行負(fù)載外,還可根據(jù)七層的URL、瀏覽器類別、語言來決定是否要進(jìn)行負(fù)載均衡。
                四層通過虛擬 IP + 端口接收請求,然后再分配到真實的服務(wù)器,七層通過虛擬的 URL 或主機(jī)名接收請求,然后再分配到真實的服務(wù)器。所謂的四到七層負(fù)載均衡,就是在對后臺的服務(wù)器進(jìn)行負(fù)載均衡時,依據(jù)四層的信息或七層的信息來決定怎么樣轉(zhuǎn)發(fā)流量。
           
          2. 搭建過程及測試
           
          2.1 主機(jī)配置
          主機(jī)名
          ip
          操作系統(tǒng)
          軟件
          端口
          lvs01
          10.1.28.253
          CentOS 7.0
          lvs  keepalived
          8080
          lvs02
          10.1.28.70
          CentOS 7.0
          lvs keepalived
          8080
          Nginxsever01
          10.1.28.30
          CentOS 7.0
          nginx
          8080
           Nginxsever01
           10.1.28.40  CentOS 7.0  nginx  8080
           
          2.3 搭建準(zhǔn)備
          2.3.1 關(guān)閉所有機(jī)器防火墻
          [root@lvs01 ~]#systemctl stop firewalld.service
           
          2.3.2 關(guān)閉防selinux
          關(guān)閉所有服務(wù)器selinux,修改/etc/selinux/config,將SELINUX由enforcing設(shè)置為disabled,重啟服務(wù)器。
           
          2.4 ipvs安裝
          LVS無需安裝,安裝的是管理工具,第一種叫ipvsadm,第二種叫keepalive。ipvsadm是通過命令行管理,而keepalive讀取配置文件管理。
          分別在lvs01和lvs02執(zhí)行如下操作:
          [root@lvs01 ~]# yum -y install ipvsadm
           
          2.4.1 把模塊加載進(jìn)系統(tǒng)
          [root@lvs01 ~]#ipvsadm
           
          2.5 keepalived安裝
          分別在lvs01和lvs02執(zhí)行如下操作:
          [root@lvs01 ~]# yum -y install keepalived
           
          2.6 keepalived配置
          ! Configuration File for keepalived
           
          global_defs {
          router_id MASTER    ## keepalived 服務(wù)器標(biāo)識符,可以隨意設(shè)定( 貌似也是全局唯一 )
          vrrp_instance VI_1 {     ## 定義一個名為 VI_1 的 VRRP 實例
          state MASTER   ## Keepalived 服務(wù)器角色,MASTER 為主、BACKUP 為備
          interface eth0    ## 指定 HA 監(jiān)測網(wǎng)絡(luò)接口
          virtual_router_id 51    ## 虛擬路由標(biāo)識,同一個 VRRP 實例使用唯一的標(biāo)識,主備必須一樣
          priority 100    ## 節(jié)點優(yōu)先級,同一 VRRP 實例中 MASTER 的優(yōu)先級必須大于 BACKUP
          advert_int 1    ## MASTER / BACKUP 之間同步檢查間隔時間,單位 秒
          authentication {   ## 節(jié)點之間通信驗證類型、密碼 ,同一 VRRP 實例中,MASTER / BACKUP 必須使用相同的密碼才可以通信
          auth_type PASS
          auth_pass 123456
          }
          virtual_ipaddress { ## 虛擬 IP 地址,又稱漂移 IP ??梢酝ㄟ^ ip add 在 MASTER 上查看是否綁定
          10.1.28.123
          }
          }
          virtual_server 10.1.28.123 8080 {   ## 定義虛擬服務(wù)器
          delay_loop 6   ## 定義健康檢查時間間隔,單位 秒
          lb_algo rr   ## 負(fù)載均衡調(diào)度算法,支持 rr 、wrr 、lc 、wlc 、lblc 、sh 、dh 等
          lb_kind DR   ## LVS 負(fù)載均衡機(jī)制,支持 NAT 、TUN 、DR
          persistence_timeout 120   ## 會話保持時間,單位 秒。提供動態(tài)頁面 session 保持功能,同一 IP 該值時間內(nèi)被持續(xù)分配到同一臺節(jié)點服務(wù)器上
          protocol TCP   ## 轉(zhuǎn)發(fā)協(xié)議類型,支持 TCP 、UDP
          real_server 10.1.28.30 8080 { ## 定義節(jié)點服務(wù)器
          weight 1   ## 節(jié)點權(quán)重值,數(shù)字越大權(quán)重越高,分配到的連接越多。主要用于后端節(jié)點服務(wù)器性能不統(tǒng)一
          notify_down /etc/keepalived/real_down.sh   ## 該節(jié)點服務(wù)器處于 DOWN 狀態(tài)后執(zhí)行的腳本
          TCP_CHECK {   ## 健康檢測方式,支持 HTTP_GET 、SSL_GET 、TCP_CHECK 、SMTP_CHECK 、MISC_CHECK
          connect_port 8080   ## 檢測端口,不指定時默認(rèn)為 real_server 指定的端口
          connect_timeout 3  ## 無響應(yīng)超時時間,單位 秒
          nb_get_retry 3  ## 重試次數(shù)
          delay_before_retry 3  ## 重試間隔,單位 秒
          }
          }
          real_server 10.1.28.40 8080  { ## 第二臺節(jié)點服務(wù)器
          weight 1
          notify_down /etc/keepalived/real_down.sh
          TCP_CHECK {
          connect_port 8080
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
          }
          }
          }

           
          lvs02配置
          ! Configuration File for keepalived
           
          global_defs {
             router_id lvs02
          }
          vrrp_instance VI_1 {
              state BACKUP
              interface ens160
              virtual_router_id 51
              priority 90
             advert_int 1
              authentication {
                  auth_type PASS
                  auth_pass 1111
              }
              virtual_ipaddress {
                 10.1.28.123
              }
          }
          virtual_server 10.1.28.123 8080 {
              delay_loop 6
              lb_algo rr
              lb_kind DR
             # persistence_timeout 50
              protocol TCP
              real_server 10.1.28.30 8080 {
                  weight 1
                  TCP_CHECK{
                  connetct_timeout 10
                  retry 3
                  delay_before_retry 3
                  connetct_port 8080
           
          }
          }
               real_server 10.1.28.40 8080 {
                  weight 2
                  TCP_CHECK{
                  connetct_timeout 10
                  retry 3
                  delay_before_retry 3
                  connetct_port 8080
           
          }
          }
          }
           

          2.7 參數(shù)說明
          IPVS三種IP負(fù)載均衡技術(shù):
          VS/NAT: 即(Virtual Server via Network Address Translation)
          也就是網(wǎng)絡(luò)地址翻譯技術(shù)實現(xiàn)虛擬服務(wù)器,當(dāng)用戶請求到達(dá)調(diào)度器時,調(diào)度器將請求報文的目標(biāo)地址(即虛擬IP地址)改寫成選定的Real Server地址,同時報文的目標(biāo)端口也改成選定的Real Server的相應(yīng)端口,最后將報文請求發(fā)送到選定的Real Server。在服務(wù)器端得到數(shù)據(jù)后,Real Server返回數(shù)據(jù)給用戶時,需要再次經(jīng)過負(fù)載調(diào)度器將報文的源地址和源端口改成虛擬IP地址和相應(yīng)端口,然后把數(shù)據(jù)發(fā)送給用戶,完成整個負(fù)載調(diào)度過程??梢钥闯觯贜AT方式下,用戶請求和響應(yīng)報文都必須經(jīng)過Director Server地址重寫,當(dāng)用戶請求越來越多時,調(diào)度器的處理能力將稱為瓶頸。
           
          VS/TUN:即(Virtual Server via IP Tunneling)
          也就是IP隧道技術(shù)實現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與VS/NAT方式一樣,只是它的報文轉(zhuǎn)發(fā)方法不同,VS/TUN方式中,調(diào)度器采用IP隧道技術(shù)將用戶請求轉(zhuǎn)發(fā)到某個Real Server,而這個Real Server將直接響應(yīng)用戶的請求,不再經(jīng)過前端調(diào)度器,此外,對Real Server的地域位置沒有要求,可以和Director Server位于同一個網(wǎng)段,也可以是獨立的一個網(wǎng)絡(luò)。因此,在TUN方式中,調(diào)度器將只處理用戶的報文請求,集群系統(tǒng)的吞吐量大大提高。
           
          VS/DR: 即(Virtual Server via Direct Routing)
          也就是用直接路由技術(shù)實現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與VS/NAT和VS/TUN中的一樣,但它的報文轉(zhuǎn)發(fā)方法又有不同,VS/DR通過改寫請求報文的MAC地址,將請求發(fā)送到Real Server,而Real Server將響應(yīng)直接返回給客戶,免去了VS/TUN中的IP隧道開銷。這種方式是三種負(fù)載調(diào)度機(jī)制中性能最高最好的,但是必須要求Director Server與Real Server都有一塊網(wǎng)卡連在同一物理網(wǎng)段上,且真實服務(wù)器網(wǎng)絡(luò)設(shè)備或設(shè)備別名不作 ARP 響應(yīng)。
           
          IPVS調(diào)度器實現(xiàn)了如下八種負(fù)載調(diào)度算法:
          輪叫(Round Robin)
          調(diào)度器通過”輪叫”調(diào)度算法將外部請求按順序輪流分配到集群中的真實服務(wù)器上,它均等地對待每一臺服務(wù)器,而不管服務(wù)器上實際的連接數(shù)和系統(tǒng)負(fù)載。
           
          加權(quán)輪叫(Weighted Round Robin)
          調(diào)度器通過”加權(quán)輪叫”調(diào)度算法根據(jù)真實服務(wù)器的不同處理能力來調(diào)度訪問請求。這樣可以保證處理能力強(qiáng)的服務(wù)器處理更多的訪問流量。調(diào)度器可以自動問詢真實服務(wù)器的負(fù)載情況,并動態(tài)地調(diào)整其權(quán)值。
           
          最少鏈接(Least Connections)
          調(diào)度器通過”最少連接”調(diào)度算法動態(tài)地將網(wǎng)絡(luò)請求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實服務(wù)器具有相近的系統(tǒng)性能,采用”最小連接”調(diào)度算法可以較好地均衡負(fù)載。
           
          加權(quán)最少鏈接(Weighted Least Connections)
          在集群系統(tǒng)中的服務(wù)器性能差異較大的情況下,調(diào)度器采用”加權(quán)最少鏈接”調(diào)度算法優(yōu)化負(fù)載均衡性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動連接負(fù)載。調(diào)度器可以自動問詢真實服務(wù)器的負(fù)載情況,并動態(tài)地調(diào)整其權(quán)值。
           
          基于局部性的最少鏈接(Locality-Based Least Connections)
          “基于局部性的最少鏈接” 調(diào)度算法是針對目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。該算法根據(jù)請求的目標(biāo)IP地址找出該目標(biāo)IP地址最近使用的服務(wù)器,若該服務(wù)器 是可用的且沒有超載,將請求發(fā)送到該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服務(wù)器處于一半的工作負(fù)載,則用”最少鏈接”的原則選出一個可用的服務(wù) 器,將請求發(fā)送到該服務(wù)器。
           
          帶復(fù)制的基于局部性最少鏈接(Locality-Based Least Connections with Replication)
          “帶復(fù)制的基于局部性最少鏈接”調(diào)度算法也是針對目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。它與LBLC算法的不同之處是它要維護(hù)從一個 目標(biāo)IP地址到一組服務(wù)器的映射,而LBLC算法維護(hù)從一個目標(biāo)IP地址到一臺服務(wù)器的映射。該算法根據(jù)請求的目標(biāo)IP地址找出該目標(biāo)IP地址對應(yīng)的服務(wù) 器組,按”最小連接”原則從服務(wù)器組中選出一臺服務(wù)器,若服務(wù)器沒有超載,將請求發(fā)送到該服務(wù)器,若服務(wù)器超載;則按”最小連接”原則從這個集群中選出一 臺服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,將請求發(fā)送到該服務(wù)器。同時,當(dāng)該服務(wù)器組有一段時間沒有被修改,將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的 程度。
           
          目標(biāo)地址散列(Destination Hashing)
          “目標(biāo)地址散列”調(diào)度算法根據(jù)請求的目標(biāo)IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請求發(fā)送到該服務(wù)器,否則返回空。
           
          源地址散列(Source Hashing)
          “源地址散列”調(diào)度算法根據(jù)請求的源IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請求發(fā)送到該服務(wù)器,否則返回空。
           
          本例中采用DR負(fù)載均衡和wrr負(fù)載調(diào)度算法
           
          3. 負(fù)載均衡及高可用測試
          3.1 啟動Keepalived
          lvs01和lvs02分別執(zhí)行:
          [root@lvs01 ~]# service keepalived start
          執(zhí)行ip a,lvs01上有vip10.1.28.123,lvs02沒有
           
          3.2 頁面訪問
          通過不同瀏覽器訪問http://10.1.28.30:8080
          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn)
          3.3 Master上檢查連接情況
          lvs01上執(zhí)行ipvsadm -ln:
          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn)
          3.4 ipvsadm參數(shù)說明
          ipvsadm:
          -L|-l(–list):顯示內(nèi)核虛擬服務(wù)器表
          -n(–numeric):輸出IP 地址和端口的數(shù)字形式
          輸出參數(shù)說明:
          Forward 轉(zhuǎn)發(fā)方式,當(dāng)前是路由轉(zhuǎn)發(fā)
          Weight 權(quán)重
          ActiveConn 當(dāng)前活躍的連接數(shù)
          InActConn 當(dāng)前不活躍的連接數(shù)
           
          3.5 修改keepalived參數(shù)
          通過ipvsadm命令發(fā)現(xiàn)訪問請求都被分配到92(nginx02)這臺服務(wù)器,沒有實現(xiàn)負(fù)載均衡。這個和keepalived參數(shù)配置persistence_timeout有關(guān),這個參數(shù)的意義是保持客戶端的請求在這個時間段內(nèi)全部發(fā)到同一個真實服務(wù)器。
          分別注釋lvs01和lvs02的persistence_timeout:
          [root@lvs01 keepalived]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
          [root@lvs01 keepalived]# view /etc/keepalived/keepalived.conf #persistence_timeout 50
          重啟兩臺lvs服務(wù)器keepalived服務(wù):
          [root@lvs01 keepalived]# service keepalived restart
          再次測試:
          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn)
          發(fā)現(xiàn)連接均勻的分配到后臺兩臺nginx服務(wù)器。
           
          3.5.5 lvs高可用測試
          恢復(fù)keepalived配置并重啟服務(wù)。
          lvs01宕機(jī)前訪問頁面:
          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn)
          停止lvs01的keepalived服務(wù),模擬lvs01宕機(jī):
          systemctl stop keepalived 
          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn)
          查看lvs02情況:
          發(fā)現(xiàn)vip已飄至lvs02。
          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn) 
          http://10.1.28.123:8080,訪問正常:
          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn)
          恢復(fù)lvs01的keepalived服務(wù):
          Linux下部署搭建Keepalived+LVS負(fù)載均衡實戰(zhàn)
          發(fā)現(xiàn)vip飄回至lvs01,vip頁面訪問正常
           
          總結(jié):
          當(dāng) MASTER 服務(wù)器無法提供服務(wù)時,VIP 會在 MASTER 上自動移除,BACKUP 服務(wù)器會提升為 MASTER 狀態(tài),綁定 VIP 、接管服務(wù)。
          當(dāng) MASTER 修復(fù)加入網(wǎng)絡(luò)后,會自動搶回 VIP ,成為 MASTER 身份。
          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號