LVS:Linux虛擬服務器是一個虛擬的服務器集羣系統,用於實現負載平衡。
工作模式
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隧道協議的要求,但是要求調度器與真實服務器都有一塊網卡連 在同一物理網段上。
調度算法
輪詢(Round Robin)
加權輪詢(Weighted Round Robin)
最少鏈接(Least Connections)
加權最少鏈接(Weighted Least Connections)
基於局部性的最少鏈接(Locality-Based Least Connections)
帶複製的基於局部性最少鏈接(Locality-Based Least Connections with Replication)
目標地址散列(Destination Hashing)
源地址散列(Source Hashing)
軟件安裝
LVS Director
yum install ipvsadm -y
RS1 RS2 server
yum -y install httpd
NAT模式配置
ipvsadm -A -t 10.126.76.10:80 -s rr
-A 添加
-t TCP服務 VIP:prot
-s調度算法:rr round-robin
ipvsadm -a -t 10.126.76.10:80 -r 10.126.76.12:80 -m
ipvsadm -a -t 10.126.76.10:80 -r 10.126.76.18:80 -m
-a 添加
-r指定read sever
-m masquerade NAT方式
RS1,RS2配置
echo "10.126.76.12" > /var/www/html/index.html
echo "10.126.76.18" > /var/www/html/index.html
route add -net default gw 10.126.76.10
route del -net 0.0.0.0
查看:
ipvsadm -Lnc
Ln 查看規則,顯示內核虛擬服務器表( 查看節點狀態)
Lnc查看規則,顯示客戶端連接分發器與read server情況
ipvsadm -Ln --stats 顯示分發情況
ipvsadm -Ln --rate 連接速率
DR模式配置
ifconfig ens192:0 10.126.76.253 netmask 255.255.255.255 broadcast 10.126.76.253
ipvsadm -A -t 10.126.76.253:80 -s rr
ipvsadm -a -t 10.126.76.253:80 -r 10.126.76.12:80 -g
ipvsadm -a -t 10.126.76.253:80 -r 10.126.76.18:80 -g
選項“-a”表示添加真實服務器
“-t”用來指定VIP地址及TCP端口
“-r”用來指定RIP地址及TCP端口
“-m”表示使用NAT羣集模式(-g DR模式,-i TUN模式),
“-w”用來設置權重(權重爲0時表示暫停節點)
RS 關閉ARP轉發
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
RS1,RS2配置
ifconfig lo:0 10.120.123.253 netmask 255.255.255.255 broadcast 10.120.123.253 up
echo "10.126.76.12" > /var/www/html/index.html
echo "10.126.76.18" > /var/www/html/index.html