推薦一篇關於LVS的好文: https://www.cnblogs.com/gaoxu387/p/7941381.html 一、原博主要內容: 1、概述 IP負載均衡:四層負載,是基於IP+埠的負載均衡,主要代表是LVS(Linux Virtual Server) LVS工作原理:LVS的IP負載 ...
推薦一篇關於LVS的好文:
https://www.cnblogs.com/gaoxu387/p/7941381.html
一、原博主要內容:
1、概述
IP負載均衡:四層負載,是基於IP+埠的負載均衡,主要代表是LVS(Linux Virtual Server)
LVS工作原理:LVS的IP負載均衡技術是通過IPVS模塊實現的,IPVS模塊工作在內核空間。
2、LVS的工作模式
A、DR模式 通過 MAC 地址改寫機制實現轉發,集群局限於區域網內,需要設置lo介面的VIP不能響應本地網路內的arp請求。 B、TUN模式 通過再封裝一層IP報文轉發,集群可在公網上。 C、NAT模式 通過修改IP報文轉發,集群局限在區域網內。3、LVS的調度演算法
- 輪叫調度(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
二、DR模式的配置
這裡介紹一下DR模式的配置。 1、負載均衡伺服器:一般對外的負載均衡器須具有災備能力,在負載均衡伺服器上安裝keepalived,並完成keepalived的配置,配置如下:! Configuration File for keepalived global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_EPG { state MASTER //主用設置為MASTER,備用設置為BACKUP interface bond0 virtual_router_id 64 priority 100 //主用優先順序要比備用優先順序高 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 111.11.11.10 //對外VIP } } virtual_server 111.11.11.10 6600 { delay_loop 6 lb_algo rr //調度演算法RR,也可以設置其他演算法 lb_kind DR //負載均衡模式為DR persistence_timeout 20 protocol TCP real_server 111.11.11.21 6600 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 111.11.11.22 6600 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 111.11.11.23 6600 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }2、RS節點伺服器:需要設置lo介面的VIP,且設置其不能響應本地網路內的arp請求,可執行腳本:
1 #!/bin/bash 2 # description: Config realserver lo and apply noarp 3 VIP=111.11.11.10 4 5 . /etc/rc.d/init.d/functions 6 7 case "$1" in 8 start) 9 echo "1" >/proc/sys/net/ipv4/conf/bond0/arp_ignore 10 echo "2" >/proc/sys/net/ipv4/conf/bond0/arp_announce 11 echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 12 echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 13 sysctl -p >/dev/null 2>&1 14 ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP 15 /sbin/route add -host $VIP dev lo:0 16 echo "RealServer Start OK" 17 ;; 18 stop) 19 ifconfig lo:0 down 20 route del $VIP >/dev/null 2>&1 21 echo "0" >/proc/sys/net/ipv4/conf/bond0/arp_ignore 22 echo "0" >/proc/sys/net/ipv4/conf/bond0/arp_announce 23 echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore 24 echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce 25 echo "RealServer Stoped" 26 ;; 27 status) 28 # Status of LVS-DR real server. 29 islothere=`/sbin/ifconfig lo:0 | grep $VIP` 30 isrothere=`netstat -rn | grep "lo:0" | grep $VIP` 31 if [ ! "$islothere" -o ! "isrothere" ];then 32 # Either the route or the lo:0 device 33 # not found. 34 echo "LVS-DR real server Stopped." 35 else 36 echo "LVS-DR Running." 37 fi 38 ;; 39 *) 40 # Invalid entry. 41 echo "$0: Usage: $0 {start|status|stop}" 42 exit 1 43 ;; 44 esac 45 exit 0
註意:此腳本最好設置成開機執行,如腳本名稱為realserver.sh,放置在/usr/bin/路徑下,賦可執行許可權,在/etc/rc.local的末尾添加一行:/usr/bin/realserver.sh start