现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须重新编译内核以支持LVS功能模块,但是从Linux2.4内核心之后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能,高可用的服务器群集,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
准备三台服务器
192.168.211.134
192.168.211.133
192.168.211.136
1.搭建VIP负载服务器192.168.211.134,给虚拟网卡
ifconfig ens33:8 192.168.211.100/24
2. 修改另外两个服务器的内核(192.168.211.133,192.168.211.136)
echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:2 192.168.211.100 netmask 255.255.255.255
或者使用
ifconfig lo:2 192.168.211.100/32
192.168.211.136
ifconfig lo:3 192.168.211.100 netmask 255.255.255.255
或者使用
ifconfig lo:3 192.168.211.100/32
在这里说一下,24和32是什么意思
24 = 255.255.255.0
32 = 255.255.255.255
255是8进制最大值,4个255是32进制位,最后转换为255.255.255.255
对(192.168.211.133,192.168.211.136)两个服务器安装http
yum install httpd -y
#默认安装路径在:
/etc/httpd/
//启动httpd
service httpd start
systemctl start httpd.service //Centos 7以上使用
//查看启动状态
systemctl status httpd.service
//停止httpd
systemctl stop httpd.service
vi /var/www/html/index.html
html中写上自身服务器的地址 from 192.168.211.1x
对负载服务192.168.211.134 安装ipvsadm
yum install ipvsadm
添加数据包规则
进入数据包规则:
-A:进入协议
-t:tcp协议
192.168.211.100:80 目标地址和端口号
-s rr:轮询策略
ipvsadm -A -t 192.168.211.100:80 -s rr
查看入口规则
ipvsadm -ln
进入数据包规则:
-a:向那个服务去负载
-t:tcp协议
192.168.211.100:80 目标地址和端口号
-r:接入到对应的服务
-g:轮训
-w 1: 权重给1
ipvsadm -a -t 192.168.211.100:80 -r 192.168.211.133 -g -w 1
ipvsadm -a -t 192.168.211.100:80 -r 192.168.211.136 -g -w 1
浏览器访问192.168.211.100
会出现浏览器每隔三四秒才会返回状态为200,如果频繁请求会出现304状态
这是因为htttd1.1是自动支持长链接的,在一定时间内,网页不变化,直接返回304.
解决办法为:
修改httpd的配置,关闭长链接,需要修改(192.168.211.133,192.168.211.136)两台负载的服务器
找到httpd的安装路径,在httpd.conf中添加KeepAlive Off,把长链接关闭
vi /etc/httpd/conf/httpd.conf
之后重启httpd
systemctl stop httpd.service
systemctl start httpd.service
直接重新请求搭建的负载服务器 192.168.211.100 即可
后续继续验证
浏览器访问 192.168.150.100 看到负载 疯狂F5
192.168.211.134:
netstat -natp 结论看不到socket连接
192.168.211.133~192.168.211.136:
netstat -natp 结论看到很多的socket连接
192.168.211.134:
ipvsadm -lnc 查看偷窥记录本
TCP 00:57 FIN_WAIT 192.168.150.1:51587 192.168.150.100:80 192.168.150.12:80
FIN_WAIT: 连接过,偷窥了所有的包
SYN_RECV: 基本上lvs都记录了,证明lvs没事,一定是后边网络层出问题
负载服务器192.168.211.134 看不到连接
192.168.211.133~192.168.211.136:
负载服务器192.168.211.134 查看偷窥记录本,这个需要疯狂F5刷新浏览器,然后在去192.168.211.134看
ipvsadm -lnc