美文网首页
[高并发负载均衡] 三、DR模型搭建

[高并发负载均衡] 三、DR模型搭建

作者: 每皮1024 | 来源:发表于2021-02-17 09:31 被阅读0次

LVS的DR模型试验搭建

一、准备机器节点

node01作为LVS服务器,node02、node03作为底层real servers

二、布置网络层

node01的DIP,以及node02~03的RIP已经默认配置好;需要配置的是相同的VIP

配置VIP

写在子接口上

node01
# 以下两个是相同的,选取其一即可。eth0:2表示的是子接口
ifconfig eth0:2 172.16.6.100/24
ifconfig eth0:2 172.16.6.100 netmask 255.255.255.0

# 如果想撤掉上面的配置
ifconfig eth0:2 down
Real Server: node02、node03配隐藏VIP
  1. 先调整内核arp协议(否则一旦配置VIP后就会直接暴露出去),修改arp_ignore和arp_announce(一切即文件)
cd /proc/sys/net/ipv4/conf/eth0/ # 为了修改以后所有的接口,需要再在/proc/sys/net/ipv4/conf/all/路径下做同样修改
echo 1 > arp_ignore # 内核操作必须是重定向方式,不能用vi(会产生临时文件)
echo 2 > arp_announce

再配VIP

ifconfig lo:2 172.16.6.100 netmask 255.255.255.255 # 此处掩码必须是4个255,否则当发包时,优先选择内核中的虚拟网卡lo:2(相对于物理网卡)

三、准备Real Server的服务

node02、node03安装并启动服务

httpd:apache静态web server(重启之后失效?)。相对来说tomcat是动态web server

yum install httpd -y # 安装httpd
service httpd start # 启动,默认占用80端口
vi /var/www/html/index.html # 创建主页

在浏览器中访问相应虚拟机的ip:80即可

可能需要开放80端口

systemctl status firewalld # 查看防火墙是否开启
systemctl start firewalld # 如果没有开启则开启
firewall-cmd --list-ports # 查看所有开启的端口
firewall-cmd --zone=public --add-port=80/tcp --permanent # 开启80端口
firewall-cmd --reload # 重启防火墙

四、LVS服务配置

CentOS本身集成ipvs模块,只需要安装工具并进行操作即可

安装ipvsadm (node01)

yum install ipvsadm -y

使用ipvs工具

# 1. 添加进来数据包的规则,表示哪类数据包应该被负载出去
ipvsadm -A -t 172.16.6.100:80 -s rr # A表示进来,t表示tcp协议, -s表示scheduler调度,rr表示轮询
# 以下命令可以查看当前配置的配置调度规则
ipvsadm -ln
# 2. 设置负载real server,并可以通过ipvsadm -ln查看规则生成
    # 即时生效:访问172.16.6.100:80即可访问
ipvsadm -a -t 172.16.6.100:80 -r 172.16.6.3 -g -w 1 # -r表示real server,-g轮询,-w权重
ipvsadm -a -t 172.16.6.100:80 -r 172.16.6.4 -g -w 1

即时生效

访问172.16.6.100

验证

查看连接

我们发现node01(LVS服务器并没有80端口与外部(.1 ip)的连接),node02、node03有相应地连接,证明了LVS仅仅是偷窥,而real server是实际进行了握手

netstat -antp
查看偷窥内容

LVS服务器上查看

[root@localhost ~]# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:57  ESTABLISHED 172.16.6.1:60318   172.16.6.100:80    172.16.6.3:80
TCP 14:49  ESTABLISHED 172.16.6.1:60301   172.16.6.100:80    172.16.6.4:80
  • 排错
    • FIN_WAIT:连接过,偷窥了所有的包
    • SYN_RECV:基本上lvs都记录了,证明lvs工作正常,一定是网络层出问题(网线、交换机、网卡)

问题:刷很多遍才会访问另一台服务器,看demo是每次刷新必然轮询?

五、总结

image.png
  1. 浏览器访问.100:80时,会根据原地址封一个数据包.1:12121(随便给的端口号)
  2. 此包先会进入虚拟网络(交换机),然后到达node01(虚拟机仅看到其暴露了.100)
  3. 进入到node01后,匹配上了ipvs的负载均衡规则,此时不会修改其ip,而是在外层套了一个node02或者node03的mac地址(即在链路层封了mac地址,就不管网络层ip关系),发回给交换机
  4. 交换机根据mac地址,将数据包发到node02
  5. node02撕毁mac地址,暴露出VIP(.100),由于其内部存在仅内部可见的VIP,所以接收了数据包,相应地看到了80端口以及进程
  6. node02处理完数据包后,向.1返回数据

参考链接

  1. linux:centos7开启80端口,开放外网访问

相关文章

网友评论

      本文标题:[高并发负载均衡] 三、DR模型搭建

      本文链接:https://www.haomeiwen.com/subject/xulixltx.html