企業級負載均衡LVS的實現

對於大型企業,後臺的服務器成千上萬臺,如何合理的未來自客戶端訪問的壓力平均適宜的分配給各個後臺服務器是相當重要的問題,將壓力均發給後臺服務器,能夠有效的控制流量,有助於加快客戶的訪問速度,提升用戶體驗。mysql

負載均衡的實現分類:linux

一、根據硬軟件分類劃分nginx

    硬件:F5Big-IP  Citrix Netscaler  A10 A10web

    軟件:LVSnginx  haproxy  ats perlbal  pound算法

二、根據工做的協議層次劃分sql

    傳輸層:LVS  nginx haproxy服務器

    應用層:http:nginx, httpd, haproxy網絡

            fastcgi :nginx, httpd負載均衡

            mysql: mysql-proxycurl

這裏小編只針對LVS進行講述

1、LVS介紹

    1LVS工做原理:VS根據請求報文的目標IP和目標協議及端口將其調度轉發到某RS,根據調度算法來挑選RS

    2、專業術語:

      VSVirtualServer 調度器

      RSRealserver 真正提供服務的調度器

      CIP:客戶端IP

      VIPVS的外網IP

      DIPVS的內網IP

      RIPRSIP地址

    3、客戶端經過VS的訪問流程:

             CIP <------> VIP ==DIP <------> RIP    

    4、實現LVS的管理工具

        Ipvsadm/ipvs

        Ipvsadm: 用戶空間的命令工具,規則管理器,用於管理集羣服務及RealServerr

        Ipvs: 工做於內核空間netfilterINPUT鉤子上的構架

    5LVS集羣的類型

        Lvs-nat: 修改請求報文的目標IP,多目標IPDNAT

        Lvs-dr: 操縱封裝新的mac地址

        Lvs-tun: 在原請求IP報文以外新加一個IP首部

        Lvs-fullnat;修改請求報文的源和目標IP

    6、這裏小編針對比較經常使用兩個模型進行分析和實驗,給你們進行演示:主要演示lvs-nat模型的實現,後續的模型實現敬請期待。

2、lvs-nat模型

      1、實驗條件要求:

     1RIPDIP必須在同一個IP網絡,且應該使用私網地址; RS的網關要指向DIP      2)請求報文和響應報文都必須經由Director轉發,Director易於成爲系統瓶頸      3)支持端口映射,可修改請求報文的目標PORT    

     4VS必須是Linux系統,RS能夠是任意OS系統

      2、網絡結構拓撲圖

b83a808b8cb7f369b80fdcf3100b3f5f.png

三、地址分配

    CIP172.17.250.60

    VIP172.17.253.20

    DIP192.168.11.17

    RS1_ip192.168.11.11

    RS2_ip192.168.11.12

四、 路由設置

客戶端:

42b14c72217d652342449f62edd0a67c.png

        VS端:

85f1036bd3a130f09b3272e10be8d01f.png

          RS1端:

46c548fb1e2d6124b839366fcc8f1e38.png

          RS2端:

c777ff0414846ac9d2f07e8c02a6a766.png

整體路由配置思路:

  讓客戶端的路由指向VSVIP,由於真實的互聯網環境中客戶端是經過路由叨叨VS的,可是實驗中爲了節省機器,因此咱們簡單的將客戶端的默認路由指向VSVIP,須要注意的是CIPVIP都是屬於公網地址,實驗環境中須要將這兩個IP地址分配爲同一網段的。

  VS中的路由必定要有指向RS的出口,因此有兩個網段,一個對應外網,一個對應內網。

  RS中的路由都要指向VSDIP,這樣在負載分配的時候數據包能夠找到返回的路徑。

        五、  VS端的配置

    (1)開啓路由轉發功能

        方法1、直接改內存參數

echo1 > /proc/sys/net/ipv4/ip_forward

Vim/etc/sysctl.conf

        方法2、修改配置文件

            添加:net.ipv4.ip_forward = 1

     (2)關閉防火牆和selinux

     (3)安裝ipvsadm

yum install ipvsadm

f51a4e5136f0ae547b2122b1704b6f20.png

    (4)配置ipvsadm進行修改ipvs參數


7cc89615159f81255c1b3cbd6d901e8e.png

     六、  RS須要配置web服務

    這裏小編就不在進行配置了,咱們的主要目的是爲了實現負載均衡。因此小編事先分配好了web服務。

3ac8fae790b30c2939e478eff63bddef.png

a4f15c30fa9f3feef8d888eb3d5d2a80.png

             七、 在客戶端進行測試:

        使用curl工具進行測試:

49426c836f57f47cf01fb15fb21c0018.png

    八、測試成功!

3、實驗過程錯誤總結

    一、須要先對RS服務器進行測試,看web服務是否能正常使用,確保web服務沒有問題。

    二、在VS上須要開啓路由轉發功能,不然VS不能未來自客戶端的請求轉發給RS服務器。

    三、在配置的過程當中必定要保證路由是通暢的,確保客戶端可以ping通RS,這樣才能讓數據包正確的傳輸。

    四、若是測試的時候顯示的並非分配到了兩臺RS上,多是VS的分配出了問題,若是客戶機可以ping通RS,則不會出現該問題。

    五、若是測試中,客戶機可以ping通RS,可是不能訪問頁面,去查看VS上ipvsadm服務是否開啓。

    六、若是ipvsadm服務不能正常開啓,能夠執行ipvsadm-seve > /etc/sysconfig/ipvsadm,執行完後再進行開啓ipvsadm服務。

相關文章
相關標籤/搜索