一、lvs簡介
lvs(linux virtual server),是乙個伺服器集群系統專案。隨著網際網路的飛速發展,人們對於伺服器的要求越來越高。很多網路服務因為訪問次數**式地增 長而不堪重負,不能及時處理使用者的請求,導致使用者進行長時間的等待,大大降低了服務質量。如何建立可伸縮的網路服務來滿足不斷增長的負載需求已成為迫在眉 睫的問題。
針對高可伸縮、高可用網路服務的需求,我們給出了基於ip層和基於內容請求分發的負載平衡排程解決方法,並在linux核心中實現了這些方法,將一組伺服器構成乙個實現可伸縮的、高可用網路服務的虛擬伺服器。
虛擬伺服器即,一組伺服器通過高速的區域網或者地理分布的廣域網相互連線,在它們的前端有乙個負載排程器(load balancer)。負載排程器能無縫地將網路請求排程到真實伺服器上,從而使得伺服器集群的結構對客戶是透明的,客戶訪問集群系統提供的網路服務就像訪 問一台高效能、高可用的伺服器一樣。客戶程式不受伺服器集群的影響不需作任何修改。系統的伸縮性通過在服務機群中透明地加入和刪除乙個節點來達到,通過檢 測節點或服務程序故障和正確地重置系統達到高可用性。由於我們的負載排程技術是在linux核心中實現的,我們稱之為linux虛擬伺服器(linux virtual server)。
目前,lvs專案已提供了乙個實現可伸縮網路服務的linux virtual server框架。在lvs框架中,提供了含有三種ip負載均衡技術的ip虛擬伺服器軟體ipvs、基於內容請求分發的核心layer-7交 換機ktcpvs和集群管理軟體。可以利用lvs框架實現高可伸縮的、高可用的web、cache、mail和media等網路服務;在此基礎上,可以開 發支援龐大使用者數的、高可伸縮的、高可用的電子商務應用。
二、ipvs簡介
在排程器的實現技術中,ip負載均衡技術是效率最高的。在已有的ip負載均衡技術中有通過網路位址轉換(network address translation)將一組伺服器構成乙個高效能的、高可用的虛擬伺服器,我們稱之為vs/nat技術(virtual server via network address translation),大多數商品化的ip負載均衡排程器產品都是使用此方法,如cisco的localdirector、f5的big/ip和 alteon的acedirector。在分析vs/nat的缺點和網路服務的非對稱性的基礎上,我們提出通過ip隧道實現虛擬伺服器的方法vs/tun (virtual server via ip tunneling),和通過直接路由實現虛擬伺服器的方法vs/dr(virtual server via direct routing),它們可以極大地提高系統的伸縮性。所以,ipvs軟體實現了這三種ip負載均衡技術,它們的大致原理如下:
virtual server via network address translation(vs/nat)
通過網路位址轉換,排程器重寫請求報文的目標位址,根據預設的排程演算法,將請求分派給後端的真實伺服器;真實伺服器的響應報文通過排程器時,報文的源位址被重寫,再返回給客戶,完成整個負載排程過程。
virtual server via ip tunneling(vs/tun)
採用nat技術時,由於請求和響應報文都必須經過排程器位址重寫,當客戶請求越來越多時,排程器的處理能力將成為瓶頸。為了解決這個問題,排程器把請求報 文通過ip隧道**至真實伺服器,而真實伺服器將響應直接返回給客戶,所以排程器只處理請求報文。由於一般網路服務應答比請求報文大許多,採用 vs/tun技術後,集群系統的最大吞吐量可以提高10倍。
virtual server via direct routing(vs/dr)
vs/dr通過改寫請求報文的mac位址,將請求傳送到真實伺服器,而真實伺服器將響應直接返回給客戶。同vs/tun技術一樣,vs/dr技術可極大地 提高集群系統的伸縮性。這種方法沒有ip隧道的開銷,對集群中的真實伺服器也沒有必須支援ip隧道協議的要求,但是要求排程器與真實伺服器都有一塊網絡卡連 在同一物理網段上。
除了以上三種技術,還有一種fullnat。官方主頁:
下面的實驗也是基於fullnat的。
三、部署lvs伺服器(在虛機上實驗)
1.安裝centos 6.5
2.安裝編譯好的lvs kernel
rpm -ivh --force kernel-2.6.32-2.x86_64.rpm
3.生成initramfs並修改啟動配置
dracut -f /boot/initramfs-2.6.32.img 2.6.32
cp -f grub.conf /boot/grub/grub.conf
4.在 /etc/sysctl.conf檔案中追加以下配置
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.core.netdev_max_backlog = 10000
net.ipv4.vs.defence_tcp_drop = 0
net.ipv4.vs.fullnat_timestamp_remove_entry = 0
net.ipv4.vs.fullnat_mss_adjust_entry = 0
net.ipv4.vs.fullnat_toa_entry = 0
net.ipv4.vs.defence_udp_drop = 0
vm.dirty_ratio=40
5.在centos 6.5上安裝一些包
rpm -ivh pciutils-3.1.10-2.el6.x86_64.rpm libyaml-0.1.3-4.el6_6.x86_64.rpm pyyaml-3.10-3.1.el6.x86_64.rpm libnl-1.1.4-2.el6.x86_64.rpm libselinux-python-2.0.94-5.3.el6_4.1.x86_64.rpm
rpm -ivh ipvsadm-1.26-1.x86_64.rpm keepalived-1.2.2-5.x86_64.rpm
6.關閉iptables和selinux
service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
setenforce 0
emacs /etc/selinux/config ==> disabled
7.配置keepalived
一共開啟三颱虛機。一台作lvs(向上ip為192.168.0.3,向下ip為192.168.1.3,虛ip為192.168.0.31),兩台作real server(192.168.1.1和192.168.1.2)
在實機上搭建兩個網橋br0和br1。lvs的eth0屬於br0,lvs的eth1以及兩台rs的eth0屬於br1。
emacs /etc/keepalived/keepalived.conf
! configuration file for keepalived
local_address_group laddr_g1
virtual_server_group oss
vrrp_sync_group vg1
}vrrp_instance vi_ext
virtual_ipaddress
}virtual_server group oss
}real_server 192.168.1.2 80 }}
service keepalived restart
8.realserver配置
在兩個虛機上裝上乙個簡單的http testing tool(wbox),並關掉防火牆和selinux服務,開啟wbox的server模式
yum install wbox
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
wbox servermode webroot /tmp/mydocs serverport 80
9.測試
lvs伺服器
ipvsadm -l
pcping 192.168.0.31
curl 192.168.0.31
實際測試發現,curl虛位址會導致lvs伺服器網路崩潰,原因可能是虛機網橋的影響。
後來在物理伺服器上通過測試。
完
LVS虛擬伺服器
lvs虛擬伺服器 lvs是linux virtual server的簡寫,意即linux虛擬伺服器,是乙個虛擬的伺服器集群系統。本專案在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟體專案之一。lvs集群採用ip負載均衡技術和基於內容請求分發技術。排程器具有很好的吞吐率,將請求均衡地轉移...
LVS虛擬伺服器
lvs dr lvs tun lvs是linux虛擬伺服器,lvs由使用者空間的ipvsadm和核心空間的ipvs組成。ipvsadm用來定義規則,ipvs利用ipvsadm定義的規則工作。lvs是乙個高效的負載均衡器 客戶端傳送的web請求直接傳送到lvs負載均衡器上,lvs通過自己預先設計的演算...
LVS 伺服器集群系統
lvs linux virtual server,負載排程器,核心整合,章文嵩 花名 正明 阿里的四層slb server load balance 是基於lvs keepalived實現 lvs 官網 vs virtual server 負責排程 rs real server lvs 負責真正提供...