qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          搭建LVS負(fù)載均衡測試環(huán)境

           實(shí)現(xiàn)負(fù)載均衡有很多種方式
            土豪直接F5,性能最好,價(jià)格最貴
            沒錢也可以使用Apache,Nginx 工作在網(wǎng)絡(luò)的第四層,雖然性能一般,但是很靈活,比如可以將80端口映射到真實(shí)服務(wù)器的8080端口.
            還有一種選擇LVS ,它工作在網(wǎng)絡(luò)的第三層,性能較好,非常穩(wěn)定.
            但是它不能實(shí)現(xiàn)端口的重新映射.因?yàn)樵诰W(wǎng)絡(luò)的第三層,并不清楚端口的信息。
            下面的實(shí)驗(yàn)搭建了一個(gè)LVS負(fù)載均衡測試環(huán)境,采用DR的方式。
            客戶端訪問LVS前置機(jī)
            這個(gè)請求如下
            源MAC(client mac) 目標(biāo)MAC(DR mac) 源IP(client IP) 目標(biāo)IP(DR IP,VIP)
            LVS前置機(jī)會(huì)將報(bào)文改寫之后轉(zhuǎn)發(fā)真實(shí)的服務(wù)器
            改寫如下
            源MAC(client mac) 目標(biāo)MAX(真實(shí)服務(wù)器MAC) 源IP(client IP) 目標(biāo)IP(DR IP,VIP)
            因?yàn)檎鎸?shí)的服務(wù)器將VIP綁定到了環(huán)回地址,所以會(huì)處理這個(gè)請求,并返回響應(yīng)的報(bào)文.
            網(wǎng)絡(luò)層的源目對掉
            源MAC(真實(shí)服務(wù)器MAC) 目標(biāo)MAC(client mac) 源IP(DR IP,VIP) 目標(biāo)IP(client IP)
            所以LVS DR的本質(zhì)就是網(wǎng)絡(luò)層的欺騙。
            實(shí)驗(yàn)采用VirtualBox虛擬機(jī),并且配置內(nèi)部網(wǎng)絡(luò),關(guān)閉SELinux和防火墻
            首先,在LVS DR前置機(jī)上安裝ipvsadm命令
            yum install ipvsadm -y
            然后配置兩臺(tái)真實(shí)服務(wù)器(RealServer)的Http服務(wù)
            yum install httpd -y
            service httpd start
            chkconfig httpd on
            并分別改寫/var/www/html/index.html的內(nèi)容為"real server 1"和"real server 2"
            然后在兩臺(tái)真實(shí)服務(wù)器上執(zhí)行如下的腳本
          vim lvs_real.sh
          #!/bin/bash
          # description: Config realserver lo and apply noarp
          SNS_VIP=192.168.16.199
          source /etc/rc.d/init.d/functions
          case "$1" in
          start)
          ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
          /sbin/route add -host $SNS_VIP dev lo:0
          echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
          echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
          echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
          echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
          sysctl -p >/dev/null 2>&1
          echo "RealServer Start OK"
          ;;
          stop)
          ifconfig lo:0 down
          route del $SNS_VIP >/dev/null 2>&1
          echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
          echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
          echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
          echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
          echo "RealServer Stoped"
          ;;
          *)
          echo "Usage: $0 {start|stop}"
          exit 1
          esac
          exit 0
           最后,在DR前置機(jī)上執(zhí)行如下腳本
          vim lvs_dr.sh
          #!/bin/bash
          VIP1=192.168.16.199
          RIP1=192.168.16.3
          RIP2=192.168.16.4
          case "$1" in
          start)
          echo " start LVS of DirectorServer"
          /sbin/ifconfig eth1:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 broadcast $VIP1 up
          /sbin/route add -host $VIP1 dev eth1:0
          echo "1" >/proc/sys/net/ipv4/ip_forward
          /sbin/ipvsadm -C
          /sbin/ipvsadm -A -t $VIP1:80 -s rr
          /sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g -w 1
          /sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g -w 1
          /sbin/ipvsadm
          ;;
          stop)
          echo "close LVS Directorserver"
          echo "0" >/proc/sys/net/ipv4/ip_forward
          /sbin/ipvsadm -C
          /sbin/ifconfig eth1:0 down
          ;;
          *)
          echo "Usage: $0 {start|stop}"
          exit 1
          esac
            通過client訪問LVS前置服務(wù)器,可以看到已經(jīng)實(shí)現(xiàn)了負(fù)載均衡的效果。
            關(guān)于LVS的調(diào)度算法,轉(zhuǎn)載自張逸群的博客
            http://www.zhangyiqun.net/56.html
            1. 大鍋飯調(diào)度(Round-Robin Scheduling RR)
            rr – 純輪詢方式,比較垃圾。把每項(xiàng)請求按順序在真正服務(wù)器中分派。
            2. 帶權(quán)重的大鍋飯調(diào)度(Weighted Round-Robin Scheduling WRR)
            wrr -帶權(quán)重輪詢方式。把每項(xiàng)請求按順序在真正服務(wù)器中循環(huán)分派,但是給能力較大的服務(wù)器分派較多的作業(yè)。
            3. 誰不干活就給誰分配(Least-Connection LC)
            lc – 根據(jù)最小連接數(shù)分派
            4. 帶權(quán)重的誰不干活就給誰分配(Weighted Least-Connections WLC 默認(rèn))
            wlc – 帶權(quán)重的。機(jī)器配置好的權(quán)重高。
            5. 基于地區(qū)的最少連接調(diào)度(Locality-Based Least-Connection
            Scheduling LBLC)
            lblc – 緩存服務(wù)器集群。基于本地的最小連接。把請求傳遞到負(fù)載小的服務(wù)器上。
            6. 帶有復(fù)制調(diào)度的基于地區(qū)的最少連接調(diào)度(Locality-Based Least-Connection Scheduling with Replication Scheduling LBLCR)
            lblcr – 帶復(fù)制調(diào)度的緩存服務(wù)器集群。某頁面緩存在服務(wù)器A上,被訪問次數(shù)極高,而其他緩存服務(wù)器負(fù)載較低,監(jiān)視是否訪問同一頁面,如果是訪問同一頁面則把請求分到其他服務(wù)器。
            7. 目標(biāo)散列調(diào)度(Destination Hash Scheduling DH)
            realserver中綁定兩個(gè)ip。ld判斷來者的ISP商,將其轉(zhuǎn)到相應(yīng)的IP。
            8. 源散列調(diào)度(Source Hash Scheduling SH)
            源地址散列。基于client地址的來源區(qū)分。(用的很少)
            9. 最短的期望的延遲(Shortest Expected Delay Scheduling SED)
            基于wlc算法。這個(gè)必須舉例來說了
            ABC三臺(tái)機(jī)器分別權(quán)重123 ,連接數(shù)也分別是123。那么如果使用WLC算法的話一個(gè)新請求進(jìn)入時(shí)它可能會(huì)分給ABC中的任意一個(gè)。使用sed算法后會(huì)進(jìn)行這樣一個(gè)運(yùn)算
            A:(1+1)/1
            B:(1+2)/2
            C:(1+3)/3
            根據(jù)運(yùn)算結(jié)果,把連接交給C 。
            10.最少隊(duì)列調(diào)度(Never Queue Scheduling NQ)
            無需隊(duì)列。如果有臺(tái)realserver的連接數(shù)=0就直接分配過去,不需要在進(jìn)行sed運(yùn)算。
            遇到的問題..
            這個(gè)實(shí)驗(yàn)看著簡單,做了足足半個(gè)月,但是還有一些不明白的問題,可能和網(wǎng)絡(luò)知識的匱乏有關(guān)系。
            在DR前置機(jī)上不能通過VIP訪問真實(shí)的服務(wù)器
            在DR前置機(jī)上執(zhí)行命令,報(bào)錯(cuò)如下
            查看ipvsadm,連接狀態(tài)是SYN_RECV
            一開始我使用了三臺(tái)虛擬機(jī),卡在這個(gè)地方很長時(shí)間。
            后來偶然發(fā)現(xiàn),用第四臺(tái)虛擬機(jī)就可以正常訪問了..

          posted on 2014-09-12 10:05 順其自然EVO 閱讀(424) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 金溪县| 浮山县| 邵东县| 抚顺市| 昂仁县| 上虞市| 海南省| 呼玛县| 米林县| 荥阳市| 柳州市| 隆昌县| 延边| 嘉定区| 普格县| 伽师县| 松原市| 抚松县| 高碑店市| 张北县| 紫阳县| 建始县| 四会市| 咸阳市| 福泉市| 沂水县| 宝山区| 北川| 湖南省| 泰州市| 柏乡县| 客服| 滨州市| 旬邑县| 朝阳区| 连城县| 武山县| 怀远县| 桂阳县| 江北区| 乌兰浩特市|