企業級負載均衡LVS的實現

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

負載均衡的實現分類:

1、根據硬軟件分類劃分

    硬件:F5Big-IP  Citrix Netscaler  A10 A10

    軟件:LVSnginx  haproxy  ats perlbal  pound

2、根據工作的協議層次劃分

    傳輸層:LVS  nginx haproxy

    應用層:http:nginx, httpd, haproxy

            fastcgi :nginx, httpd

            mysql: mysql-proxy

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

一、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模型的實現,後續的模型實現敬請期待。

二、lvs-nat模型

      1、實驗條件要求:

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

     4VS必須是Linux系統,RS可以是任意OS系統

      2、網絡結構拓撲圖

b83a808b8cb7f369b80fdcf3100b3f5f.png

3、地址分配

    CIP172.17.250.60

    VIP172.17.253.20

    DIP192.168.11.17

    RS1_ip192.168.11.11

    RS2_ip192.168.11.12

4、 路由設置

客戶端:

42b14c72217d652342449f62edd0a67c.png

        VS端:

85f1036bd3a130f09b3272e10be8d01f.png

          RS1端:

46c548fb1e2d6124b839366fcc8f1e38.png

          RS2端:

c777ff0414846ac9d2f07e8c02a6a766.png

總體路由配置思路:

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

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

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

        5、  VS端的配置

    (1)開啓路由轉發功能

        方法一、直接改內存參數

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

Vim/etc/sysctl.conf

        方法二、修改配置文件

            添加:net.ipv4.ip_forward = 1

     (2)關閉防火牆和selinux

     (3)安裝ipvsadm

yum install ipvsadm

f51a4e5136f0ae547b2122b1704b6f20.png

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


7cc89615159f81255c1b3cbd6d901e8e.png

     6、  RS需要配置web服務

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

3ac8fae790b30c2939e478eff63bddef.png

a4f15c30fa9f3feef8d888eb3d5d2a80.png

             7、 在客戶端進行測試:

        使用curl工具進行測試:

49426c836f57f47cf01fb15fb21c0018.png

    8、測試成功!

三、實驗過程錯誤總結

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

    2、在VS上需要開啓路由轉發功能,否則VS不能將來自客戶端的請求轉發給RS服務器。

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

    4、如果測試的時候顯示的並不是分配到了兩臺RS上,可能是VS的分配出了問題,如果客戶機能夠ping通RS,則不會出現該問題。

    5、如果測試中,客戶機能夠ping通RS,但是不能訪問頁面,去查看VS上ipvsadm服務是否開啓。

    6、如果ipvsadm服務不能正常開啓,可以執行ipvsadm-seve > /etc/sysconfig/ipvsadm,執行完後再進行開啓ipvsadm服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章