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