基於ubuntu的lvs負載平衡

來源:互聯網
上載者:User

lvs是在linux作業系統基礎上建立虛擬伺服器,實現服務節點之間的負載平衡。它是基於linux核心實現的。2.6.X核心預設整合了lvs模組。


lvs常用負載平衡的實現是基於ip協議的,所以一般稱為ipvs。ipvs有三種實現方式,最常用、效能最好的是Direct routing(簡稱DR)。


Ubuntu9.10已經用了2.6的核心,所以不需要再編譯核心了,為了檢測一下,可以在命令列執行:modprobe -l | grep ipvs

會出現:

kernel/net/netfilter/ipvs/ip_vs.ko

kernel/net/netfilter/ipvs/ip_vs_rr.ko

kernel/net/netfilter/ipvs/ip_vs_wrr.ko

kernel/net/netfilter/ipvs/ip_vs_lc.ko

kernel/net/netfilter/ipvs/ip_vs_wlc.ko

kernel/net/netfilter/ipvs/ip_vs_lblc.ko

kernel/net/netfilter/ipvs/ip_vs_lblcr.ko

kernel/net/netfilter/ipvs/ip_vs_dh.ko

kernel/net/netfilter/ipvs/ip_vs_sh.ko

kernel/net/netfilter/ipvs/ip_vs_sed.ko

kernel/net/netfilter/ipvs/ip_vs_nq.ko

kernel/net/netfilter/ipvs/ip_vs_ftp.ko

說明核心已經整合了ipvs模組

我的機器三台機器分別是10.45.8.5,10.45.8.108,10.45.8.111。虛擬IP為10.45.8.200其中10.45.8.108作為負載平衡器使用,首先需要安裝ipvsadm。

執行:apt-get install ipvsadm

安裝完成後執行:ipvsadm

會看到提示:

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

說明已經安裝成功。

接下來就是配置lvs,其實很簡單,就是在負載平衡器建一個虛擬ip,然後用ipvsadm建立轉寄規則

配置虛擬IP:

ifconfig eth0:0 10.45.8.200 netmask 255.255.255.0 broadcast 10.45.8.200

echo "1">/proc/sys/net/ipv4/ip_forward (此指令暫沒發現有啥用處)

使用ipvsadm安裝LVS服務:

ipvsadm -A -t 10.45.8.200:http -s rr

增加真實伺服器:

ipvsadm -a -t 10.45.8.200:http -r 10.45.8.111 -g -w 1

ipvsadm -a -t 10.45.8.200:http -r 10.45.8.5 -g -w 1

真實伺服器的配置:

ifconfig lo:0 10.45.8.200 netmask 255.255.255.255 broadcast 10.45.8.200

route add -host 10.45.8.200 dev lo:0 (此指令暫沒發現有啥用處)

echo "1">/proc/sys/net/ipv4/ip_forward (此指令暫沒發現有啥用處)

我自己還嘗試成功的指令:

LBServer:

ifconfig eth0:0 10.45.8.200 netmask 255.255.252.0 broadcast 10.45.8.200

真實伺服器:

ifconfig eth0:0 10.45.8.200 netmask 255.255.252.0 broadcast 10.45.8.200

我只需要建立一個eth0:0就可以了。。。。。。與實際不同的在於子網路遮罩的第三段(255 vs 252)

在負載平衡伺服器用ipvsadm --list查看:

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  test1-1149.local:www rr

  -> test3-63.local:www           Route   1      0          0         

  -> test2-64.local:www           Route   1      0          0  

接著是做ARP Hidden,不同的linux系統指令有所區別,Ubuntu系統的指令為:

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

只需要在真實伺服器安裝個apache或者tomcat,把預設頁面修改一下方便區別是哪台伺服器即可。用瀏覽器先訪問真實伺服器的IP,如果瀏覽器正常顯示對應的預設頁面說明web服務正常。

這時就可以訪問虛擬IP(10.45.8.200)咯,然後不停地重新整理,會發現lvs已經成功的將請求轉寄了。當然,我發現IE在半分鐘內重新整理的話基本是仍然串連到之前的伺服器,建議是開幾個IE視窗,然後挨個重新整理就可以看到變化呢。

最後可以在負載平衡伺服器上用ipvsadm --list查看:

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  test1-1149.local:www rr

  -> test3-86.local:www           Route   1      0          5         

  -> test2-87.local:www           Route   1      1          4  

確實大功告成。不過如果機器重啟的話,這些配置就沒了,需要重新設定哦,另外還有個ipvsadm -C的指令是用於清除ipvsadm配置的,可能會有用處。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.