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