LVS負載均衡集羣介紹
負載均衡集羣的做用:提供一種廉價、有效、透明的方法,來擴展網絡設備和服務器的負載帶寬、增長吞吐量,增強網絡數據處理能力、提升網絡的靈活性和可用性。
1)把單臺計算機沒法承受的大規模的併發訪問或數據流量分擔到多臺節點設備上分別處理,減小用戶等待響應的時間,提高用戶體驗。
2)單個重負載的運算分擔到多臺節點設備上作並行處理,每一個節點設備處理結束後,將結果彙總,返回給用戶,系統處理能力獲得大幅度提升。
3)7*24小時的服務保證,任意一個或多個設備節點設備宕機,不能影響到業務。在負載均衡集羣中,全部計算機節點都應該提供相同的服務,集羣負載均衡獲取全部對該服務的請求。linux
LVS介紹
LVS是linux virtual server的簡寫linux虛擬服務器,是一個虛擬的服務器集羣系統,能夠再unix/linux平臺下實現負載均衡集羣功能。該項目在1998年5月由章文嵩博士組織成立。nginx
LVS的工做模式:
1)VS/NAT模式(Network address translation)
2)VS/TUN模式(tunneling)
3)DR模式(Direct routing)web
NAT模式-網絡地址轉換
Virtualserver via Network address translation(VS/NAT)
這個是經過網絡地址轉換的方法來實現調度的。首先調度器(LB)接收到客戶的請求數據包時(請求的目的IP爲VIP),根據調度算法決定將請求發送給哪一個後端的真實服務器(RS)。而後調度就把客戶端發送的請求數據包的目標IP地址及端口改爲後端真實服務器的IP地址(RIP),這樣真實服務器(RS)就可以接收到客戶的請求數據包了。真實服務器響應完請求後,查看默認路由(NAT模式下咱們須要把RS的默認路由設置爲LB服務器。)把響應後的數據包發送給LB,LB再接收到響應包後,把包的源地址改爲虛擬地址(VIP)而後發送回給客戶端。算法
CIP: windows 客戶端IP
VIP: director 外網IP 這裏用橋接模式
DIP: director 內網IP 和realserver在同一個網段 ,注意realserver的網關地址要配置成 DIPvim
實驗環境windows
三臺服務器,一臺做爲 director,兩臺做爲 real server,director 有一個外網網卡(172.16.254.200) 和一個內網ip(192.168.0.8),兩個 real server 上只有內網 ip (192.168.0.18) 和 (192.168.0.28),而且須要把兩個 real server 的內網網關設置爲 director 的內網 ip(192.168.0.8)後端
安裝和配置瀏覽器
兩個 real server 上都安裝 nginx 服務bash
#yum install -y nginx
Director 上安裝 ipvsadm服務器
#yum install -y ipvsadm
Director 上編輯 nat 實現腳本
#vim /usr/local/sbin/lvs_nat.sh #編輯寫入以下內容: #! /bin/bash #director服務器上開啓路由轉發功能: echo 1 > /proc/sys/net/ipv4/ip_forward #關閉 icmp 的重定向 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects systemctl stop firewalld setenforce 0 systemctl stop iptables #director設置 ipvsadm IPVSADM='/sbin/ipvsadm' $IPVSADM -C $IPVSADM -A -t 172.16.254.200:80 -s wrr # //換成你的橋接IP $IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.18:80 -m -w 1 $IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.28:80 -m -w 1
保存後,在 Director 上直接運行這個腳本就能夠完成 lvs/nat 的配置
/bin/bash /usr/local/sbin/lvs_nat.sh
執行上面腳本
而後查看是否成功
ipvsadm -ln
測試LVS的效果
經過瀏覽器測試2臺機器上的web內容 http://IP
DR模式(直接路由模式)(互聯網企業中最經常使用的模式)
Virtual server via direct routing (vs/dr)
DR模式是經過改寫請求報文的目標MAC地址,將請求發給真實服務器的,而真實服務器響應後的處理結果直接返回給客戶端用戶。DR模式能夠極大的提升集羣系統的伸縮性。調度器LB與真實服務器RS都有一塊網卡鏈接到同一物理網段上,必須在同一個局域網內。
實驗環境
三臺機器:
Director節點: (eth0 192.168.0.8 vip eth0:0 192.168.0.38) Real server1: (eth0 192.168.0.18 vip lo:0 192.168.0.38) Real server2: (eth0 192.168.0.28 vip lo:0 192.168.0.38)
安裝
兩個 real server 上都安裝 nginx 服務
#yum install -y nginx
Director 上安裝 ipvsadm
#yum install -y ipvsadm
Director 上配置腳本
#vim /usr/local/sbin/lvs_dr.sh #! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ipv=/sbin/ipvsadm dip=192.168.199.122 vip=192.168.199.38 rs1=192.168.199.143 rs2=192.168.199.241 ifconfig ens33:0 down ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev eth0:0 $ipv -C $ipv -A -t $vip:80 -s wrr $ipv -a -t $vip:80 -r $rs1:80 -g -w 3 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1 #vim /usr/local/sbin/lvs_dr_rs.sh #! /bin/bash vip=192.168.199.38 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip 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
執行腳本:
#bash /usr/local/sbin/lvs_dr.sh
在2臺 rs 上配置腳本:
#vim /usr/local/sbin/lvs_dr_rs.sh #! /bin/bash vip=192.168.0.38 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip 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
rs 上分別執行腳本:
#bash /usr/local/sbin/lvs_dr_rs.sh
實驗測試
測試方式同上,瀏覽器訪問 http://IP
LVS調度算法
在內核中的鏈接調度算法上,IPVS已實現瞭如下八種調度算法:
輪叫調度(Round-Robin Scheduling) 加權輪叫調度(Weighted Round-Robin Scheduling) 最小鏈接調度(Least-Connection Scheduling) 加權最小鏈接調度(Weighted Least-Connection Scheduling) 基於局部性的最少連接(Locality-Based Least Connections Scheduling) 帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication Scheduling) 目標地址散列調度(Destination Hashing Scheduling) 源地址散列調度(Source Hashing Scheduling)
固定調度算法:rr,wrr,dh,sh
動態調度算法:wlc,lc,lblc,lblcr