一、LVS简介及工作模式
1. LVS简介
Linux Virtual Server,该软件的功能是实现LB(load balance)
2.LVS的三种工作模式
1)NAT模式(NAT)
LVS 服务器同时充当一台NAT 网关,拥有公有IP ,同时负责将针对此公共IP的请求依据算法将请求转发给LAN 中的某台真实服务器(node) ,node 处理完成请求后将结果返回至LVS Server(调度器), 在由LVS Server 将结果返回给用户。可以将内部网络隐藏 (VIP虚拟IP,RIP真实IP),适用于小规模(10~20台之间)、访问量较小的网络集群。
2)IP隧道模式(TUN)
可以实现让集群中的节点处于不同网络段
3)直连路由模式(DR)
当参与集群的计算机和作为控制管理的计算机在同一个网段时可以使用此种方法。
控制管理的计算机接收到请求包时直接送到参与集群的node 上。当node 处理完请求后将直接把结果返还至用户而不通过LVS Server 返还。
DR的优势在于速度快、开销少。
1. LVS简介
Linux Virtual Server,该软件的功能是实现LB(load balance)
2.LVS的三种工作模式
1)NAT模式(NAT)
LVS 服务器同时充当一台NAT 网关,拥有公有IP ,同时负责将针对此公共IP的请求依据算法将请求转发给LAN 中的某台真实服务器(node) ,node 处理完成请求后将结果返回至LVS Server(调度器), 在由LVS Server 将结果返回给用户。可以将内部网络隐藏 (VIP虚拟IP,RIP真实IP),适用于小规模(10~20台之间)、访问量较小的网络集群。
2)IP隧道模式(TUN)
可以实现让集群中的节点处于不同网络段
3)直连路由模式(DR)
当参与集群的计算机和作为控制管理的计算机在同一个网段时可以使用此种方法。
控制管理的计算机接收到请求包时直接送到参与集群的node 上。当node 处理完请求后将直接把结果返还至用户而不通过LVS Server 返还。
DR的优势在于速度快、开销少。
二、三种工作模式的使用范围
NAT 方式适用于在同一个LAN中实现小型LB
TUN 方式适用于node部分在Internet上
DR 方式使用与在同一个LAN中实现较为大型LB
NAT 方式适用于在同一个LAN中实现小型LB
TUN 方式适用于node部分在Internet上
DR 方式使用与在同一个LAN中实现较为大型LB
三、LVS的调度算法
1. 算法
将客户端的请求按照不同的算法转发给web服务器
2.算法的种类
1)rr:轮询 rr 算法就是将外部请求顺序轮流分配到集群中的node 上,但不考虑每台node 的负载情况。
2)wrr:加权轮询 wrr 算法在rr 算法的基础上会考察每台node的负载情况,并尝试让负较轻的node 承担更多请求。
3)lc:最少连接 算法可以让LVS 尝试把新的请求交给当前连接数最少的node ,直到此node 连接数不再属于最少标准
4)wlc:加权最少连接 wlc 算法也由权重的干预。LVS 会根据每台node的权重并综合连接数控制转发行为
5)lblc:局部最少连接 算法会加上针对源请求IP地址的路由估算,并尝试把请求发送到与源请求IP路由最近的node 上。此种方法一般用于远程或者是大规模的集群组
6)lblcr:带有复制的局部最少连接算法 lblcr 算法是在lblc 算法的基础上增加了一个node 列表,先依据lblc 算法计算出与源请求IP地址最近的一组node ,然后在决定把请求发送到最近一组中的最近的一台node 。若此node没有超载则将请求转发给这台node, 如果超载则依据”最少连接”原则找到最少连接的node 并将此node 加入集群组中。并将请求转给此node
7)dh:目标地址散列算法 相当于随机
8)sh:原地址散列算法 相当于随机
1. 算法
将客户端的请求按照不同的算法转发给web服务器
2.算法的种类
1)rr:轮询 rr 算法就是将外部请求顺序轮流分配到集群中的node 上,但不考虑每台node 的负载情况。
2)wrr:加权轮询 wrr 算法在rr 算法的基础上会考察每台node的负载情况,并尝试让负较轻的node 承担更多请求。
3)lc:最少连接 算法可以让LVS 尝试把新的请求交给当前连接数最少的node ,直到此node 连接数不再属于最少标准
4)wlc:加权最少连接 wlc 算法也由权重的干预。LVS 会根据每台node的权重并综合连接数控制转发行为
5)lblc:局部最少连接 算法会加上针对源请求IP地址的路由估算,并尝试把请求发送到与源请求IP路由最近的node 上。此种方法一般用于远程或者是大规模的集群组
6)lblcr:带有复制的局部最少连接算法 lblcr 算法是在lblc 算法的基础上增加了一个node 列表,先依据lblc 算法计算出与源请求IP地址最近的一组node ,然后在决定把请求发送到最近一组中的最近的一台node 。若此node没有超载则将请求转发给这台node, 如果超载则依据”最少连接”原则找到最少连接的node 并将此node 加入集群组中。并将请求转给此node
7)dh:目标地址散列算法 相当于随机
8)sh:原地址散列算法 相当于随机
四、ipvsadm语法规则
注:需安装lvs软件:yum install ipvsadm -y
1.ipvsadm -C:清空kernel中的lvs列表(清空虚拟主机及转发记录)
ipvsadm -A (增加一条虚拟主机记录)-t (协议tcp)虚拟主机IP:80 -s 算法 :声明一个虚拟主机
ipvsadm -a(增加一条转发记录) -t(协议tcp) 虚拟主机IP:80 -r 接受连接的真实服务器IP:80 lvs的模式 -w 权重值
2.三种模式
-i TUN模式
-g DR模式
-m NAT模式
注:需安装lvs软件:yum install ipvsadm -y
1.ipvsadm -C:清空kernel中的lvs列表(清空虚拟主机及转发记录)
ipvsadm -A (增加一条虚拟主机记录)-t (协议tcp)虚拟主机IP:80 -s 算法 :声明一个虚拟主机
ipvsadm -a(增加一条转发记录) -t(协议tcp) 虚拟主机IP:80 -r 接受连接的真实服务器IP:80 lvs的模式 -w 权重值
2.三种模式
-i TUN模式
-g DR模式
-m NAT模式
五、Linux下LBC的实现
1.LVS集群实现NAT方式
注:一般将lvs-server 称为Director Server(前端调度器),一般将node称为real-server(真实服务)
1.LVS集群实现NAT方式
注:一般将lvs-server 称为Director Server(前端调度器),一般将node称为real-server(真实服务)
在lvs-server上安装软件:yum install ipvsadm -y
2)在server1,server2上安装apache服务器:yum install httpd -y
echo "web1-test" > /var/www/html/index.html
echo "web2-test" > /var/www/html/index.html
chmod 705 /var/www/html/index.html
systemctl restart httpd
3)在lvs-server上编辑lvs的DR的集群配置
vim lvs-dr.sh
#!/bin/bash
VIP=192.168.0.254
RIP1=192.168.0.3
RIP2=192.168.0.4
ipvsadm -C
ifconfig eno33554960:0 $VIP broadcast $VIP netmask 255.255.255.255 up
route add -host $VIP dev eno33554960:0
ipvsadm -A -t $VIP:80 -s wlc
ipvsadm -a -t $VIP:80 -r $RIP1:80 -g -w 1
ipvsadm -a -t $VIP:80 -r $RIP2:80 -g -w 1
2)在server1,server2上安装apache服务器:yum install httpd -y
echo "web1-test" > /var/www/html/index.html
echo "web2-test" > /var/www/html/index.html
chmod 705 /var/www/html/index.html
systemctl restart httpd
3)在lvs-server上编辑lvs的DR的集群配置
vim lvs-dr.sh
#!/bin/bash
VIP=192.168.0.254
RIP1=192.168.0.3
RIP2=192.168.0.4
ipvsadm -C
ifconfig eno33554960:0 $VIP broadcast $VIP netmask 255.255.255.255 up
route add -host $VIP dev eno33554960:0
ipvsadm -A -t $VIP:80 -s wlc
ipvsadm -a -t $VIP:80 -r $RIP1:80 -g -w 1
ipvsadm -a -t $VIP:80 -r $RIP2:80 -g -w 1
编辑完脚本后运行:bash lvs-tun.sh
4)在server1和server2上编辑web.sh脚本
#!/bin/bash
VIP=192.168.0.254
/sbin/ifconfig tunl0 down
/sbin/ifconfig tunl0 up
echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
编辑完脚本后运行:bash web.sh
4)在server1和server2上编辑web.sh脚本
#!/bin/bash
VIP=192.168.0.254
/sbin/ifconfig tunl0 down
/sbin/ifconfig tunl0 up
echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
编辑完脚本后运行:bash web.sh
5)在客户端测试:elinks http://192.168.0.254