网络负载均衡实践手册

搭建负载均衡

Posted by 石福鹏 on 2021-03-12
Estimated Reading Time 4 Minutes
Words 1.1k In Total
Viewed Times

首先在自己的电脑上安装虚拟机,并安装Centos

1、环境准备

我的虚拟机的环境:

虚拟网络:Vmware8

虚拟网络网关:192.168.150.1

window上的一个虚拟化环境

image-20210310145057891

用node01做负载均衡服务器,node02、node03座位Real-server

所以其实node01就相当于之前说的DIP,node02、node03相当于RIP

image-20210310153404883

2、配置

上面先讲网络层配置好,开始配置VIP

a、先去node01

1
ifconfig eth0:8 192.168.150.100 netmask/24

Eth0:8 冒号后面即子接口(IP)名

netmask/24:24代表三个255,(每个点分字节都是255,8个二进制位即八个1,一共三个点分字节,所以是24个1,简写24,如果是两个255,那就是/16)

再使用ifconfig查看:

image-20210310154516663

b、再去配置node02、03(先改内核协议,再改IP)

注意,在配置node02和node03时,先要去调协议,不然直接配置隐藏IP的话,很可能会暴露出去

所以需要先去修改协议, 即配置内核变量arp_ignorearp_announce的值

1
cd /proc/sys/net/ipv4/conf/eth0

不能用vi修改,使用echo 重定向

1
2
3
echo 1 > arp_ignore
//查看修改状态
cat arp_ignore

同理

1
2
3
echo 2 > arp_announce
//查看修改状态
cat arp_announce

这里改的是一个接口的,为了其他的接口以后也生效,把其他的也改一下

回到上层目录,进入到all目录下,同样执行上面两个命令

接着配置node02和node03的隐藏IP

前提:先安装httpd服务(两台服务器都需要安装启动)

1
2
3
4
yum install httpd
service httpd start
//同时创建 /var/www/html/index.html文件,并写入
<h1>from 192.168.150.12</h1>

node03同理

1
2
3
4
yum install httpd
service httpd start
//同时创建 /var/www/html/index.html文件,并写入
<h1>from 192.168.150.13</h1>

注意:按道理来说,node02,node03上面的html文件内容应该是一样的,但是这里为了测试,所以写成不一样的

1
ifconfig lo:2 192.178.150.100 netmask 255.255.255.255

注意:这里一定要注意,Real-server这里的掩码一定要配置成4个255(规避数据包发不出去的)

因为掩码和IP要发生一次&运算,来生成路由条目,如果写成了255.255.255.0,那么意味着,从还回接口也能抵达192.168.150.0这个网络;而eth0也可以去到一个192.168.150.0的网络号(192.168.150.12和255.255.255.0做&运算)

那如果现在ping一下192.168.150.1的话,那么从eth0和lo:2都可以走,对于内核来说,物理网卡和虚拟网卡,肯定是虚拟网卡更近一点,会把这个数据发挥到还回接口上,相当于又发给自己了,所以这个包永远发不出去

而4个255,与192.168.150.1做&运算,得到的网络号是192.168.150.1,整个都是网络号,没有主机位了,所以

然后进行访问:

单独访问192.168.150.12:80、192.168.150.13:80发现都没问题

3、LVS服务配置

现在只需要在lvs安装应用层工具

1
yum install ipvsadm  -Y

配置入口出口

1
ipvsadm -A -t 192.168.150.100:80 -s rr
1
ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.12 -g -w 1
1
ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.13 -g -w 1

然后负载均衡服务器上就可以查看

1
ipvsadm -ln

image-20210310174647742

验证

此时,尝试请求, 192.168.150.100:80,多执行几次,发现返回值一会返回192.168.150.12,一会返回192.168.150.13,成功~;

在node01上,执行netstat -natp

image-20210310175008837

没有发现相应的Socket连接(没有source为192.168.150。1到192.168.1.12或者192.168.1.13的连接),即没有握手操作;去node02和node03上,执行netstat -natp

在执行命令ipvsadm -ln,查看偷窥记录本,发现有统计结果(四次分手后,还处于一个随机的等待时间,所以这里可以看到)

image-20210310175539874

注意:上面的state如果是:

FIN_WAIT:连接过,偷窥了所有的包

SYN_REDCV:基本上lvs都记录了,证明了lvs没事,。一定是后面的网络层出问题了(下面的问题是因为将node02 down了 (在node02下执行命令(ifconfig lo:2 down))

image-20210310180207468

至此,高并发和负载均衡就些讲完了,下一节说高可用


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !